Saya ingin tahu bagaimana menjalankan perintah sebagai pengguna lain dari skrip.
Saya memiliki pemilik skrip yang ditetapkan sebagai root. Saya juga menjalankan perintah berikut dalam skrip untuk menjalankan perintah sebagai pengguna hudson:
su -c command hudson
Apakah ini sintaks yang benar?
sudo cat /etc/passwd | grep user-abc
. Jika Anda melihat sesuatu seperti ini:user-abc:x:994:994::/home/user-abc:/bin/false
maka itu tidak akan berhasil. Itu karena "/bin/false
" bagian terakhir berarti tidak ada shell untuk pengguna itu.Jawaban:
Iya. Inilah
--help
:Dan beberapa pengujian (saya menggunakan
sudo
karena saya tidak tahu kata sandi untuknobody
akun)Ketika perintah Anda mengambil argumen, Anda perlu mengutipnya. Jika tidak, hal-hal aneh akan terjadi. Inilah saya - sebagai root - mencoba membuat direktori di / home / oli (as oli) tanpa mengutip perintah lengkap:
Ini hanya dibaca
mkdir
sebagai nilai untuk-c
bendera dan sedang digunakan/home/oli/java
sebagai nama pengguna. Jika kami mengutipnya, itu hanya berfungsi:sumber
Catatan: "Saya memiliki pemilik skrip yang ditetapkan sebagai root" tidak melakukan apa-apa; bahkan jika Anda memiliki bit setuid set masih tidak bekerja
Namun, dengan asumsi Anda menjalankan skrip sebagai root, Anda dapat menggunakannya
sudo
.su
terutama untuk beralih pengguna, sedangkansudo
untuk mengeksekusi perintah sebagai pengguna lain. The-u
flag memungkinkan Anda menentukan mana pengguna untuk mengeksekusi perintah sebagai:sumber
sudo
Anda hanya bisa mendapatkan ini:root is not in the sudoers file
. Yang membuatsu - <username> -c "command to run"
satu-satunya pilihan.sudo -u kilgore mv this that
)