Problemi con l'esecuzione di cd con sudo come altro utente


12

Voglio eseguire un comando su una shell per conto di un altro utente. Il comando è il seguente:

sudo -u USER cd /home/USER

ottengo

sudo: cd: command not found

Qual è la sintassi corretta per il comando da passare a sudo?

Risposte:


14

cdè una shell incorporata . È necessario invocare la shell per eseguire i comandi incorporati della shell:

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

O

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

1
Questo non farà davvero nulla di utile --- la shell uscirà subito dopo cd. OP probabilmente vuole sudo -i.
derobert,

5

cdnon è un comando esterno, è solo una shell incorporata, quindi sudonon è possibile eseguirlo. Il motivo per cui cdesiste solo come shell incorporato è che un processo non può influenzare la directory corrente di un altro processo; pertanto un programma che modifica la directory corrente ed esce immediatamente è inutile. (Quasi inutile: un cdprogramma restituisce uno stato che indica se ha avuto successo.)

Se si desidera passare a una directory e quindi eseguire i comandi come un altro utente, eseguire una shell che fa tutto ciò.

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

1

Tendo a usare: sudo su - USERNAMEe quindi fare ciò di cui hai bisogno come utente. Per uscire basta digitareexit


3
registrandosi come USERNAMEe poi eseguendo il comando è diverso da quello che esegue direttamente il comando comeUSERNAME
Pandya il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.