web-dev-qa-db-fra.com

Comment faire en sorte que / sbin / shutdown, / sbin / reboot, etc. nécessitent à nouveau Sudo dans 16.04?

Pour une raison quelconque, nous n’avons plus besoin d’être root (ou d’utiliser Sudo) pour exécuter /sbin/shutdown, /sbin/reboot etc.

Cela semble être dû au fait que ces exécutables sont maintenant des liens symboliques vers /bin/systemctl qui gère tout comme un utilisateur normal.

Cependant, que se passe-t-il si je souhaite que shutdown et reboot requièrent à nouveau l’authentification racine? Comment puis-je atteindre cet objectif?

18
Byte Commander

Systemd gère en effet les commandes shutdown, reboot et autres, et les privilèges attribués par défaut sont permissifs. Pour changer cela, vous devez créer une règle Polkit. Créez un fichier .pkla dans /etc/polkit-1/localauthority/50-local.d (disons, confirm-shutdown.pkla) contenant:

[Confirm shutdown]
Identity=unix-user:*
Action=org.freedesktop.login1.*
ResultActive=auth_admin_keep

Les différentes commandes d'arrêt, de redémarrage, etc. sont, en termes de Polkit, des actions dans org.freedesktop.login1, par exemple, org.freedesktop.login1.power-off, org.freedesktop.login1.reboot, etc. Le problème spécifique ici est la configuration par défaut, qui est dans /usr/share/polkit-1/actions/org.freedesktop.login1.policy:

<action id="org.freedesktop.login1.power-off">
        <description>Power off the system</description>
        ...
        <defaults>
                <allow_any>auth_admin_keep</allow_any>
                <allow_inactive>auth_admin_keep</allow_inactive>
                <allow_active>yes</allow_active>
        </defaults>

Notez que cela permet à l'utilisateur actif de mettre hors tension, de redémarrer, etc.

5
muru

As modification des autorisations d'un lien symbolique sur un système Linux ne modifie pas les autorisations du lien, mais le fichier vers lequel il pointe (du moins dans Ubuntu). Je pense que le moyen le plus sûr d’y parvenir serait de supprimer le lien et de le recréer avec le mask requis pour obtenir le résultat souhaité.

Un autre article peut être trouvé ici

0
Elder Geek

Vous pouvez utiliser la commande chmod.

  • Si vous voulez donner accès uniquement à root, vous pouvez écrire:

    chmod 700 directory/to/the/file
    
  • Si vous voulez donner la permission à la racine et au groupe Sudo, vous pouvez écrire:

    chmod 770 directory/to/the/file
    
  • Si vous voulez changer le groupe du fichier de Sudo en un autre (comme un utilisateur ou des administrateurs), vous devez taper:

    chown owner:group directory/to/the/file
    
  • Si vous voulez revenir en arrière, lancez:

    chown root:Sudo filedirectory 
    

Note: vous devrez peut-être utiliser Sudo pour ces commandes ou vous être connecté au compte root

0
Yakusho