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?
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
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
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
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