如何让 CentOS/RHEL 提示我我的当我运行特权命令时,我需要输入密码(而不是 root 用户)。我找到了很多指南,详细介绍了如何在命令行中执行此操作,但我希望它也能适用于 X windows 应用程序。
或者换句话说:如何让 RHEL/CentOS 表现得像 Ubuntu。
答案1
终端设置
/etc/sudoers
作为 root,我们需要通过运行来编辑文件visudo
(注意:您可以获得export EDITOR=vim
语法高亮,或使用您选择的编辑器)。
在第 83、86 行左右,您应该会看到两行相似的行(在 vim 中,您可以运行:set number
以显示行号):
83 # %wheel ALL=(ALL) ALL
84
85 ## Same thing without a password
86 # %wheel ALL=(ALL) NOPASSWD: ALL
不同之处在于第 83 行要求用户输入他们的密码进行身份验证,而第 86 行将允许用户sudo
无需重新提示他们输入密码即可进行身份验证。最佳安全实践表明,第 83 行更安全;但是根据您的情况,第 86 行可能更合适(例如,我通常在设置服务器时使用第 86 行,然后切换到第 83 行)。
退出并保存该文件。
现在我们需要告诉系统哪些用户可以升级他们的权限sudo
。这可以通过将他们添加到wheel
组来完成,这就是我们之前编辑的文件%wheel
中指示的。有关该文件格式的更多信息,请参阅。sudoers
man sudoers
$ usermod -a -G wheel erebusbat
该命令将把用户添加erebusbat
到 wheel 组,结合我们之前的更改,将使所有用户都以 root 身份运行任何命令:
erebusbat@centos$ sudo whoami
root
erebusbat@centos$
X / GNOME 设置
consolehelper
在 CentOS/RHEL 5 及以下版本中,X 身份验证由一组称为和 的程序处理userhelper
。基本上发生的事情是这样的:当用户执行一个程序(例如pirut
)时,它会检查pirut
文件夹中是否有一个名为 的文件/etc/security/console.apps/
,如果我们查看其中一个文件,它看起来像:
USER=root
PROGRAM=/usr/sbin/pirut
SESSION=true
KEEP_ENV_VARS=http_proxy,ftp_proxy
这告诉consolehelper
/userhelper
允许用户以 root 身份进行身份验证并运行程序。如果我们man userhelper
看到,我们可以添加一个UGROUPS=
指令,这样如果用户属于该组,他们将被允许以自己的身份进行身份验证,但以指令中指定的用户身份运行应用程序USER=
。因此,我们的pirut
文件需要看起来像:
USER=root
UGROUPS=wheel
PROGRAM=/usr/sbin/pirut
SESSION=true
KEEP_ENV_VARS=http_proxy,ftp_proxy
一旦我们做出这一更改,每当我们尝试pirut
以普通用户身份运行(从 GNOME 菜单添加/删除程序)时,就会发生以下两件事之一:
- 系统将提示我们输入密码,然后程序将启动
root
。 root
如果当前用户不在该wheel
组中,我们将提示输入密码。
但是,手动更改所有这些文件可能会引起 PIA,因此我们要更聪明地工作,而不是更努力地工作:
$ cd /etc/security/console.apps/
$ sudo su -
$ pcregrep -ML '^UGROUPS=' * | xargs sed -i 's/^USER=root/USER=root\nUGROUPS=wheel/'
sudo su -
如果您当前处于 状态,则不需要该命令root
。该命令不会“双重修复”任何文件,因此可以将其chron
编辑或设置为在启动时运行以确保您的文件正常。更新和安装可以覆盖它们或创建没有该指令的新文件UGROUPS=
。
禁用 root 用户
一旦完成所有设置并测试,您就应该禁用 root 用户:
$ sudo passwd -l root
这是一个小写的 L,如 LOCK。
PermitRootLogin no
然后,您应该在文件中设置或更改/etc/ssh/sshd_config
。即使您锁定了 root 帐户,这仍然很有用,以防将来有人启用它。sudo su -
即使您设置了它,它仍会起作用,请参见下文,因此没有理由不设置它。
如果您决定不锁定 root 帐户,那么这并不理想,因为任何人都可以登录到 text/X/GNOME 控制台,root
这时就会发生不好的事情(控制台保持登录状态或者您意外删除了一堆 OS 文件 [问我怎么知道的],最好锁定帐户。
长时间以 root 身份运行
有时,例如软件安装,需要运行许多命令,root
并且不希望每个命令都以 为前缀sudo
。在这种情况下,您有两个选择:
- 暂时切换到该
root
帐户:$ sudo su -
该命令将为您提供与以 root 身份登录该帐户相同的命令 shell。 - 解锁根帐户:
$ sudo passwd root
这将允许您设置密码并解锁帐户;然而这不是暂时的并且您必须记住在完成后锁定用户帐户。