设置RHEL / CentOS 5在命令行和X中使用SUDO

当我运行特权命令时,如何让CentOS / RHEL提示我input密码(而不是根)。 我已经find许多指南,详细说明如何做到这一点的命令行,但我希望它也适用于X Windows应用程序。

换句话说:我如何让RHEL / CentOS像Ubuntu一样运行。

terminal设置

作为root用户,我们需要通过运行visudo来编辑/etc/sudoers文件(注意:你可以export EDITOR=vim来获得语法高亮,或者使用你select的编辑器)。
在第83,86行左右,你应该看到两行相似的行(在vim中你可以运行:set number来显示行号):

 83 # %wheel ALL=(ALL) ALL 84 85 ## Same thing without a password 86 # %wheel ALL=(ALL) NOPASSWD: ALL 

不同的是,#83行将要求用户input他们的密码进行authentication,而#86行将允许用户sudo而不需要重新提示他们的密码。 最好的安全实践表明#83更安全; 然而,根据你的情况#86可以是合适的(例如我一般使用#86,而build立一个服务器,然后切换到#83)。

退出并保存该文件。

现在我们需要告诉系统哪些用户可以通过sudo升级他们的权限。 这是通过将它们添加到wheel组来完成的,也就是我们之前编辑的sudoers文件中指示的%wheel 。 有关该文件格式的更多信息,请参阅man sudoers

 $ usermod -a -G wheel erebusbat 

该命令会将用户erebusbat添加到轮组中,加上我们之前的更改,他们将以root身份运行任何命令:

 erebusbat@centos$ sudo whoami root erebusbat@centos$ 

X / GNOME安装程序

在CentOS / RHEL 5及以下版本中,X身份validation由一组名为consolehelperuserhelper的程序处理。 基本上会发生这样的事情:当用户执行一个程序(比如说pirut )时,它会检查文件夹/etc/security/console.apps/是否有一个名为pirut的文件,如果我们看一下它看起来像的文件:

 USER=root PROGRAM=/usr/sbin/pirut SESSION=true KEEP_ENV_VARS=http_proxy,ftp_proxy 

这告诉consolehelper / userhelper允许用户以root身份validation并运行程序。 如果我们man userhelper我们看到我们可以添加一个UGROUPS=指令,这样如果一个用户在这个组中,他们将被允许以自己身份进行身份validation,但是以USER=指令中指定的USER=身份运行该应用程序。 所以出pirut文件需要看起来像:

 USER=root UGROUPS=wheel PROGRAM=/usr/sbin/pirut SESSION=true KEEP_ENV_VARS=http_proxy,ftp_proxy 

只要我们尝试以普通用户身份运行pirut (从GNOME菜单中添加/删除程序),就会发生以下两件事情之一:

  1. 我们将被提示input我们的密码,程序将以root身份启动。
  2. 如果当前用户不在wheel组中,我们会提示inputroot的密码。

然而,手工更改所有这些文件可能是一个PIA,所以我们的工作更聪明,而不是更难:

 $ cd /etc/security/console.apps/ $ sudo su - $ pcregrep -ML '^UGROUPS=' * | xargs sed -i 's/^USER=root/USER=root\nUGROUPS=wheel/' 

如果您当前是root则不需要sudo su -命令。 该命令不会'双修复'任何文件,所以它可以chron ed或设置为在启动时运行,以确保您的文件是好的。 更新和安装可以覆盖它们或创build没有UGROUPS=指令的新的。

禁用root用户

一旦完成所有设置和testing,您应该禁用root用户:

 $ sudo passwd -l root 

这是一个小写的L,就像LOCK一样。

然后,您应该在/etc/ssh/sshd_config文件中设置或更改PermitRootLogin no 。 即使您locking了根帐户,这在任何人将来启用它的情况下也是有用的。 sudo su -即使设置了,仍然可以工作,请参阅下面的内容,所以没有理由不设置它。

如果您决定不lockingroot帐户,那么这是不理想的,因为任何人都可以以root用户身份login到文本/ X / GNOME控制台,这是坏事情发生时(控制台保持login状态,或者意外删除了一堆操作系统文件[问我怎么知道],最好locking账户。

以超长时间运行

有时,如软件安装,有必要以root身份运行许多命令,不希望有每个sudo前缀。 在这种情况下你有两个select:

  1. 暂时切换到root帐户: $ sudo su -该命令将为您提供相同的命令行界面,就像您以root帐户login帐户一样。
  2. 解锁根帐户: $ sudo passwd root这将允许您设置密码并解锁帐户; 但是, 这不是临时的 ,你必须记得在完成后locking用户帐户。