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).