Secara teknis, kecuali jika pam
sudah diatur untuk memeriksa shell Anda, pam_shells
keduanya tidak dapat mencegah login Anda, jika Anda tidak di shell. Di sistem saya ukurannya bahkan berbeda, jadi saya curiga mereka benar-benar melakukan sesuatu. Jadi apa bedanya? mengapa mereka berdua ada? Mengapa saya harus menggunakan yang satu?
-rwxr-xr-x 1 root root 21K Feb 4 17:01 /bin/false
-rwxr-xr-x 1 root root 4.7K Mar 2 14:59 /sbin/nologin
/bin/false
harus ada di mana-mana tetapi tidak/sbin/nologin
: '/ sbin / nologin': Tidak ada file atau direktori tersebut. Adakah yang tahu mengapa ini/usr/sbin/nologin
bukan/sbin/nologin
di Debian dan Ubuntu?Jawaban:
Ketika
/sbin/nologin
ditetapkan sebagai shell, jika pengguna dengan shell itu login, mereka akan mendapatkan pesan sopan yang mengatakan 'Akun ini saat ini tidak tersedia.' Pesan ini dapat diubah dengan file/etc/nologin.txt
./bin/false
hanyalah sebuah biner yang segera keluar, menghasilkan false, ketika dipanggil, jadi ketika seseorang yang memilikifalse
shell login, mereka segera keluar ketikafalse
keluar. Menyetel shell/bin/true
memiliki efek yang sama dengan tidak mengizinkan seseorang untuk masuk tetapifalse
mungkin digunakan sebagai konvensitrue
karena itu jauh lebih baik dalam menyampaikan konsep bahwa orang tidak memiliki shell.Melihat
nologin
halaman manual, katanya dibuat pada 4.4 BSD (awal 1990-an) sehingga muncul lama setelahfalse
dibuat. Penggunaanfalse
sebagai shell mungkin hanya sebuah konvensi yang dibawa sejak awal UNIX.nologin
adalah opsi yang lebih ramah pengguna, dengan pesan yang dapat disesuaikan yang diberikan kepada pengguna yang mencoba masuk, jadi Anda secara teoritis ingin menggunakannya; tetapi keduanyanologin
danfalse
akan memiliki hasil akhir yang sama dari seseorang yang tidak memiliki shell dan tidak bisa ssh insumber
/usr/sbin/nologin
untuk distribusi berbasis Debian.Beberapa server FTP akan memungkinkan Anda mengakses FTP hanya jika Anda memiliki shell yang valid.
/sbin/nologin
dianggap sebagai shell yang valid, sedangkan/bin/false
tidak.(Saya pikir "valid" berarti status keluarnya adalah 0, tetapi
/etc/shells
mungkin juga masuk ke dalamnya, mungkin tergantung pada sistem, perangkat lunak FTP, dan konfigurasi Anda.)sumber
/etc/shells
. Tebakan saja ... Aku bisa salah./bin/false
adalah perintah sistem yang digunakan kapan saja Anda perlu meneruskan perintah ke program yang seharusnya tidak lebih dari keluar dengan kesalahan. Ini adalah pendamping/bin/true
. Keduanya adalah utilitas POSIX yang sangat tua dan standar dan tidak menghasilkan output apa pun menurut definisi. true kadang-kadang digunakan untuk skrip shell yang harus diulang tanpa batas, seperti:/usr/sbin/nologin
secara khusus dirancang untuk mengganti shell dan menghasilkan keluaran yang mengeluh Anda tidak bisa masuk. Sebelum ada, itu biasa digunakan/bin/false
untuk pengguna dummy, tetapi bisa membingungkan karena pengguna tidak tahu mengapa mereka ditendang.sumber
/bin/true
dan/bin/false
tidak selalu apa yang akan Anda dapatkan dalam skrip shell. Dalamzsh
true
danfalse
built-in, di manabash
menggunakan/bin/*
versiDi komputer saya,
nologin
selalu menampilkan pesan yang sama, dalam bahasa Inggris, mengabaikan argumen./bin/false
menanggapi--version
dan--help
dalam bahasa yang ditunjukkan oleh$LC_CTYPE
. Selain perbedaan kosmetik ini, mereka memiliki efek yang sama.Kegunaan-bijaksana,
nologin
lebih baik jika digunakan pada akun orang sungguhan yang berbicara bahasa Inggris. Dari segi keamanan, tidak ada perbedaan.sumber
false
lebih untuk akun sistem yang tidak memiliki pengguna nyata, dannologin
untuk akun yang dinonaktifkan.nologin
Versi Centos tidak membutuhkan argumen, tetapi dapat membaca pesan dari/etc/nologin.txt
./ bin / false only job adalah keluar dengan kode keluar bukan nol.
Cobalah di baris perintah:
Beberapa institusi menggunakan / bin / false di bidang shell pada file kata sandi. Jika pengguna mencoba masuk, shellnya adalah / bin / false, sehingga mereka segera keluar
sumber
Di linux,
/sbin/nologin
berasal dari proyek util-linux , sementara itu/bin/false
adalah bagian dari GNU Coreutils . Mereka melayani peran yang berbeda, dan nologin memiliki opsi untuk mencetak pesan untuk orang-orang yang memilikinya sebagai shell mereka yang masuk. Perintah linux berasal dari BSD, di mana mereka tampaknya memiliki sejarah panjang yang berbeda. FreeBSDfalse
hanya mengembalikan 1 , sedangkannologin
cek untuk memastikan itu berjalan pada TTY dan mengirim pesan ke syslog selama upaya login. Versi linux sedikit lebih rumit (false
melakukan segala macam hal yang menyenangkan dengan internasionalisasi untuk keluaran --help, saya berasumsi) tetapi pada dasarnya melakukan hal yang sama.sumber
Mereka bisa saja program yang sama, tetapi mereka memiliki arti yang berbeda. Nama program memberitahukan semuanya.
sumber
Keduanya melakukan pekerjaan yang kurang lebih sama tetapi
/bin/false
bermanfaat untuk pengguna yang tidak memiliki hak istimewa. Di sisi lain,/sbin/nologin
adalah untuk pengguna istimewa.sumber
/etc/passwd
. Saya baru saja melihat/etc/passwd
peregangan Debian yang baru diinstal. Pada kotak ini, hampir semua akun sistem (id pengguna <1000) memiliki/usr/sbin/nologin
shell, dengan beberapa pengecualian. Harap dicatat bahwa saya tidak setuju dengan jawaban @ pythondetective. Saya hanya berspekulasi apa yang mungkin membawanya ke kesimpulan ini. Tapi komentar saya agak terlambat.