Nous avons OS Ubuntu 18.04. Il y a 2 utilisateurs présentés: utilisateur1, utilisateur2. user1 est un compte administratif et est membre du groupe Sudo: uid=1010(user1) gid=1010(user1) groups=1010(user1),27(Sudo),110(lxd)
. user2 est un utilisateur régulier uid=1000(user2) gid=1000(user2) groups=1000(user2)
. Maintenant, dans le fichier/etc/sudoers, j'ai un enregistrement par défaut pour le groupe Sudo:
# Allow members of group Sudo to execute any command
%Sudo ALL=(ALL:ALL) ALL
Ainsi que des commandes spéciales autorisées à être exécutées avec des droits administratifs (root) pour l'utilisateur2:
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
À cette étape, tout va bien, user2 peut exécuter tout ce qui est spécifié dans Cmnd_Alias sans entrer de mot de passe, alors travaillez comme prévu.
Mais lorsque user2 essaie d'exécuter quelque chose qui ne lui est pas autorisé, il est invité à entrer, attention, user1
mot de passe. Pas root
, pas le sien user2
, mais user1
mot de passe, au lieu de refuser silencieusement ou informativement une telle action:
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
est le seul membre du groupe Sudo.
grep 'Sudo' /etc/group
Sudo:x:27:user1
grep 'Sudo' /etc/gshadow
Sudo:*::user1
Si user1
est supprimé du groupe Sudo
et user2
essaie d'exécuter la même commande, puis il lui est demandé de saisir root
mot de passe.
Comment puis-je changer ce comportement, donc user2
les tentatives seraient refusées au lieu de lui demander d'entrer le mot de passe?
Je n'ai pas assez de connaissances sur polkit
, mais cela semble être la cause d'un tel comportement.
Ligne qui en est responsable:
AdminIdentities=unix-group:Sudo;unix-group:admin
à l'intérieur de /etc/polkit-1/localauthority.conf.d/51-ubuntu-admin.conf
fichier
Commentaire du AdminIdentities=...
line et le redémarrage du démon polkit renvoie le comportement par défaut où root
mot de passe est requis pour le redémarrage du service. Je ne sais pas si c'est sûr ou non. Certains membres de la communauté pourraient probablement mieux expliquer.
Il semble également que j'ai trouvé l'endroit où les actions par défaut pour systemd
sont décrites si un utilisateur non privilégié tente d'effectuer une action avec le service systemd.
Il se trouve dans le fichier: /usr/share/polkit-1/actions/org.freedesktop.systemd1.policy
Si je fixe des valeurs comme ceci:
<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>
je commence à avoir Access denied
message sur la tentative de redémarrage du service en tant qu'utilisateur non privilégié.