RootSudo

来自Ubuntu中文
Teliute留言 | 贡献2012年8月12日 (日) 18:51的版本 →‎从 Linux 控制台
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳到导航跳到搜索

在 Linux (和普通的 Unix), 超级用户的名字叫做 root. Windows 对应的 root 帐户是 Administrator. 超级用户可以做任何事情, 因此在日常工作中超级用户变的很危险. 你可以输入一个错误的命令毁掉整个系统. 从理论上讲, 你运行的用户应该仅仅拥有手头上任务所需要的权限. 在某些情况下, 它需要 root, 但是大部分事件下是正常的用户.

Ubuntu 的 root 帐号缺省是锁住的. 这意味您不能作为 root 登陆或者使用 su. 相反, 安装程序将在安装过程中建立和设置 sudo 来允许用户运行所有的管理命令.

意思是在终端下你可以为需要 root 权限的命令使用 sudo . 使用菜单上的程序将使用一个图形化的 sudo 用来提示输入口令. 当 sudo 询问口令时, 它需要 您的用户密码; 这意味着不需要 root 口令.

说明

  • 密码缺省保存 15 分钟. 超过这个时间, 您需要重新输入您的密码.
  • 但输入您的密码时将 在屏幕上显示, 甚至不会有一排的星号 (******). 然而, 这是正常的!
  • 使用 sudo 运行图形化的设置工具, 可以简单的通过菜单来运行程序.
  • 对于 "Ubuntu" 的用户,使用 gksudo 来运行程序, 如运行 gedit, 按 Alt+F2 并回车 gksudo gedit.
  • 对于 Kubuntu 的用户, 使用 kdesukdesudo .
  • 在命令行运行 sudo , 在命令前加上 sudo, 如下:

例子 #1

sudo chown bob:bob /home/bob/*

例子 #2

sudo /etc/init.d/networking restart
  • 不要 使用 sudo 运行一个图形程序. 您应该 gksudokdesu 运行这些程序, 否则重新登陆时可能会失败. 如果在登陆时提示如下的错误报告: "Unable to read ICE authority file", 使用登陆失败下终端并运行下面的命令, 使用您的帐户名字取代下面的 user.
rm /home/*/.{ICE,X}authority
  • 启动一个 root shell (例. 一个你可以允许 root 命令的窗口) 使用:
sudo -i

允许其它用户运行 sudo

给 sudo 增加一个新的用户, 从 System --> Administration 菜单打开 Users and Groups 工具. 然后点击用户并继续打开属性. 选择 User Privileges 页. 在本页, 查找 Executing system administration tasks 并选择.


提示: 在终端可以这样: sudo adduser $user admin, 这里您使用用户的名字替换 $user.

使用 sudo 的好处

缺省屏蔽 root 的好处包括了以下几个部分:

  • 安装可以询问较少的问题
  • 用户不需要记住额外的密码, 因为他们很可能容易忘记
  • 交互式的缺省登陆避免了 "我可以作 任何事情 " - 在修改变化前您将被提示输入一个口令, 这样可以让你考虑一下这样做的结果.
  • Sudo 对于运行的命令增加了一个日志 (在 /var/log/auth.log). 如果您弄乱了, 您可以一直回去并看到曾经运行的命令. 这同样有利于审查.
  • 所有的破解者尝试使用 强力破解 进入你的系统时都知道有一个帐户的名字叫做 root 并且将首次尝试. 他们并不知道您的其它用户的用户名叫做什么.
  • 允许简单的修改管理规则, 在短期或者长期, 从用户组增加或删除用户, 其中不会危及到 root 帐号.
  • sudo 可以设置更加细致的安全规则

使用 sudo 的不足

