Kesulitan menjalankan cd dengan sudo sebagai pengguna lain


12

Saya ingin menjalankan perintah pada shell atas nama pengguna lain. Perintahnya adalah sebagai berikut:

sudo -u USER cd /home/USER

saya mendapat

sudo: cd: command not found

Apa sintaks yang benar untuk perintah untuk meneruskan ke sudo?

Jawaban:


14

cdadalah shell builtin . Anda perlu memohon shell untuk mengeksekusi shell builtins:

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

ATAU

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

1
Ini tidak akan benar - benar melakukan sesuatu yang berguna --- shell akan keluar tepat setelah cd. OP mungkin ingin sudo -i.
derobert

5

cdbukan perintah eksternal, itu hanya shell builtin, jadi sudotidak bisa menjalankannya. Alasan mengapa cdhanya ada sebagai shell builtin adalah bahwa suatu proses tidak dapat mempengaruhi direktori saat ini dari proses lain; Oleh karena itu program yang mengubah direktori saat ini dan keluar segera tidak berguna. (Hampir tidak berguna: cdprogram akan mengembalikan status yang menunjukkan apakah itu berhasil.)

Jika Anda ingin mengubah ke direktori dan kemudian menjalankan perintah sebagai pengguna lain, jalankan shell yang melakukan semua itu.

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

1

Saya cenderung menggunakan: sudo su - USERNAMEdan kemudian melakukan apa yang Anda butuhkan sebagai pengguna itu. Untuk berhenti ketik sajaexit


3
logging sebagai USERNAMEdan kemudian mengeksekusi perintah berbeda dengan menjalankan perintah secara langsung sebagaiUSERNAME
Pandya
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.