web-dev-qa-db-fra.com

Limiter l'utilisateur à exécuter des commandes sélectives (Linux)

Comment puis-je limiter mon utilisateur à exécuter des commandes sélectives uniquement. J'ai un utilisateur Tomc dans le groupe Tomc. J'ai besoin que cet utilisateur soit un utilisateur de Sudo, puis un bash restreint. J'ai essayé de suivre le code dans le fichier /etc/sudoers, mais il ne fonctionne pas car l'utilisateur peut exécuter d'autres commandes telles que mkdir, rm

%tomc ALL=/bin/bash,/usr/bin/vim /*
12
newbie17

Vous pourriez être en train de le faire dans le mauvais sens. Au lieu de donner à un utilisateur un shell bash 'restreint', vous devriez uniquement lui donner accès aux commandes dont il aurait besoin pour être exécuté en tant que root. Par exemple, dans votre fichier sudoers:

tomc ALL=(root) /usr/bin/vim /etc/myapp.conf
tomc ALL=(root) /usr/bin/less /var/log/myapp/*.log

Soyez prudent lorsque vous autorisez les utilisateurs à exécuter vim en tant que root. Vim possède de nombreuses fonctionnalités intégrées, telles que les échappées vers Shell et la possibilité d'exécuter des commandes à partir de vim. En fonction de votre distribution, vous pouvez avoir sudoedit disponible. Cela fonctionne de la même manière qu’un Vim normal, à la différence qu’il est conçu pour gérer les échappées Shell et autres.

15
mtak

Sur mon Synology Diskstation exécutant DSM 6, seuls les utilisateurs administrateurs peuvent utiliser ssh de manière cohérente (les utilisateurs non administrateurs ont Shell comme/sbin/nologin dans/etc/passwd - vous pouvez définir ceci sur/bin/sh pour autoriser temporairement ssh, mais au redémarrage le fichier/etc/passwd est réinitialisé). Pour cette raison, une sorte de restriction Sudo est nécessaire pour un compte qui n'existe par ailleurs que pour exécuter, par exemple./sbin/poweroff. Les lignes suivantes de/etc/sudoers ont fonctionné pour moi:

# Allow guestx user to remote poweroff
guestx ALL=(ALL) !ALL
guestx ALL=NOPASSWD: /sbin/poweroff

Traduction: interdire toutes les commandes, puis autoriser uniquement la commande souhaitée (sans demander de mot de passe dans ce cas).

Avec cette configuration, Sudo demande le mot de passe puis échoue pour les commandes autres que celles figurant sur la liste blanche:

guestx@ds:~$ Sudo su -
Password: 
Sorry, user guestx is not allowed to execute '/bin/su -' as root on ds.
guestx@ds:~$ 
2
robm