RootSudo
在 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 的用户, 使用
kdesu
或kdesudo
. - 在命令行运行
sudo
, 在命令前加上sudo
, 如下:
例子 #1
sudo chown bob:bob /home/bob/*
例子 #2
sudo /etc/init.d/networking restart
- 不要 使用 sudo 运行一个图形程序. 您应该
gksudo
或kdesu
运行这些程序, 否则重新登陆时可能会失败. 如果在登陆时提示如下的错误报告: "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 登陆
在 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) 已经被你使用了.
- 你可以运行一个不同的 window 管理器 (比如, fvwm) 使用如下 "
- 小心, 你现在是超级用户. 别忘记当你使用完毕后从 X 和控制台立即退出.
技巧
sudo !! #以root权限执行上一个命令