Saya mencoba menggunakan perintah su untuk menjalankan aplikasi sebagai pengguna lain
Dalam hal ini saya mencoba menjalankan irssi
blah@ubuntu: su - [username] irssi
(enter password)
blah@ubuntu:
(nothing happens)
blah@ubuntu: su - [username] -c irssi
(nothing)
Saya menjalankan gksu dan mengatur parameter yang sama dan berfungsi, dan tidak meminta saya untuk kata sandi pengguna. Apa masalahnya? Dan bagaimana cara mengatasinya?
Saya harus perhatikan pengguna dibuat seperti ini
adduser --system --disabled-login [username]
jika ada bedanya .... huh.
irssi
memiliki masalah dan bahwa perintah su bekerja?Jawaban:
Ada beberapa masalah dengan perintah tersebut
su - irssi
.Perintah ini mencoba memulai sebuah shell yang dimiliki oleh pengguna yang bernama
irssi
.Ini akan gagal jika:
irssi
pengguna.irssi
akun pengguna dinonaktifkan.irssi
akun pengguna dinonaktifkan untuk login interaktif. Terkadang akun diizinkan untuk menggunakan layanan seperti FTP tetapi dilarang masuk secara normal dengan menyetel shell mereka ke sesuatu yang segera dihentikan/bin/false
. Kemudian login segera berakhir, tanpa pesan.irssi
pengguna.The
-
bendera membuatnya begitu shell mensimulasikan shell login awal - yaitu, sehingga benar-benar sangat banyak seperti penebangan sebagaiirssi
. Tanpa-
tanda, jikasu
perintah berhasil, Anda masih akan mendapatkan shell yang dimiliki olehirssi
, tetapi variabel lingkungan sepertiHOME
tidak akan berubah.Jika Anda ingin menjalankan program yang disebut
irssi
, Anda harus memohonsu
berbeda:Jika Anda keluar , itu sama dengan - itu mencoba menjalankan perintah sebagai root.
-c username
-c root
Atau Anda dapat memulai shell dan kemudian jalankan perintah :
su username -
irssi
).exit
.Menjalankan Perintah sebagai
root
Jika Anda ingin menjalankan
irssi
sebagairoot
,su
bukan cara untuk melakukannya. Login root dinonaktifkan secara default di Ubuntu, dan jarang ada alasan untuk mengaktifkannya kembali . Jika Anda telah mengaktifkanroot
login, maka Anda seharusnya bisasu
menjadiroot
. Alasan itu tidak perlu untuk mengaktifkanroot
akun adalah bahwa, apakah Anda melakukannya, Anda masih dapat menjalankan perintah sebagairoot
dengansudo
.Ketika Anda menjalankan perintah
sudo
, Anda memasukkan kata sandi Anda , bukan kata sandi pengguna yang identitasnya ingin Anda jalankan. Hanya administrator dapat menjalankan perintah sewenang-wenang sebagairoot
dengansudo
(kecuali jika Anda mengkonfigurasi ulangsudo
untuk memungkinkan orang lain untuk melakukannya, tentu saja). Jadi pengguna yang tidak diizinkan untuk mengelola sistem tidak diizinkan untuk menjalankan perintah sepertiroot
dengan kata sandi mereka sendiri.Untuk menjalankan
irssi
sebagairoot
dengansudo
:Dan Anda akan memasukkan Anda password ketika diminta, tidak
root
's.Kecuali kata sandi apa yang Anda masukkan, ini melakukan hal yang sama seperti:
Kecuali
sudo
versi dapat berhasil karena tidak memerlukanroot
akun untuk diaktifkan.Seperti halnya dengan
su
, Anda dapat menggunakansudo
untuk menjalankan perintah sebagai yang lain, bukanroot
pengguna . Untuk menjalankanirssi
sebagaiusername
dengansudo
:Jika Anda ingin
sudo
berperilaku sepertisu -
sehubungan denganHOME
--yaitu, Anda ingin menggunakanHOME
variabel lingkungan pengguna target , Anda dapat menjalankansudo
dengan-H
flag:Anda dapat memulai seluruh shell
sudo
, seperti yang Anda bisa lakukan dengansu
. Kecuali untuk kata sandi yang Anda masukkan, perintah ini memiliki efek yang sama dengansu
:Dan perintah ini memiliki efek yang sama dengan
su -
:(
i
Singkatan dari shell login awal .)Anda juga dapat memulai shell sebagai pengguna lain:
Bacaan Lebih Lanjut
sudo
Untuk mempelajari lebih lanjut
sudo
, lihat:sudo
situs (oleh penulissudo
).man sudo
Mengapa
gksu
bekerja padahalsu
tidak?gksu
mungkin bekerja dengan berlarisudo
.gksu
adalah sebuah frontend untuk keduanyasu
dansudo
. Di Ubuntu, itu default untuk menggunakansudo
(karena di Ubuntu,su
biasanya tidak digunakan untuk menjadiroot
, dan hanya cara sekunder untuk menjadi yang lain, bukanroot
pengguna).Anda dapat
gksu
menggunakansu
sebagai frontend dengan menjalankangksu --su-mode
.Anda dapat mengetahui apakah
gksu
dalamsu
mode atausudo
mode, dan (jika Anda mau) mengubah pengaturan ini, dengan menjalankangksu-properties
. Ini adalah pengaturan per pengguna.Ketika
gksu
dalamsudo
mode, ia berperilaku sama dengangksudo
.Bacaan Lebih Lanjut
gksu
sudo
".man gksu
gksu
web hulu (oleh pembuatgksu
).gksu
vs.gksudo
di Ubuntu.Analisis Pasca-Solusi
Anda akhirnya menemukan bahwa Anda dapat menjalankan perintah yang diperlukan dengan:
(Yang merupakan teknik yang tercantum di atas.)
Pada akhirnya, Anda melaporkan dua potong informasi, yang cukup untuk menjelaskan mengapa teknik lain gagal, tetapi itu berhasil:
The
username
akun dibuat dengan--disabled-login
bendera, yang membuatnya memiliki tanpa password (dan tidak ada cara lain penebangan di). Tanpa kata sandi tidak berarti Anda dapat masuk dengan kata sandi kosong . Ini berarti tidak ada kata sandi yang cukup untuk otentikasi. Dalam kombinasi dengan penghapusan cara otentikasi lainnya, ini berartiusername
tidak dapat mengautentikasi sama sekali.Jadi semua
su
solusi berbasis keluar.sudo
dapat bekerja, karena dengansudo
Anda tidak mengautentikasi sebagai pengguna yang akan Anda tiru. Sebagai gantinya, Anda harus diberi wewenang untuk menyamar sebagai mereka, dan Anda mengautentikasi diri Anda sendiri (yaitu, masukkan kata sandi Anda sendiri, bukan milik mereka).Dimungkinkan untuk menetapkan kata sandi pada akun, yang menghilangkan penghalang ini untuk masuk:
Namun, mungkin ada alasan bagus mengapa pengguna tidak diizinkan masuk. Misalnya, jika pengguna ini diizinkan masuk, dan masuk secara grafis, apakah masalah buruk akan muncul dari lingkungan pengguna atau hak istimewa yang kurang cocok untuk menjalankan aplikasi X11. ? Jika pengguna ini bisa masuk, apakah itu memungkinkan untuk masuk dari jarak jauh sebagai pengguna itu (untuk mesin-mesin di mana Anda telah membuka layanan jaringan)?
Jika Anda ingin menonaktifkannya kembali:
Terkait: Menonaktifkan kembali
root
akun setelah mengaktifkannya untuk sementara.The
username
account memiliki/bin/false
sebagai shell login-nya.Ketika shell like
bash
dijalankan sebagai shell login Anda, shell akan mengatur lingkungan Anda dan memberi Anda prompt interaktif yang dapat digunakan untuk mengontrol mesin./bin/false
Sebaliknya, ketika dijalankan, ia tidak melakukan apa-apa , dan melaporkan kegagalan . (Tidak/bin/true
melakukan apa-apa dan melaporkan keberhasilan.)The
false
dantrue
perintah yang berguna dalam scripting dan untuk berbagai tujuan pengujian, tetapi juga untuk menonaktifkan account sehingga ketika seseorang log in, sesi login mereka segera berakhir. Dengan begitu, kata sandi (atau cara otentikasi lainnya) dapat diaktifkan, dan orang-orang dapat masuk, hanya saja tidak untuk akses shell . Misalnya, jika ada server FTP, mereka masih dapat mengakses akun mereka melalui FTP. Jika ada server SSH, mereka tidak akan bisa mendapatkan shell melalui SSH, tetapi mereka masih bisa menggunakansftp
danscp
mentransfer file.Sejak
username
's shell login adalah nonfungsional, perintah seperti , , , dan tidak bisa bekerja.su username
su - username
sudo -u username -s
sudo -u username -i
Tetapi perintah yang tidak memberikan shell, suka atau masih bisa bekerja.
sudo -u username command
su username -c 'command'
Karena perintah dapat dijalankan, Anda dapat mengubah shell login pengguna menjadi sesuatu yang fungsional:
Namun, ini juga harus dilakukan dengan hati-hati, karena mungkin ada alasan bagus untuk menonaktifkan login interaktif untuk pengguna.
Di sini,
username
keduanya telah menonaktifkan kata sandi dan shell "dinonaktifkan". Tidak adanya kata sandi yang berfungsi mencegah semuasu
solusi berbasis dari bekerja, sementara tidak adanya shell login interaktif yang berfungsi mencegah semua solusi pemijahan shell bekerja (kecuali secara manual menggunakan shell, seperti ).sudo -u username bash
sudo -u username command
adalah apa yang tersisa.sumber