web-dev-qa-db-fra.com

Comment puis-je permettre à un utilisateur de passer à un autre sans autoriser l'accès root?

Je voudrais autoriser certains utilisateurs à accéder à un autre compte d'utilisateur sans avoir à connaître le mot de passe de ce compte, mais ne pas autoriser l'accès à un autre compte d'utilisateur (c'est-à-dire root).
Par exemple, je voudrais autoriser Tom le DBA à soumettre à l'utilisateur Oracle, mais pas à l'utilisateur Tomcat ou root.

J'imagine que cela pourrait être fait avec le fichier/etc/sudoers - est-ce possible? Si c'est le cas, comment?

56
gharper

Oui, c'est possible.

Dans / etc/sudoers l'élément suivant immédiatement égal est l'utilisateur sous lequel la commande sera autorisée à s'exécuter.

tom  ALL=(Oracle) /bin/chown tom *

L'utilisateur (tom) peut taper Sudo -u Oracle/bin/chown tom/home/Oracle/oraclefile

45
Brent

Ajoutez à votre/etc/sudoers quelque chose comme

tom ALL=(Oracle) ALL

Ensuite, l'utilisateur tom devrait pouvoir utiliser Sudo pour exécuter des choses en tant qu'utilisateur Oracle avec l'option -u, sans laisser tom

C'est à dire. obtenir un Shell en tant qu'utilisateur Oracle (enfin, étant donné que votre Sudo est suffisamment nouveau pour avoir l'option -i).

Sudo -u Oracle -i
42

Pour fournir UNIQUEMENT les fonctionnalités de la question, ajoutez ce qui suit à/etc/sudoers:

tom            ALL=(Oracle)    /bin/bash

Ensuite, Tom peut:

Sudo -u Oracle bash -i
9
karimofthecrop

Par exemple, je voudrais autoriser Tom le DBA à soumettre à l'utilisateur Oracle, mais pas à l'utilisateur ou à la racine Tomcat.

J'ai dû faire cela récemment sur un système et j'ai eu du mal à trouver mes notes sur la configuration alternative que j'ai utilisée il y a des années et qui permettait également la syntaxe su <user>. Dans ma situation, je devais autoriser plusieurs utilisateurs à su vers un utilisateur spécifique.

Créez un groupe à l'aide de addgroup <groupName> que les autres utilisateurs pourront su sans mot de passe. Ajoutez ensuite ce groupe à chaque utilisateur que vous souhaitez pouvoir su à cet utilisateur sans mot de passe: usermod -a -G <groupName> <userName> (ou usermod -a -G Oracle tom). Les modifications de groupe peuvent ne pas prendre effet jusqu'à la prochaine connexion.

Remarque: Dans votre cas, vous avez déjà le groupe car le groupe Oracle aurait été créé lorsque vous avez fait l'utilisateur Oracle avec adduser Oracle.

Maintenant éditez /etc/pam.d/su et sous ce qui suit:

# This allows root to su without passwords (normal operation)
auth       sufficient pam_rootok.so

..ajoutez les lignes de règles d'authentification pour que la section ressemble à ceci:

# This allows root to su without passwords (normal operation)
auth       sufficient pam_rootok.so
auth       [success=ignore default=1] pam_succeed_if.so user = <groupName>
auth       sufficient   pam_succeed_if.so use_uid user ingroup <groupName>

Remplacer <groupName> avec Oracle dans ce cas. Cela permettra à tout utilisateur faisant partie du <groupName> à su <groupName>

Maintenant, tom peut su Oracle et si vous devez accorder le même accès à d'autres utilisateurs, ajoutez-les au groupe Oracle.

question similaire ici

0
jtlindsey