Jawaban ini seharusnya tetap membantu Anda, bahkan dengan menyunting pertanyaan itu. Secara khusus, akun yang dibuat dengan
--disabled-logintidak 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
rootakun 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
irssipengguna.
- The
irssiakun pengguna dinonaktifkan.
- The
irssiakun 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
irssipengguna.
The -bendera membuatnya begitu shell mensimulasikan shell login awal - yaitu, sehingga benar-benar sangat banyak seperti penebangan sebagai irssi. Tanpa -tanda, jika superintah berhasil, Anda masih akan mendapatkan shell yang dimiliki oleh irssi, tetapi variabel lingkungan seperti HOMEtidak akan berubah.
Jika Anda ingin menjalankan program yang disebut irssi , Anda harus memohon suberbeda:
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 irssisebagai root, subukan cara untuk melakukannya. Login root dinonaktifkan secara default di Ubuntu, dan jarang ada alasan untuk mengaktifkannya kembali . Jika Anda telah mengaktifkan rootlogin, maka Anda seharusnya bisa sumenjadi root. Alasan itu tidak perlu untuk mengaktifkan rootakun adalah bahwa, apakah Anda melakukannya, Anda masih dapat menjalankan perintah sebagai rootdengan 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 rootdengan sudo(kecuali jika Anda mengkonfigurasi ulang sudountuk memungkinkan orang lain untuk melakukannya, tentu saja). Jadi pengguna yang tidak diizinkan untuk mengelola sistem tidak diizinkan untuk menjalankan perintah seperti rootdengan kata sandi mereka sendiri.
Untuk menjalankan irssisebagai rootdengan 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 sudoversi dapat berhasil karena tidak memerlukan rootakun untuk diaktifkan.
Seperti halnya dengan su, Anda dapat menggunakan sudountuk menjalankan perintah sebagai yang lain, bukan rootpengguna . Untuk menjalankan irssisebagai usernamedengan sudo:
sudo -u username irssi
Jika Anda ingin sudo berperilaku seperti su -sehubungan denganHOME --yaitu, Anda ingin menggunakan HOMEvariabel lingkungan pengguna target , Anda dapat menjalankan sudodengan -Hflag:
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
( iSingkatan 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 gksubekerja padahal sutidak?
gksumungkin bekerja dengan berlarisudo .
gksuadalah sebuah frontend untuk keduanya su dan sudo. Di Ubuntu, itu default untuk menggunakan sudo(karena di Ubuntu, subiasanya tidak digunakan untuk menjadi root, dan hanya cara sekunder untuk menjadi yang lain, bukan rootpengguna).
Anda dapat gksumenggunakan susebagai frontend dengan menjalankan gksu --su-mode.
Anda dapat mengetahui apakah gksudalam sumode atau sudomode, dan (jika Anda mau) mengubah pengaturan ini, dengan menjalankan gksu-properties. Ini adalah pengaturan per pengguna.
Ketika gksudalam sudomode, 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 usernameakun dibuat dengan --disabled-loginbendera, 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 usernametidak dapat mengautentikasi sama sekali.
Jadi semua susolusi berbasis keluar. sudodapat bekerja, karena dengan sudoAnda 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 rootakun setelah mengaktifkannya untuk sementara.
The usernameaccount memiliki /bin/falsesebagai shell login-nya.
Ketika shell like bashdijalankan sebagai shell login Anda, shell akan mengatur lingkungan Anda dan memberi Anda prompt interaktif yang dapat digunakan untuk mengontrol mesin.
/bin/falseSebaliknya, ketika dijalankan, ia tidak melakukan apa-apa , dan melaporkan kegagalan . (Tidak /bin/truemelakukan apa-apa dan melaporkan keberhasilan.)
The falsedan trueperintah 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 sftpdan scpmentransfer file.
Sejak username's shell login adalah nonfungsional, perintah seperti , , , dan tidak bisa bekerja.su usernamesu - usernamesudo -u username -ssudo -u username -i
Tetapi perintah yang tidak memberikan shell, suka atau masih bisa bekerja.sudo -u username commandsu 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, usernamekeduanya telah menonaktifkan kata sandi dan shell "dinonaktifkan". Tidak adanya kata sandi yang berfungsi mencegah semua susolusi 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.