web-dev-qa-db-fra.com

Comment effectuer un arrêt d'urgence sans sudo?

Le problème

Essayons de permettre à un utilisateur spécifique, qui fait partie du groupe Sudo, d'effectuer un arrêt d'urgence à l'aide du code suivant:

echo 1 > /proc/sys/kernel/sysrq
echo o > /proc/sysrq-trigger

Notez que ceci est sans en utilisant la commande Sudo!

EDIT: oublié de mentionner que les deux fichiers, appartenant à root:root, refusent toute autorisation ou modification du propriétaire, même par l'utilisateur root.

Scénario Théorique

Un pirate informatique compromet un système, qui est généralement laissé à fonctionner sans surveillance, et obtient l'autorisation de lire des données confidentielles. Plutôt que de permettre au pirate de continuer, un script automatisé éteint la machine (supposons que le piratage a été détecté).

Bien que ce ne soit pas mon cas d'utilisation exact, il est assez similaire.

Ce que j'ai essayé

  • Créer un script bash pour exécuter les 2 lignes de code ci-dessus, en lui donnant les propriétaires root:Sudo et en ajoutant une ligne à visudo pour permettre à l'utilisateur spécifique d'exécuter la tâche sans avoir à saisir le mot de passe.

  • Tentative de changement du propriétaire des 2 fichiers en root:Sudo.

  • Tentative de modification des autorisations des 2 fichiers de sorte que le groupe root puisse leur écrire.

L'idée est de ne pas "cuire" le mot de passe pour Sudo, ce qui me permettra de changer régulièrement, sans oublier de modifier les autres fichiers (ou d'avoir le processus qui éteint l'ordinateur en cours d'exécution avec root privilèges). Merci d'avance pour votre aide.

3
user3303504

Mon avis est de changer vos lignes en quelque chose comme ceci dans votre script:

echo 1 | Sudo tee /proc/sys/kernel/sysrq > /dev/null
echo o | Sudo tee /proc/sysrq-trigger > /dev/null

Et donnez à l'utilisateur spécifique l'accès à exécuter la commande tee avec ces arguments sans qu'il soit nécessaire d'entrer un mot de passe, quelque chose comme:

username ALL=(root:root) NOPASSWD: /usr/bin/tee /proc/sys/kernel/sysrq

Rappelez-vous qu'il n'est pas possible de rediriger une chaîne dans un fichier nécessitant une autorisation spécifique en utilisant >, cela signifie quelque chose comme:

Sudo echo hi > file
echo hi Sudo >  file

ne va pas au travail.

En même temps, vous ne pouvez pas simplement changer le propriétaire de ces fichiers, car /proc est un système de fichiers virtuel géré par Kernel.

1
Ravexina