如何调整RHEL / CentOS中的Gnome用户高程

所以我正在尝试调整GNOME对特权应用程序的桌面用户进行身份validation的方式。 开箱即需要root密码。 对于我的部署,这是不可取的,我希望它重新提示用户input他们的密码,只允许他们访问,如果他们在一个组( wheel )。

我取得了一些进展。 如果/etc/security/console.apps文件存在于试图运行的服务名称(例如, pirut软件包pipe理器)中,那么GNOME将要求input密码并提升程序。 这是pirut文件:

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

如果我注释掉/删除USER=root行,那么会提示我当前login的用户,这是我想要的。 问题是,只要用户知道他们的密码,它就会启动,即使不在我的组中的用户也可以启动特权应用程序。

一个man console.apps是相关的; 但是无用的:

/etc/security/console.apps/目录应包含一个文件,每个应用程序希望允许访问控制台用户。 文件名应该与服务名称相同,内容不相关; 该文件可能是一个零长度的文件。 该文件所使用的应用程序可以以任何有用的方式自由指定内容。

我的问题:我如何告诉GNOME / ConsoleHelper用户还必须在特定的位置允许执行?

你想为consolehelper所做的是把UGROUPS=wheel放在console.apps文件中。 (您不需要改变已经存在的东西,通常不应该)。然后将相应的用户添加到轮组。 然后,该组中的成员将被提示为auth-as-self,而其他用户仍将以auth-as-root身份进行身份validation。 (前一段时间,我需要相同的function,所以我写了这个补丁,并把补丁放到了最前面,开放源代码非常棒。)

这在man userhelper

在较新的发行版中 – 当前的Fedora和RHEL6 – consolehelper正在被淘汰,转而使用PolicyKit(aka polkit )。 这有一个不同的configurationscheme,但也可以做同样的事情。 有关详细信息,请参阅man pklocalauthority ,但摘要是:将文件放在/etc/polkit-1/localauthority/50-local.d ,内容如下:

 [Wheel-Group Permissions] Identity=unix-group:wheel Action=org.something.seedocs.*;more.actions.*;whatever.you.want.* ResultAny=auth_self 

最后,您可以取消/etc/sudoers %wheel ALL=(ALL) ALL行的注释。 (这可能会成为Fedora 15的默认设置)