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 sudo, puis qu'il ait des restrictions bash. J'ai essayé de suivre le code dans le /etc/sudoers
fichier, mais cela ne fonctionne pas car l'utilisateur est capable d'exécuter d'autres commandes comme mkdir
,rm
%tomc ALL=/bin/bash,/usr/bin/vim /*
sudo bash
équivaut dans la plupart des cas à avoir le mot de passe root. À partir d'unsudo bash
shell, ils peuvent exécuter n'importe quelle commande d'administration, installer ou supprimer des logiciels, supprimer des utilisateurs et des répertoires, etc.Réponses:
Vous pourriez y aller dans le mauvais sens. Au lieu de donner à un utilisateur un shell bash «restreint», vous ne devez lui donner accès qu'aux commandes dont il aurait besoin pour s'exécuter en tant que root. Par exemple, dans votre fichier sudoers:
Soyez prudent lorsque vous autorisez les utilisateurs à exécuter vim en tant que root. Vim a beaucoup de fonctionnalités intégrées, comme des échappements au shell et la possibilité d'exécuter des commandes depuis vim. Selon votre distribution, vous pourriez en disposer
sudoedit
. Cela fonctionne de la même manière qu'un Vim normal, sauf qu'il est conçu pour gérer les échappements shell et autres.la source
vim
peut exécuter des commandes shell arbitraires. Et la deuxième ligne le permettra probablementless /var/log/myapp/../../../etc/shadow
! D'après mes expériences, utiliser sudo en toute sécurité est difficile ! Mais si vous pouvez éviter les*
s et les utiliser à lasudoedit
place,vim
vous serez peut-être d'accord.*
ne suffit pas! Une fois enless
tantroot
qu'utilisateur, essayez de taper!tail /var/log/secure
. Comment tu te sens? Étudiez l'NOEXEC
étiquette. Mais prenez à cœur le message de @ joeytwiddle: la sécurité de sudo est vraiment difficile.Sur mon Synology Diskstation exécutant DSM 6, seuls les utilisateurs administrateurs peuvent ssh en permanence (les utilisateurs non administrateurs ont le shell en tant que / 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 autrement que pour exécuter par exemple / sbin / poweroff. Les lignes suivantes dans / etc / sudoers ont fonctionné pour moi:
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 la liste blanche:
la source