Comment sudo est-il destiné à être utilisé?

24

J'ai déjà essayé de configurer sudo, mais je n'ai pas eu trop de chance avec. En quoi est-il différent de su -l -c "x"? Il semble que via le fichier de configuration, on puisse faire en sorte qu'un utilisateur ne puisse accéder qu'à certaines commandes et plus encore. J'ai toujours pensé sudoà un moyen de doubler une commande en tant qu'un autre utilisateur ou groupe. Étant donné que les distributions comme Ubuntu et Mint facilitent la tâche en donnant essentiellement à l'utilisateur principal un accès facile à root via un mot de passe, je ne suis pas vraiment sûr de son utilisation prévue.

Comment ajouter un utilisateur au fichier sudo, en lui donnant le droit d'exécuter uniquement certaines commandes à la racine? Je ne veux pas non plus ouvrir de failles de sécurité.

Naftuli Kay
la source

Réponses:

16

Pour les opérations de base - exécution de commandes en tant que root - la différence la plus visible entre sudo et su est que sudo requiert le mot de passe de l'utilisateur appelant (c'est-à-dire votre mot de passe) tandis que su requiert le mot de passe de l'utilisateur cible (c'est-à-dire le mot de passe root). Les implications pour la sécurité ont été largement discutées dans une question précédente: Quelle est la manière la plus sûre d'obtenir les privilèges root: sudo, su ou login? .

Sudo a des fonctionnalités supplémentaires au-delà de su. En particulier, une fois que vous avez le mot de passe d'un utilisateur, vous pouvez exécuter n'importe quelle commande en tant qu'utilisateur. D'un autre côté, sudo peut être configuré pour que l'utilisateur qui l'invoque ne puisse exécuter que des commandes spécifiques comme un autre utilisateur. Cela est possible car sudo ne nécessite aucune authentification (autre que peut-être la confirmation que vous êtes bien en tapant votre mot de passe - mais c'est subtilement différent de l'authentification de votre utilisateur pour une tâche).

Vous modifiez la configuration sudo en exécutant la visudocommande en tant que root (ne modifiez jamais la configuration directement). Assurez-vous que la variable d'environnement EDITORou VISUALest définie sur votre éditeur préféré ou vous pouvez obtenir un éditeur inconnu. La sudoerspage de manuel est un peu laconique mais contient des exemples. Pour permettre à l'utilisateur bobde s'exécuter /bin/foo(avec n'importe quel nombre d'arguments) et /bin/bar --safe(mais pas avec aucun autre argument) en tant que root, utilisez les lignes suivantes:

bob ALL = (root) /bin/foo
bob ALL = (root) /bin/bar --safe
Gilles 'SO- arrête d'être méchant'
la source
2
sudo est une invention géniale
tshepang
1
Que sudo nécessite le mot de passe root ou le mot de passe root dépend de la configuration. Il peut être configuré dans les deux sens.
Jonathan M Davis
3
@Tshepang Amen, frère. Si je devais libérer le mot de passe root et expliquer aux techniciens de support comment SU et ne pas faire quoi que ce soit / autre que apache2ctl gracefulje pense que je préférerais couper mes poignets et en finir.
Shadur
6

La plus grande différence est qu'avec sudovous, vous n'avez pas besoin du mot de passe root pour exécuter une commande en tant que root, comme vous le feriez pour su. Vous avez besoin du mot de passe root pour ajouter quelqu'un au sudoersfichier mais par la suite, cette personne peut exécuter tout ou partie (si vous l'avez restreint) en tant que root sans avoir besoin d'un mot de passe supplémentaire.

L'autre différence est, comme vous l'avez noté, sudopermet un contrôle beaucoup plus précis sur les commandes qui peuvent être exécutées.

Pour plus de détails sur le format du sudoers fichier exécuté man sudoers. Vous y trouverez des exemples où seules certaines commandes peuvent être exécutées en tant que root. La structure de base de chaque ligne est:

user_list host_list = cmd_list

cmd_list peut inclure des détails sur l'utilisateur vers lequel l'utilisateur réel est autorisé à basculer. Par exemple, vous pouvez autoriser un webmaster à basculer vers wwwroot pour redémarrer apache mais pas à root. Il peut également inclure d'autres options telles que si le mot de passe des utilisateurs est requis avant de changer (c'est la valeur par défaut).

Un exemple de ligne pourrait être:

joe  ALL=(ALL) ALL

ce qui signifie: laissez joe exécuter n'importe quelle commande sur n'importe quel hôte en tant qu'utilisateur. Une ligne plus étroite pourrait être:

joe  ALL=(operator) /usr/local/ops/

ce qui signifie: laissez joe exécuter n'importe quelle commande dans le répertoire / usr / local / ops en tant qu'utilisateur "opérateur".

Il y a beaucoup d'exemples à la fin de la page de manuel sudoers.

Vous devez éditer /etc/sudoersavec la commande visudo. Cela vérifie que le fichier est légal et vous empêche de le casser accidentellement.

Dave Jennings
la source
La nécessité ou non de mot de passe lors de l'utilisation de sudo dépend entièrement de la sudoersconfiguration du fichier. Il peut être configuré pour exiger un mot de passe ou configuré pour ne pas nécessiter de mot de passe.
Jonathan M Davis
Autres pratiques courantes pour éviter de modifier le fichier principal / etc / sudoers car IDS le surveille et parce que sa mise en forme peut ruiner votre journée: Utilisez des extraits de code sudo en tant que fichiers séparés dans /etc/sudoers.d. L'utilisation du groupe de roues pour les personnes permettait n'importe quelle commande.
bbaassssiiee
2

En plus des autres réponses, sudo fournit des fonctionnalités de journalisation afin que vous puissiez garder une trace des commandes qui ont été exécutées et par qui. Ce n'est pas pour des raisons de sécurité, car un utilisateur malveillant qui obtient un accès sudo peut effacer le journal. Il est très utile de comprendre exactement ce que vous ou un autre administrateur avez fait aux yeux bleary à 2 heures du matin la semaine dernière.

JRW
la source
3
C'est à des fins de sécurité car sudo prend en charge la journalisation dans le syslog qui, dans toute configuration majeure concernée par la sécurité, sera configurée pour se connecter à une machine distante distincte de sorte que si un système est compromis, les journaux ne peuvent pas être effectués.
Arrowmaster
L'attribut de fichier ajouté uniquement peut aider un peu chattr + a / var / log / secure
bbaassssiiee