我今天了解到,人们可以使用pkexec
类似于 的方式从命令行sudo
以 root 权限执行程序。我很好奇如何pkexec
决定谁可以这样做。
手册页pkexec(1)
说
默认情况下,除非相关程序存在操作定义文件,否则需要 org.freedesktop.policykit.exec 授权。
对于不熟悉 policykit 的人来说,解析起来有点困难。但只要稍微猜一下,我们就可以看一下/usr/share/polkit-1/actions/org.freedesktop.policykit.policy
。在本org.freedesktop.policykit.exec
节中,我们会看到字符串auth_admin
。
参照polkit(8)
,我们看到:
auth_admin
需要管理用户进行身份验证。
从这个意义上来说,谁才是“管理员用户”?通过哪些测试来确定用户是否是“管理员”?配置文件变得越来越难找到和理解。
我知道这是可配置的。我想知道 Ubuntu 15.04 的默认设置。
答案1
默认情况下,它是组成员sudo
和 root 用户,根据这些文件/etc/polkit/localauthority.conf.d/
:
$ tail /etc/polkit-1/localauthority.conf.d/*
==> /etc/polkit-1/localauthority.conf.d/50-localauthority.conf <==
# Configuration file for the PolicyKit Local Authority.
#
# DO NOT EDIT THIS FILE, it will be overwritten on update.
#
# See the pklocalauthority(8) man page for more information
# about configuring the Local Authority.
#
[Configuration]
AdminIdentities=unix-user:0
==> /etc/polkit-1/localauthority.conf.d/51-ubuntu-admin.conf <==
[Configuration]
AdminIdentities=unix-group:sudo;unix-group:admin
第一个文件授予 UID 0 ( root
) 访问权限,第二个文件授予组sudo
和的访问权限admin
。admin
在 Ubuntu 上实际上并没有使用,但它确实使用了,并且它也是sudo
用于授予访问权限的组。sudo