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.
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.)
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
En fournissant le script comme argument à exécuter dans/bin/sh:
su -s "/bin/sh /your/script/location" username
à peine réalisé :
su -s "/ bin/bash" -c "/ bin/touch/tmp/testuser" testuser
il y a peut-être une meilleure façon?!
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
http://danwalsh.livejournal.com/55588.html
j'ai posté cette réponse dans de nombreux palais, pardonnez-moi si vous trouvez cela ennuyeux