尽管对于桌面使用 sudo 有很多好处, 下面有可能产生需要注意的问题:

  • 使用 sudo 运行的命令的输出的重定向能够发现新用户. 对于下面的场合 sudo ls > /root/somefile , 到 shell 尝试写入那个文件时将无法工作. 您可以使用 `ls | sudo tee -a /root/somefile` 来增加, 或 `ls | sudo tee /root/somefile` 来覆盖内容.
  • 在一些办公室环境在系统上仅仅只有一个 root 本地用户. 所有其它的用户使用 NSS 技巧输入 如 nss-ldap. 要么设置一个工作站, 或者修复它, 在网络故障导致 nss-ldap 断开时, root 必须要. 除非破解否则将无法修复或者离开系统. 这里需要一个额外的本地用户, 或者激活 root 口令.

误解

  • 是否 sudo 没有 su 安全?

安全模型都是一样的, 并且这两种方式都用他们主要的缺点. 必须考虑任何用户都可以使用 `su` 或者 `sudo` 成为一个特权用户. 如果用户的帐号对于攻击者都是安全的, 在下一次用户这样做的时候攻击者也可以同样获得 root 权限. 在链条里面用户帐号也是脆弱的链接, 因此冰区象 root 一样给予同样的保护.

在更细致的登记上, `sudo` 对于不同工作的特性提供了重要的作用, 它可以影响系统的安全. `sudo` 通常被使用仅仅执行一个单个的命令, `su` 通常被使用打开一个 shell 并执行多个命令. `sudo` 通过减少使用 root shell 的可能性, 并鼓励用户最小的使用 root 权限.

  • 我不能进入一个单用户模式!

在 Ubuntu 的 sulogin 程序被修改到可以支持确认 root 口令被锁住的操作.

回到传统 root 帐号

附注: 并不推荐!

如果您需要在一个 root 控制台工作, 您最好使用如下命令:

sudo -i

激活 root 帐号

为了激活 root 帐号 (例如设置一个口令) 使用:

sudo passwd root

Enter your existing password
Enter password for root
Confirm password for root

屏蔽 root 帐号

如果您激活了 root 口令并希望重新屏蔽它. 在你激活 root 帐号后屏蔽它使用:

sudo passwd -l root

这个将锁住 root 帐号.
<!> 这个也在 Ubuntu 6.06 (Dapper Drake) 之前的版本防止您启动电脑到恢复模式

  • 这个是因为当请求恢复 root 的口令时, 在 /etc/shadow 中 root 的口令不会自动的回到单个 * 字符. (你将被询问一个口令, 同样的依然存在, 但被锁住了无法用来登陆.) 您将在激活 root 帐号后又锁住时需要编辑 /etc/shadow 来防止这个问题. 这个在 Ubuntu 6.06 (Dapper Drake) (Flight 3 之前) 已经修复了, 当恢复模式启动时锁住的密码和 空 (*) 密码 修正为一致.

让 sudo 询问 root 密码

您可以使 sudo 询问 root 密码代替用户密码, 您可以增加一个关键词 rootpw/etc/sudoers 中以 Defaults 开头的行.

警告: 如果您打算锁住 root 帐号时请确定不要做这个


激活图形化 root 登陆

警告: 非常 推荐 允许 root 登陆图形系统!
在 Gnome
  • 打开 System --> Administration --> Login Screen Setup
  • 点击 security 页
  • 选择 Allow root login
在 KDE 3
    • 打开 Konqueror 并打开 /etc/kde3/kdm/ 目录
    • 在 kdmrc 文件上按右键选择 --> 'Edit as root'
    • 在 246 行将 AllowRootLogin=false 修改为 'true'
    • 保存并退出.
从 Linux 控制台
    • 使用 Ctrl+Alt+F1 (or F2, F3, ..., F6) 切换到一个虚拟的终端. 您可以使用 Ctrl+Alt+F7 回到 X session .
    • 使用您的帐户登陆.
    • 使用 "sudo -i" 成为 root .
    • 使用 "startx -- :1" 启动一个新的 X server 在 :1.
        • 你可以运行一个不同的 window 管理器 (比如, fvwm) 使用如下 "startx fvwm -- :1".
        • 你必须使用 display :1, 因为缺省的 (display :0) 已经被你使用了.
    • 小心, 你现在是超级用户. 别忘记当你使用完毕后从 X 和控制台立即退出.

技巧

sudo !! #以root权限执行上一个命令