web-dev-qa-db-fra.com

Accès Sudo sans mot de passe à / sys / power / state

Pm-hibernate semble être en panne, mais la commande echo disk > /sys/power/state semble fonctionner parfaitement. Maintenant, j'ai juste besoin d'un accès utilisateur régulier, à l'aide de Sudo. Comment puis-je faire cela?

La commande Sudo echo disk > /sys/power/state renvoie simplement bash: /sys/power/state: Permission denied.

En outre, j'ai besoin de cela dans un script régulièrement utilisé, comment puis-je le faire pour que je n'ai pas à taper mon mot de passe pour que cela fonctionne ???

3
codesmith

Notez que les caractères de redirection "séparent" l'exécution et les privilèges. Sur cette commande:

Sudo echo disk > /sys/power/state

Ce que vous faites est d'exécuter echo disk en tant que root (inutile), puis de le canaliser, en tant qu'utilisateur normal, dans un fichier appartenant à root. C'est pourquoi l'autorisation vous est refusée.

Il s’agit d’un cas d’utilisation très courant. Ce que vous devez faire est Sudo, la partie qui écrit réellement dans le fichier, quelque chose comme cela fonctionne:

echo disk | Sudo tee /sys/power/state

Vous pouvez également créer un script Shell (un fichier) avec:

  echo disk > /sys/power/state

Nommez-le, par exemple, script.sh, puis exécutez chmod 755 script.sh et exécutez-le avec Sudo:

Sudo /wherever/you/put/this/script.sh

En ce qui concerne l’exécution d’une commande sans mot de passe, nous en avons déjà parlé: Comment puis-je utiliser Sudo sans avoir à saisir mon mot de passe? . Cela peut être quelque peu précaire; vous pouvez contrôler quel utilisateur doit exécuter quelle commande en tant qu'utilisateur root sans mot de passe, mais dans ce cas, vous devez autoriser l'exécution de la commande tee qui pourrait permettre à des utilisateurs malveillants de remplacer n'importe quel fichier en tant que root. Donc, utilisez avec prudence et s'il vous plaît lire toute la documentation et comprendre les implications pour la sécurité de le faire.

4
roadmr