Внимательно рассматривая предыдущую заметку, можно задуматься, как именно
polkit определил, что пользователю можно доверять. Для Ubuntu ответ находится в man pklocalauthority: polkit читает файлы конфигурации из директории /etc/polkit-1/, где описано, какие пользователи считаются администраторами:$ cat /etc/polkit-1/localauthority.conf.d/*
[Configuration]
AdminIdentities=unix-user:0
[Configuration]
AdminIdentities=unix-group:sudo;unix-group:admin
Авторизовать как администраторов
polkit будет пользователя с id 0, то есть root, и всех пользователей, помещённых в группы sudo или admin.Для других дистрибутивов настройки могут немного отличаться, однако принцип сохраняется. Например, в RedOS 8 этих файлов не будет, зато одно из правил в директории
/usr/share/polkit-1/rules.d/ будет гласить:# cat 50-default.rules
polkit.addAdminRule(function(action, subject) {
return ["unix-group:wheel"];
});
Получается, любой пользователь из группы
wheel будет считаться администратором.Это наблюдение интересно тем, что
sudo позволяет точечно выдавать пользователям права на исполнение определённых файлов. Например, строкиmint ALL =(ALL) !ALL
mint ALL = NOPASSWD: /usr/bin/ls
в конфиге
sudo позволяет пользователю mint выполнять только команду ls от имени суперпользователя, даже если он находится в группе sudo:$ id -nG
mint adm sudo docker
$ sudo touch file.txt
Sorry, user mint is not allowed to execute '/usr/bin/touch' as root on this-host.
$ sudo ls
Audio
Desktop
...
Однако
pkexec об этих настройках не знает, поэтому трюк из предыдущей заметки работает. И это же заставляет задуматься о том, что одного членства в группе администратора достаточно для получения полных прав вне зависимости от настроек в файле /etc/sudoers. Нельзя добавлять пользователей в админские группы, желая выдать им лишь частичные права на исполнение файлов.Дистрибутивы определяют самостоятельно, какие группы будут давать доступ к командам
sudo и pkexec, и согласованно составляют файлы конфигурации для обеих систем. Менять их тоже нужно совместно и осторожно. Интересно, что даже CIS Bencmarks практически не касаются этой темы.Можно заметить, кстати, что такие "топорные" политики
polkit объясняют, почему документация и установщик говорят об "администраторе", а не просто о "доступе к sudo ". Разница всё же есть.P.S. Вызывая
pkexec в графическом интерфейсе Gnome, polkit не позволит выбрать пользователя, от чьего имени авторизоваться, доступен будет только первый созданный в системе пользователь. Этому багу уже больше 4 лет, и до сих пор его не починили. Да и ладно, зато pkttyagent этим не болеет.

