Problème avec l'exécution de cd avec sudo en tant qu'autre utilisateur


12

Je veux exécuter une commande sur un shell au nom d'un autre utilisateur. La commande est la suivante:

sudo -u USER cd /home/USER

Je reçois

sudo: cd: command not found

Quelle est la syntaxe correcte pour que la commande passe à sudo?

Réponses:


14

cdest un shell intégré . Vous devez appeler le shell pour exécuter les commandes internes du shell:

sudo -u USER sh -c 'cd /home/USER'

OU

sudo -u USER bash -c 'cd /home/USER'

1
Cela ne fera rien d'utile --- le shell sortira juste après le cd. OP veut probablement sudo -i.
derobert

5

cdn'est pas une commande externe, c'est seulement un shell intégré, donc sudone peut pas l'exécuter. La raison pour laquelle cdexiste uniquement en tant que shell intégré est qu'un processus ne peut pas affecter le répertoire courant d'un autre processus; par conséquent, un programme qui change le répertoire courant et se ferme immédiatement est inutile. (Presque inutile: un cdprogramme retournerait un statut qui indique s'il a réussi.)

Si vous souhaitez passer à un répertoire, puis exécuter des commandes en tant qu’autre utilisateur, exécutez un shell qui fait tout cela.

sudo -u SOMEUSER sh -c 'cd /path/to/directory && dosomething'

1

J'ai tendance à utiliser: sudo su - USERNAMEpuis à faire ce dont vous avez besoin en tant qu'utilisateur. Pour quitter il suffit de taperexit


3
la journalisation en tant USERNAMEque puis l'exécution de la commande est différente de l'exécution directe de la commande en tant queUSERNAME
Pandya
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.