我想启用对用户帐户列表的 sudo 访问并禁用切换到 root 用户(即 sudo su - 或 su -)。为了在 CentOS7 中启用这种方法,我想遵循什么步骤?
另外,我想对用户列表禁用重启/关机命令,这可能吗?
要允许用户alice以 root用户身份运行命令sudo,请将以下行添加到 sudoers 文件中:
alice ALL = (ALL:ALL) ALL
Run Code Online (Sandbox Code Playgroud)
要允许组中的所有用户以administratorsroot用户身份运行命令sudo,请将以下行添加到 sudoers 文件:
%administrators ALL = (ALL:ALL) ALL
Run Code Online (Sandbox Code Playgroud)
使用该命令visudo编辑 sudoers 文件。不要直接编辑文件:您可能会破坏它并发现自己被锁定在 root 帐户之外。强烈建议在执行此操作时在一个终端中以 root 身份运行 shell,并在另一个终端中验证您仍然可以访问 root 帐户。
可以以 root 身份运行命令的用户可以成功运行sudo su -. 你可以防止这种工作,但它是完全没有意义的,因为你不能避免变化,例如sudo -i,sudo bash --login等要么你信任的人以root身份运行命令,或者你没有。
su -除非用户知道 root 密码,否则用户无法访问 root 帐户。如果您不希望他们在没有 sudo 的情况下成为 root,请不要给他们提供 root 密码。
如果您想允许用户重新启动但不以 root 身份运行任意命令,您可以授予他们运行的权限reboot,或者更一般的shutdown,例如
charlie ALL = (root) /sbin/reboot
Run Code Online (Sandbox Code Playgroud)
当然,可以以 root 身份运行任意命令的用户可以根据需要重新启动。再一次,一切都包括重新启动,“除了重新启动之外的一切”都是不可能的,因为有无数种变化,例如“等待一秒钟然后重新启动”、“发送电子邮件然后重新启动”等。
如果没有远程登录的用户,则默认允许已登录控制台的用户重新启动。要禁用此功能,请修改polkit规则。我不知道要在 CentOS 上修改哪个文件。