因此,我尝试调整 GNOME 验证桌面用户权限的方式。它要求输入密码root
。对于我的部署来说,这是不可取的,我希望它重新提示用户输入他们的密码,并且只有属于某个组 ( wheel
) 的人才能访问。
我取得了一些进展。如果存在一个文件,其/etc/security/console.apps
名称与尝试运行的服务(例如pirut
包管理器)的名称相同,则 GNOME 将要求输入密码并提升该程序。以下是该pirut
文件:
USER=root
PROGRAM=/usr/sbin/pirut
SESSION=true
KEEP_ENV_VARS=http_proxy,ftp_proxy
如果我注释掉/删除该USER=root
行,系统将提示我输入当前登录的用户,这正是我想要的。问题是,只要用户知道他们的密码,它就会启动,因此即使不在我的组中的用户也可以启动特权应用程序。
Aman console.apps
是相关的,但是没用:
/etc/security/console.apps/ 目录应包含每个希望允许控制台用户访问的应用程序的一个文件。文件名应与服务名相同,内容无关紧要;文件可以是零长度文件。使用该文件的应用程序可以自由地以任何对其有用的方式指定内容。
我的问题:我如何告诉 GNOME/ConsoleHelper 用户也必须处于特定状态才能允许执行?
答案1
您要为 consolehelper 执行的操作是将其放入UGROUPS=wheel
console.apps 文件中。(您不需要更改已有的内容,通常也不应该更改。)然后将相应的用户添加到 wheel 组。然后,该组中的成员将被提示以自我身份进行身份验证,而其他用户仍将以 root 身份进行身份验证。(不久前,我需要同样的功能,所以我编写了它并将补丁上传到上游。开源很棒。)
这在 中有记录man userhelper
。
在较新的发行版(当前的 Fedora 和 RHEL6)上,consolehelper 正在逐步被 PolicyKit(又名)取代polkit
。它具有不同的配置方案,但也可以做同样的事情。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
最后,您可以取消%wheel ALL=(ALL) ALL
注释中的行/etc/sudoers
。(这可能成为 Fedora 15 中的默认设置。)