1 votes

La restriction sudoers ne fonctionne que lors de l'utilisation de "sudo", comment restreindre l'utilisation régulière ?

J'ai les éléments suivants dans mon sudoers.d/nginx fichier :

deployer ALL=NOPASSWD: /etc/init.d/nginx reload

Cela fonctionne si je lance la commande en tant que sudo :

$ sudo /etc/init.d/nginx start
[sudo] password for deployer: 
Sorry, user deployer is not allowed to execute '/etc/init.d/nginx start' as root on graduation.

Cependant, lorsque j'exécute la commande en tant que non-sudo il semble que sudoers soit passé. La commande ne fonctionne toujours pas, mais cela est dû à d'autres erreurs de propriété, et non à la restriction de sudoers :

$ /etc/init.d/nginx start
nginx: [alert] could not open error log file: open() "/var/log/nginx/error.log" failed (13: Permission denied)
2012/12/30 20:59:49 [warn] 30054#0: the "user" directive makes sense only if the master process runs with super-user privileges, ignored in /etc/nginx/nginx.conf:12
2012/12/30 20:59:49 [emerg] 30054#0: open() "/var/log/nginx/access.log" failed (13: Permission denied)

Est-ce un comportement attendu ? Et si oui, pourquoi cela se produit-il ? Je m'attendrais à ce que le sudoers vérification à effectuer avant d'exécuter une commande. Les règles sudoers s'appliquent-elles uniquement aux commandes exécutées en tant que sudo ? (c'est logique, vu son nom).

Et si c'est le cas, existe-t-il d'autres moyens de restreindre l'accès régulier aux commandes sans utiliser sudo ?

En gros, je voudrais que mon déployeur utilisateur pour faire seulement deux choses :

  • possède son propre répertoire personnel /var/www
  • être capable d'exécuter /etc/init.d/nginx reload

Toutes les autres choses doivent être interdites (idéalement, même les cd'ing en dehors du répertoire personnel).

9voto

user9517 Points 113163

C'est un comportement attendu, le fichier sudoers n'est consulté que lorsque vous exécutez sudo, il refuse donc à l'utilisateur l'accès à la commande et vous donne le message d'erreur correspondant.

Lorsque l'utilisateur essaie d'exécuter la commande directement, sudo n'est pas impliqué et vous obtenez donc les messages d'erreur produits par les commandes individuelles qui échouent parce que l'utilisateur n'a pas de privilèges.

Si vous souhaitez limiter l'utilisateur à une seule activité, vous pouvez lui permettre de se connecter via ssh et lient leurs clés à la commande unique en utilisant

command="/usr/bin/sudo /etc/init.d/nginx reload" ssh-rsa AAAAB3NzaC1...

Avec cette configuration, lorsque l'utilisateur se connecte, le rechargement est effectué et il est déconnecté.

Si, à une date ultérieure, vous décidez que vous avez besoin de l'utilisateur pour effectuer d'autres opérations, alors vous pouvez prolonger cette idée .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X