Polkit的配置:
- 查看polkit服务:
一个是agent,一个是polkit服务;
- agent包含监听接口和一个用户界面(对话窗口),允许用户输入密码。Authentication Agent API Reference是polkit提供的agent开发接口;
- 授权规则(Authorization Rules),利用javascript实现,在/etc/polkit-1/rules.d或/usr/share/polkit-1/rules.d下,用于让应用程序添加授权规则,比如
polkit.addRule(function(action,subject) { if(subject.isInGroup("wheel")&&(action.id.indexOf("com.")==0)) { return polkit.Result.YES; } });
让所有的属于wheel组的用户且Action ID前缀为"com."的操作都不用输入密码。更详细的例子可以查看此目录下的规则文件。
- 行为(Actions),在/usr/share/polkit-1/actions目录下,
org.freedesktop.consolekit.policy ——关机 org.freedesktop.NetworkManager.policy ——网络配置 org.freedesktop.policykit.policy ——决定pkexec的密码需求 org.freedesktop.udisks2.policy ——磁盘挂载 org.freedesktop.upower.policy ——挂起和休眠
文件中对每个action都有详细注解,要修改的地方主要是:
<allow_any>auth_admin</allow_any> <allow_inactive>auth_admin</allow_inactive> <allow_active>auth_self</allow_active>
设置取值有:
no 不通过验证 yes 通过验证(不用输入密码) auth_self 以任意本地用户来验证auth_admin 以管理员身份来验证 auth_self_keep 同auth_self,但在一段时间内保持认证(如5分钟)
auth_admin_keep 同auth_admin,但在一段时间内保持认证(如5分钟)
如下图所示(来自StartOS设备管理器的Actions文件):
注:整理自http://blog.sina.com.cn/s/blog_6640da97010155pk.html
PolicyKit百科:http://wiki.linux.org.hk/w/PolicyKit