Apakah ada perintah baris tunggal untuk melakukan `su`?

15

Aku bisa melakukan sudengan su <username>dan meminta password saya. Apakah ada parameter kata sandi untuk susehingga saya tidak akan diminta kata sandi?

misalnya su <username> -p <password>

alva
sumber
Tampaknya pertanyaannya cocok untuk superuser: superuser.com :-)
HongboZhu
1
saya mendapatkannya dari superusersini, superuser.com/questions/67765/…
alvas

Jawaban:

12

Jika Anda ingin menulis skrip yang berjalan sebagai pengguna yang berbeda, ini berfungsi, meskipun ia mengeluarkan kata "kata sandi" tanpa baris baru ke standar

su - username <<!
enterpasswordhere
enter commands to run as the new user
!

jika Anda memiliki pengguna bernama fred dengan kata sandi 1234 dan ingin mendapatkan ls direktori home fred sebagai fred, tanpa string kata sandi ditampilkan, akan terlihat seperti

su - fred <<! >/dev/null 2>&1
1234
whoami > /dev/tty
ls > /dev/tty
!
Brian
sumber
2
hmm, 'standar masuk harus tty'
John Lawrence Aspden
Saya mendapatkan kesalahan yang sama
MaxV
12
Mendapatkan Kesalahan: su: must be run from a terminal.
Abhishek Kashyap
5

Saya percaya, tidak ada dan itu bukan ide yang bagus. Inilah alasannya:
Jika Anda menulis kata sandi dalam perintah seperti su <username> -p <password>, kata sandi itu akan disimpan dalam teks biasa di riwayat bash Anda. Ini tentu merupakan masalah keamanan besar.

Jika Anda perlu menjalankan perintah dengan su(atau sudo) secara otomatis, tulis sebuah shellscript yang berisi perintah-perintah tersebut tanpa suatau sudodan jalankansu <username> script.sh

Wayne_Yux
sumber
1
su root script masih harus memasukkan passwd.
Dai Kaixian
@DaiKaixian ya, tetapi tidak disimpan di mana pun dan tidak ada yang bisa membacanya
Wayne_Yux
2
Anda dapat mencoba sesuatu seperti:. echo <passwd> | sudo -S <command-line>Meskipun tidak aman, tetapi berhasil.
Dai Kaixian
1
inti dari jawaban saya adalah, bahwa tidak menyimpan kata sandi dalam perintah. Jadi saya menyarankan untuk tidak melakukan itu
Wayne_Yux
-3

Jika Anda ingin menjalankan beberapa perintah tertentu sebagai pengguna baru, gunakan perintah berikut:
sudo -u {username} {command to be executed as the new user}

abu
sumber
Ini tidak menjawab pertanyaan. Pertanyaannya adalah bagaimana menangani kata sandi.
Stephen C