Si je fais
su - -c 'mkdir bin' user1
alors je reçois
su: /usr/bin/ksh: No such file or directory
car le shell des utilisateurs est défini sur ksh
in /etc/passwd
et ksh
n'est pas installé.
Question
Comment exécuter des commandes en tant qu'utilisateur dans un tel cas?
/etc/passwd
vient de NIS.Réponses:
Si vous ne mettez pas l'
-
after,su
il ne chargera pas l'environnement de cet utilisateur, mais les commandes seront toujours exécutées en tant que cet utilisateur.Il semble que j'ai mal compris votre problème réel. Comme d'autres l'ont dit,
-s
c'est l'option que vous souhaitez probablement.la source
Vous pouvez utiliser:
L'
-s
option à su spécifie le shell à utiliser, remplaçant tout ce qui se trouve dans / etc / passwd.J'ai laissé tomber la
-
commande car, en plus de charger le profil, il changera probablement le répertoire de travail en répertoire personnel de l'utilisateur pour la commande, donc vous créeriez 'bin' dans le répertoire personnel de user1, pas votre actuel annuaire.la source
Je crois que l'option -s / - shell de su vous permet de choisir le shell à utiliser tout en conservant les autres parties de l'environnement des utilisateurs, / bin / sh est spécifié par posix et devrait donc être disponible partout.
la source