Почему система продолжает просить ввести пароль для первого члена группы sudo вместо запрета выполнения команды
У нас есть ОС Ubuntu 18.04. Представлено 2 пользователей:
user1, user2. user1 является административной учетной записью и является членом группы sudo:uid=1010(user1) gid=1010(user1) groups=1010(user1),27(sudo),110(lxd)
, user2 - обычный пользователь uid=1000(user2) gid=1000(user2) groups=1000(user2)
, Теперь в файле /etc/sudoers у меня есть запись по умолчанию для группы sudo:
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
А также специальные команды, которые могут быть выполнены с правами администратора (root) для user2:
Cmnd_Alias CMD_RELOAD_PHP_FPM = /bin/systemctl reload php7.0-fpm, /bin/systemctl reload php7.2-fpm
user2 ALL=(root:root) NOPASSWD: CMD_RELOAD_PHP_FPM
На этом шаге все в порядке user2 может выполнить все, что указано в Cmnd_Alias, без ввода пароля, поэтому работайте как положено.
Но когда user2 пытается выполнить что-то, что ему не разрешено, он получает приглашение войти, внимание, user1
пароль. Не root
не его user2
, но user1
пароль, вместо того чтобы молча или информативно отрицать такие действия:
user2@someserver:~$ /bin/systemctl restart <someservice>
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Authentication is required to restart 'someservice.service'.
Authenticating as: user1
Password:
user1
является единственным членом группы sudo.
grep 'sudo' /etc/group
sudo:x:27:user1
grep 'sudo' /etc/gshadow
sudo:*::user1
Если user1
удаляется из sudo
группа и user2
пытается выполнить ту же команду, затем его просят ввести root
пароль.
Как я могу изменить это поведение, так user2
попытки будут отклонены вместо того, чтобы попросить его ввести пароль?
1 ответ
У меня недостаточно знаний о polkit
, но это, кажется, является причиной такого поведения.
Линия, ответственная за это:
AdminIdentities=unix-group:sudo;unix-group:admin
внутри /etc/polkit-1/localauthority.conf.d/51-ubuntu-admin.conf
файл
Комментирование AdminIdentities=...
и перезапуск демона polkit возвращает поведение по умолчанию, где root
пароль требуется для перезапуска службы. Не уверен, безопасно это или нет. Возможно, некоторые из членов сообщества могли бы объяснить лучше.
Также кажется, что я нашел место, где действия по умолчанию для systemd
описаны, если непривилегированный пользователь пытается выполнить какое-либо действие со службой systemd.
Это внутри файла: /usr/share/polkit-1/actions/org.freedesktop.systemd1.policy
Если я устанавливаю такие значения:
<action id="org.freedesktop.systemd1.manage-units">
<description gettext-domain="systemd">Manage system services or other units</description>
<message gettext-domain="systemd">Authentication is required to manage system services or other units.</message>
<defaults>
<allow_any>no</allow_any>
<allow_inactive>no</allow_inactive>
<allow_active>no</allow_active>
</defaults>
</action>
я начинаю получать Access denied
сообщение о попытке перезапустить службу как непривилегированный пользователь.