如果具有管理权限的用户可以使用 root 来拥有 root 的所有权限sudo
,那么拥有 root 帐户有什么好处呢?
答案1
禁用root
你必须有一个 root 帐户。就“禁用”而言,您可以用它做的唯一事情是:
锁定账户
$ sudo passwd -l root
给root一个不可用的密码
$ sudo usermod -p '!' root
sudo - 作为 root 用户
请记住,当具有“管理权限”的用户使用时,sudo
他们正在以 root 用户身份运行具有提升权限的命令!
您可以通过一个简单的命令看到这是真的ps
:
$ sudo sh -c "ps -eaf | grep [s]udo"
root 2625 26757 0 04:19 pts/10 00:00:00 sudo sh -c ps -eaf | grep [s]udo
上面显示,当ps
执行该命令时,您实际上是 root 用户。
开机
此外,当以单用户模式(从 GRUB)引导到系统时,您需要使用 root 帐户登录。通常,您将单词single
或数字传递给 GRUB 1
。
我有什么 sudo 权限?
在已授予sudo
权限的系统上,您可以使用该命令sudo -l
查看您拥有哪些权限。这些并不是每个人的完整权限,只是运行命令的用户的权限。
例如:
$ sudo -l
Matching Defaults entries for saml on this host:
env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG
LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME
LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",
secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin
User saml may run the following commands on this host:
(ALL) ALL
(root) NOPASSWD: /usr/lib/jupiter/scripts/bluetooth, (root) /usr/lib/jupiter/scripts/cpu-control, (root)
/usr/lib/jupiter/scripts/resolutions, (root) /usr/lib/jupiter/scripts/rotate, (root) /usr/lib/jupiter/scripts/touchpad, (root)
/usr/lib/jupiter/scripts/vga-out, (root) /usr/lib/jupiter/scripts/wifi
笔记:被授予访问权限的命令是“用户 saml 可以运行以下......”行之后的所有内容。
通过 sudo 限制访问
Sudo 有相当丰富的工具来限制对特定命令、命令组、特定用户和/或特定用户组的访问。然而,有一些警告sudo
。
您可以使用以下行授予对所有内容的完全访问权限/etc/sudoers
:
aaditya ALL=(ALL) ALL
vim
您还可以为用户提供对某些文件看似简单的访问权限:
aaditya ALL=/usr/bin/vim
然而,这将是一个巨大的错误,因为许多编辑器vim
允许您从其中调用子 shell。因此,用户aaditya
将能够访问具有 root 权限的 shell,即使该sudo
权限并不打算发生这种情况。
答案2
管理帐户和管理帐户root
绝不相同。除了 goldilocks 和 slm 提到的之外,您还应该知道这root
可以显着限制sudo
允许用户代表 执行的root
操作(请参阅man sudoers
示例)。当高级系统管理员想要将一些管理任务委派给初级管理员而不授予他们完全访问权限时,这尤其有用。毕竟,具有完全sudo
访问权限的用户可以劫持该root
帐户。