it-swarm-tr.com

/ Sbin / nologin ve / bin / false arasındaki fark nedir

pam Kabuğunuzu pam_shells Shell'de değilseniz bunlardan hiçbiri girişinizi engelleyemez. Sistemimde bile farklı boyutlardalar, bu yüzden aslında bir şey yaptıklarından şüpheleniyorum. Peki fark nedir? neden ikisi de var? Neden birini diğerinin üzerinde kullanayım?

-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

Ne zaman /sbin/nologin, Kabuk olarak ayarlanır; söz konusu Kabuğa sahip kullanıcı oturum açarsa, 'Bu hesap şu anda kullanılamıyor' diyen kibar bir mesaj alacaktır. Bu mesaj /etc/nologin.txt.

/bin/false sadece çağıran, çağrıldığında yanlış döndüren bir ikili dosyadır, bu nedenle Shell oturum açtığında false olan biri oturum açtığında, false çıktığında hemen oturumu kapatılır. Kabuğu /bin/true, birisinin oturum açmasına izin vermemekle aynı etkiye sahiptir, ancak false muhtemelen true üzerinde bir sözleşme olarak kullanılır, çünkü kişinin Shell içermediği kavramı iletmek çok daha iyidir.

nologin'nin man sayfasına bakıldığında, sayfanın 4.4 BSD'de (1990'ların başında) oluşturulduğunu ve bu nedenle false'nin oluşturulmasından çok sonra geldiğini söylüyor. Kabuk olarak false kullanımı, muhtemelen sadece UNIX'in ilk günlerinden itibaren yapılan bir sözleşmedir.

nologin, giriş yapmaya çalışan kullanıcıya verilen özelleştirilebilir bir mesajla daha kullanıcı dostu bir seçenektir, bu yüzden teorik olarak bunu kullanmak istersiniz; ancak nologin ve false öğelerinin her ikisi de Shell'e sahip olmayan ve içeri giremeyen birinin sonucu ile aynı olur.

212
Mark McKinstry

Bazı FTP sunucuları, yalnızca geçerli bir Kabuğunuz varsa FTP erişimine izin verir. /sbin/nologin geçerli bir Kabuk olarak kabul edilirken, /bin/false değil.

(Bence "geçerli", çıkış durumunun 0 olduğu anlamına gelir, ancak /etc/shells de gelebilir, muhtemelen sisteme, FTP yazılımına ve yapılandırmanıza bağlıdır.)

29
Mikel

/bin/false, bir hata ile çıkmaktan başka bir şey yapmaması gereken bir programa komut iletmeniz gerektiğinde kullanılan bir sistem komutudur. Bu, /bin/true. Her ikisi de çok eski ve standart POSIX yardımcı programlarıdır ve tanım gereği herhangi bir çıktı üretmezler. true bazen süresiz olarak döngüye girmesi gereken bir Shell betiği için kullanılır:

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

/usr/sbin/nologin özellikle bir Kabuğu değiştirmek için tasarlanmıştır ve giriş yapamayacağınızdan şikayet eden çıktılar üretir. Var olmadan önce /bin/false kukla kullanıcılar için, ancak kullanıcı neden tekmelendiklerini bilmediğinden kafa karıştırıcı olabilir.

14
penguin359

Makinemde, nologin her zaman aynı mesajı, İngilizce olarak, bağımsız değişkenleri yok sayıyor. /bin/false, --version İle belirtilen dilde --help Ve $LC_CTYPE 'A yanıt verir. Bu kozmetik farklılıkların dışında, aynı etkiye sahiptirler.

Kullanılabilirlik açısından, nologin, İngilizce konuşan gerçek bir kişinin hesabında kullanılıyorsa daha iyidir. Güvenlik açısından fark yok.

/ bin/yalnızca false işi sıfır olmayan bir çıkış koduyla çıkmaktır.

Komut satırında deneyin:

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

Bazı kurumlar parola dosyasının Shell alanında/bin/false kullanır. Kullanıcı giriş yapmaya çalışırsa, Kabuk/bin/false olur, bu yüzden hemen çıkar

3
shellter

Linux'ta, /sbin/nologin, til-linux projesinden gelirken, /bin/false, GNU Coreutils 'ın bir parçasıdır. Farklı rollere hizmet ederler ve nologin, giriş yapan Shell'i olan insanlar için bir mesaj yazdırma seçeneğine sahiptir. Linux komutları BSD'den gelir, burada farklı olma öyküsü vardır. FreeBSD false sadece 1 değerini döndürür , nologin bunun olduğundan emin olmak için kontrol eder bir TTY üzerinde çalışır ve giriş denemeleri sırasında syslog'a bir mesaj gönderir. Linux sürümleri biraz daha karmaşıktır (false --help çıktısı için uluslararasılaştırma ile her türlü eğlenceli şeyi yapıyor), ama aslında aynı şekilde.

3
jsbillings

Aynı program olabilirler, ama farklı anlamları vardır. Program adı her şeyi anlatıyor.

  • / bin/false, yanlış bir değer döndürmeyi amaçlamaktadır. Program olarak çalıştırılır.
  • / bin/nologin, kullanıcıya bir hesap için oturum açmaya izin verilmediğini göstermeyi amaçlamaktadır. (Oturum açma Kabuğu kullanılır.)
1
BillThor