it-swarm-id.com

Apa perbedaan antara / sbin / nologin dan / bin / false

Secara teknis, kecuali pam diatur untuk memeriksa Shell Anda dengan pam_shells tidak satupun dari ini benar-benar 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 menggunakan yang satu di atas yang lain?

-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
185
xenoterracide

Kapan /sbin/nologin ditetapkan sebagai Shell, jika pengguna dengan Shell itu masuk, 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 memiliki false saat Shell masuk, mereka segera keluar ketika false keluar. Mengatur Shell ke /bin/true memiliki efek yang sama dengan tidak mengizinkan seseorang untuk masuk tetapi false mungkin digunakan sebagai konvensi lebih dari true karena jauh lebih baik dalam menyampaikan konsep bahwa orang tersebut tidak memiliki Shell.

Melihat halaman manual nologin, ia mengatakan halaman itu dibuat pada 4.4 BSD (awal 1990-an) sehingga muncul lama setelah false dibuat. Penggunaan false 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 keduanya nologin dan false akan memiliki hasil akhir yang sama dari seseorang yang tidak memiliki Shell dan tidak dapat melakukan ssh.

212
Mark McKinstry

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.)

29
Mikel

/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 terkadang digunakan untuk skrip Shell yang harus diulang tanpa batas, seperti:

while true; do
    ...
    # Waste time
    if [ $wasted_time -gt 100000 ]; then
        exit 0
    fi
    ...
done

/usr/sbin/nologin secara khusus dirancang untuk menggantikan Shell dan menghasilkan keluaran yang mengeluh Anda tidak bisa masuk. Sebelum ada, sudah umum digunakan /bin/false untuk pengguna tiruan, tetapi bisa membingungkan karena pengguna tidak tahu mengapa mereka memulai.

14
penguin359

Di komputer saya, nologin selalu menampilkan pesan yang sama, dalam bahasa Inggris, mengabaikan argumen. /bin/false merespons --version dan --help dalam bahasa yang ditunjukkan oleh $LC_CTYPE. Selain perbedaan kosmetik ini, mereka memiliki efek yang sama.

Dari segi kegunaan, nologin lebih baik jika digunakan pada akun orang sungguhan yang berbicara bahasa Inggris. Dari segi keamanan, tidak ada perbedaan.

/ bin/false only job adalah keluar dengan kode keluar bukan nol.

Cobalah di baris perintah:

$:> /bin/false
$:> echo $?
1
$:>

Beberapa institusi menggunakan/bin/false di bidang Shell pada file kata sandi. Jika pengguna mencoba masuk, Shell adalah/bin/false, sehingga mereka segera keluar

3
shellter

Di linux, /sbin/nologin berasal dari proyek til-linux , sementara /bin/false adalah bagian dari GNU Coreutils . Mereka melayani peran yang berbeda, dan nologin memiliki pilihan untuk mencetak pesan untuk orang-orang yang memilikinya sebagai Shell mereka yang masuk. Perintah linux datang dari BSD, di mana mereka tampaknya memiliki sejarah panjang yang berbeda. FreeBSD false hanya mengembalikan 1 , sedangkan nologin memeriksa untuk memastikannya berjalan pada TTY dan mengirim pesan ke syslog selama upaya login. Versi linux sedikit lebih rumit (false melakukan semua hal yang menyenangkan dengan internasionalisasi untuk keluaran --help, saya kira) tetapi pada dasarnya melakukan hal yang sama.

3
jsbillings

Mereka bisa saja program yang sama, tetapi mereka memiliki arti yang berbeda. Nama program memberitahukan semuanya.

  • / bin/false dimaksudkan untuk mengembalikan nilai yang salah. Dijalankan sebagai program.
  • / bin/nologin dimaksudkan untuk menunjukkan kepada pengguna bahwa tidak ada login yang diizinkan untuk sebuah akun. (Ini digunakan Shell login.)
1
BillThor