Почему система продолжает просить ввести пароль для первого члена группы 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 сообщение о попытке перезапустить службу как непривилегированный пользователь.

Другие вопросы по тегам