web-dev-qa-db-fra.com

exécuter le script en tant qu'utilisateur disposant d'un shell nologin

Tout ce que je dois faire est d'exécuter un script spécifique en tant qu'utilisateur particulier qui a le nologin/false Shell indiqué dans /etc/passwd.

Je voudrais exécuter le script en tant que root et cela devrait fonctionner en tant qu'un autre utilisateur. Fonctionnement:

~# su -c "/bin/touch /tmp/test" testuser

fonctionnerait, mais j'ai besoin d'un Shell valide pour le testuser. Je sais que je peux désactiver le mot de passe avec passwd -d testuser et laissez le shell à /bin/bash cette façon sécuriserait un peu mais je dois avoir nologin/false Coquille.

Fondamentalement, ce dont j'ai besoin, c'est ce que crontab fait lorsque nous configurons les travaux pour qu'ils s'exécutent en tant qu'utilisateur particulier, quel que soit celui-ci. nologin/false Coquille.

p.s J'ai trouvé ce fil Exécution d'une commande en tant qu'utilisateur nologin , mais je ne sais pas comment concatenate la commande su -s /bin/sh $user au script que je dois exécuter.

96
Tommaso

Vous pouvez utiliser le commutateur -s pour exécuter un shell particulier

su -s /bin/bash -c '/path/to/your/script' testuser

(Ajoutez Sudo à ce qui précède si testuser est un utilisateur sans mot de passe.)

127
user9517

Vous pouvez le faire avec Sudo -u si vous l'avez installé:

# whoami
root
# Sudo -u Apache whoami
Apache
# getent passwd Apache
apache:x:48:48:Apache:/var/www:/sbin/nologin
14
Handyman5

En fournissant le script comme argument à exécuter dans/bin/sh:

su -s "/bin/sh /your/script/location" username
6
adaptr

à peine réalisé :

su -s "/ bin/bash" -c "/ bin/touch/tmp/testuser" testuser

il y a peut-être une meilleure façon?!

2
Tommaso

en fait, la meilleure façon de le faire est via runuser

voir la page de manuel pour plus de détails

cet outil est utilisé pour faire face à la situation comme le développeur l'a dit dans son bolg

Chaque fois qu'un service s'exécute en tant que root et souhaite modifier l'UID à l'aide du shell, il doit utiliser runuser.

http://danwalsh.livejournal.com/55588.html

j'ai posté cette réponse dans de nombreux palais, pardonnez-moi si vous trouvez cela ennuyeux

2
Z-Y00