Problem z uruchomieniem cd z sudo jako inny użytkownik


12

Chcę uruchomić polecenie w powłoce w imieniu innego użytkownika. Polecenie jest następujące:

sudo -u USER cd /home/USER

dostaję

sudo: cd: command not found

Jaka jest poprawna składnia polecenia do przekazania do sudo?

Odpowiedzi:


14

cdjest wbudowaną powłoką . Musisz wywołać powłokę w celu wykonania wbudowanych powłok:

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

LUB

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

1
To nie zrobi nic użytecznego --- powłoka wyjdzie zaraz po cd. OP prawdopodobnie chce sudo -i.
derobert

5

cdnie jest poleceniem zewnętrznym, jest tylko wbudowaną powłoką, więc sudonie można go wykonać. Powodem, dla którego cdistnieje tylko jako wbudowana powłoka, jest to, że proces nie może wpływać na bieżący katalog innego procesu; dlatego program, który zmienia bieżący katalog i natychmiast kończy działanie, jest bezużyteczny. (Prawie bezużyteczne: cdprogram zwróci status wskazujący, czy się powiódł).

Jeśli chcesz przejść do katalogu, a następnie uruchomić polecenia jako inny użytkownik, uruchom powłokę, która to wszystko robi.

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

1

Zwykle używam: sudo su - USERNAMEa następnie robię to, czego potrzebujesz jako ten użytkownik. Aby wyjść, po prostu wpiszexit


3
logowanie jako, USERNAMEa następnie wykonywanie polecenia różni się od bezpośredniego uruchamiania polecenia jakoUSERNAME
Pandya,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.