Jawaban ini seharusnya tetap membantu Anda, bahkan dengan menyunting pertanyaan itu. Secara khusus, akun yang dibuat dengan
--disabled-login
tidak memiliki kata sandi dan tidak ada cara lain untuk masuk , tetapi masih mungkin untuk menggunakan sudo
(dijelaskan di bawah) untuk menjalankan perintah atau shell sebagai pengguna. Ini sebenarnya adalah bagaimana
root
akun diatur di Ubuntu.
Ada beberapa masalah dengan perintah tersebut su - irssi
.
Perintah ini mencoba memulai sebuah shell yang dimiliki oleh pengguna yang bernamairssi
.
Ini akan gagal jika:
- Tidak ada
irssi
pengguna.
- The
irssi
akun pengguna dinonaktifkan.
- The
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.
- Kata sandi yang Anda masukkan tidak benar untuk
irssi
pengguna.
The -
bendera membuatnya begitu shell mensimulasikan shell login awal - yaitu, sehingga benar-benar sangat banyak seperti penebangan sebagai irssi
. Tanpa -
tanda, jika su
perintah berhasil, Anda masih akan mendapatkan shell yang dimiliki oleh irssi
, tetapi variabel lingkungan seperti HOME
tidak akan berubah.
Jika Anda ingin menjalankan program yang disebut irssi
, Anda harus memohon su
berbeda:
su username - -c irssi
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 :
- Mulai shell dengan .
su username -
- Dalam shell, jalankan perintah (
irssi
).
- Jika sudah selesai, biarkan shell berjalan
exit
.
Menjalankan Perintah sebagai root
Jika Anda ingin menjalankan irssi
sebagai root
, su
bukan cara untuk melakukannya. Login root dinonaktifkan secara default di Ubuntu, dan jarang ada alasan untuk mengaktifkannya kembali . Jika Anda telah mengaktifkan root
login, maka Anda seharusnya bisa su
menjadi root
. Alasan itu tidak perlu untuk mengaktifkan root
akun adalah bahwa, apakah Anda melakukannya, Anda masih dapat menjalankan perintah sebagai root
dengan sudo
.
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 sebagai root
dengan sudo
(kecuali jika Anda mengkonfigurasi ulang sudo
untuk memungkinkan orang lain untuk melakukannya, tentu saja). Jadi pengguna yang tidak diizinkan untuk mengelola sistem tidak diizinkan untuk menjalankan perintah seperti root
dengan kata sandi mereka sendiri.
Untuk menjalankan irssi
sebagai root
dengan sudo
:
sudo irssi
Dan Anda akan memasukkan Anda password ketika diminta, tidak root
's.
Kecuali kata sandi apa yang Anda masukkan, ini melakukan hal yang sama seperti:
su -c irssi
Kecuali sudo
versi dapat berhasil karena tidak memerlukan root
akun untuk diaktifkan.
Seperti halnya dengan su
, Anda dapat menggunakan sudo
untuk menjalankan perintah sebagai yang lain, bukan root
pengguna . Untuk menjalankan irssi
sebagai username
dengan sudo
:
sudo -u username irssi
Jika Anda ingin sudo
berperilaku seperti su -
sehubungan denganHOME
--yaitu, Anda ingin menggunakan HOME
variabel lingkungan pengguna target , Anda dapat menjalankan sudo
dengan -H
flag:
sudo -H irssi
sudo -H -u username irssi
Anda dapat memulai seluruh shell sudo
, seperti yang Anda bisa lakukan dengan su
. Kecuali untuk kata sandi yang Anda masukkan, perintah ini memiliki efek yang sama dengan su
:
sudo -s
Dan perintah ini memiliki efek yang sama dengan su -
:
sudo -i
( i
Singkatan dari shell login awal .)
Anda juga dapat memulai shell sebagai pengguna lain:
sudo -u username -s
sudo -u username -i
Bacaan Lebih Lanjut sudo
Untuk mempelajari lebih lanjutsudo
, lihat:
Mengapa gksu
bekerja padahal su
tidak?
gksu
mungkin bekerja dengan berlarisudo
.
gksu
adalah sebuah frontend untuk keduanya su
dan sudo
. Di Ubuntu, itu default untuk menggunakan sudo
(karena di Ubuntu, su
biasanya tidak digunakan untuk menjadi root
, dan hanya cara sekunder untuk menjadi yang lain, bukan root
pengguna).
Anda dapat gksu
menggunakan su
sebagai frontend dengan menjalankan gksu --su-mode
.
Anda dapat mengetahui apakah gksu
dalam su
mode atau sudo
mode, dan (jika Anda mau) mengubah pengaturan ini, dengan menjalankan gksu-properties
. Ini adalah pengaturan per pengguna.
Ketika gksu
dalam sudo
mode, ia berperilaku sama dengan gksudo
.
Bacaan Lebih Lanjut gksu
Analisis Pasca-Solusi
Anda akhirnya menemukan bahwa Anda dapat menjalankan perintah yang diperlukan dengan:
sudo -u username irssi
(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 berarti username
tidak dapat mengautentikasi sama sekali.
Jadi semua su
solusi berbasis keluar. sudo
dapat bekerja, karena dengan sudo
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:
sudo passwd username
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:
sudo passwd -dl username
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
dan true
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 menggunakan sftp
dan scp
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:
sudo chsh -s /bin/bash username
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 semua su
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.