ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

获取超级用户访问权限

2026/8/19 23:08:02 拓冰建站 浏览量
获取超级用户访问权限 超级用户大多数操作系统具有一个超级用户该用户拥有系统的全部权限。在红帽企业 Linux 中此为 root 用户。此用户的特权高于文件系统上的一般特权您可以使用它来管理系统。若要执行诸如安装或删除软件以及管理系统文件和目录等任务必须将特权升级到 root 用户。通常只有 root 用户才能控制大部分的设备但也有一些例外。普通用户可以控制可移动设备如 USB 设备。因此虽然普通用户可以添加和删除文件并可管理可移动的设备但默认情况下只有 root 用户才能管理硬盘。尽管如此这种无限制的特权也带来了职责问题。root 用户拥有足以破坏系统的无限制权限删除文件和目录、删除用户帐户以及添加后门等。一旦 root 用户帐户被盗系统将处于危险之中您也可能会失去管理控制。红帽建议系统管理员始终以普通用户身份登录仅在需要时升级到 root 用户特权。Linux 上的 root 帐户类似于 Microsoft Windows 上的本地 Administrator 帐户。在 Linux 中大多数系统管理员都作为无特权的用户登录然后使用各种工具临时获得 root 特权。切换用户帐户通过使用su命令用户可以切换至另一个用户帐户。如果从普通用户帐户运行su命令并将另一用户帐户用作参数则必须提供要切换到的帐户的密码。以 root 用户身份运行su时则无需输入用户密码。本例从 user01 帐户运行 su 命令来切换到 user02 帐户[user01host ~]$ su - user02 Password: user02_password [user02host ~]$如果省略用户名则默认情况下su或su -命令会尝试切换到 root。[user01host ~]$ su - Password: root_password [roothost ~]#su命令将启动非登录 shell而su -命令带有短划线选项会启动登录 shell。两个命令的主要区别在于su -会将 shell 环境设置为如同以该用户身份重新登录一样而su以该用户身份启动 shell但使用的是原始用户的环境设置。通常情况下管理员应该运行su -以获得包含目标用户常规环境设置的 shell。通过 Sudo 运行命令出于安全原因在某些情况下系统管理员会将 root 用户配置为没有有效的密码。因此用户无法使用密码直接以 root 身份登录系统。此外您也无法使用 su 来获取交互式 shell。在这种情况下您可以使用 sudo 命令来获取 root 访问权限。与 su 命令不同sudo 通常要求用户输入自己的密码以进行身份验证而不是输入他们正尝试访问的用户帐户的密码。也就是说用户使用 sudo 命令以 root 身份运行命令时不需要知道 root 密码。相反他们将使用自己的密码来验证访问权限。下表总结了su、su -和sudo命令之间的区别此外您可以将 sudo 配置为允许特定用户像某个其他用户一样运行任何命令或仅允许以该用户身份运行部分命令。例如如果您将 sudo 命令配置为允许 user01 用户以 root 身份运行 usermod 命令那么您可运行以下命令来锁定或解锁用户帐户[user01host ~]$ sudo usermod -L user02 [sudo] password for user01: user01_password [user01host ~]$ su - user02 Password: user02_password su: Authentication failure [user01host ~]$如果某用户尝试以另一用户身份运行命令但 sudo 配置不允许则 bsh 会阻止该命令记录这次尝试并且默认情况下向 root 用户发送一封电子邮件。[user02host ~]$ sudo tail /var/log/secure [sudo] password for user02: user02_password user02 is not in the sudoers file. This incident will be reported. [user02host ~]$sudo 的另一个好处是默认将所有执行的命令记录到/var/log/secure中。[user01host ~]$ sudo tail /var/log/secure ...output omitted... Mar 9 20:45:46 host sudo[2577]: user01 : TTYpts/0 ; PWD/home/user01 ; USERroot ; COMMAND/sbin/usermod -L user02 ...output omitted...通过 Sudo 获取交互式 Root Shell要通过 sudo 访问 root 帐户请使用sudo -i命令。此命令将切换到 root 帐户并运行该用户的默认 shell通常为 bash及关联的交互式登录脚本。要在没有交互式脚本的情况下运行 shell请使用sudo -s命令。例如管理员可以获取 AWS Elastic Cloud Computing (EC2) 实例上 root 用户的交互式 shell方法是使用 SSH 公钥身份验证作为普通用户 ec2-user 登录。再运行sudo -i命令来获取 root 用户的 shell。[ec2-userhost ~]$ sudo -i [sudo] password for ec2-user: ec2-user_password [roothost ~]#配置 Sudo/etc/sudoers文件是 sudo 命令的主要配置文件。如果多个管理员试图同时编辑该文件为了避免出现问题您只能特殊的visudo命令进行编辑。visudo编辑器也会验证该文件确保没有语法错误。例如以下来自/etc/sudoers文件的这一行可为 wheel 组成员启用 sudo 访问权限%wheel ALL(ALL:ALL) ALL要为 user01 用户启用完整的 sudo 访问权限您可以创建含有以下内容的/etc/sudoers.d/user01文件user01 ALL(ALL) ALL要为 group01 组启用完整的 sudo 访问权限您可以创建含有以下内容的/etc/sudoers.d/group01文件%group01 ALL(ALL) ALL要使 games 组中的用户能够以 operator 用户身份运行 id 命令您可以创建含有以下内容的/etc/sudoers.d/games文件%games ALL(operator) /bin/id此外也可以设置 sudo以允许用户通过使用NOPASSWD: ALL命令在不输入密码的前提下以其他用户身份运行命令ansible ALL(ALL) NOPASSWD: ALL