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


169

Teknik olarak pam, kabuğunuzu kontrol etmek için ayarlanmadıkça pam_shells, bunların hiçbiri kabuğumda değilseniz giriş yapmanıza engel olamaz. Sistemimde bile farklı boyutlardalar, bu yüzden gerçekten bir şeyler yaptıklarından şüpheleniyorum. Öyleyse fark nedir? neden ikisi de var? Neden birini diğerine alayım ki?

-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


Yol /bin/falseher yerde bulunmalı fakat /sbin/nologin: / sbin / nologin ': Böyle bir dosya ya da dizin yok. /usr/sbin/nologinBunun neden /sbin/nologinDebian ve Ubuntu'da olduğu hakkında fikrin var mı?
baptx

4
Neden / bin / false "1" dönüş kodu döndürmek için 21 kod alıyor? (ve / sbin / nologin yalnızca 4.7k sürüyor)
Mark Stewart


1
@nxnev Evet, ELF'in ek yükünü düşünmedi. Ve eski IBM günlerimden sonra basit bir op-kod montaj talimatı olan bir IEFBR14 programı vardı: BR 14 - Şube 14, Şantiye 14'teki herhangi bir şeye ayarlanan dönüş kodu ile programı sonlandıracak.
Mark Stewart,

Yanıtlar:


198

Ne zaman /sbin/nologino kabuk ile kullanıcı günlükleri, onlar diyerek kibar bir ileti alırsınız, kabuk olarak ayarlanır 'Bu hesap şu anda mevcut değildir.' Bu mesaj dosya ile değiştirilebilir /etc/nologin.txt.

/bin/falsesadece hemen çıkan bir ikilidir, çağrıldığında yanlış döndürür, çağrıldığında falsekabuk değiştirirse, çıkış yapan hemen giriş yapar false. Kabuğun ayarlanması, /bin/truebirisinin oturum açmasına izin vermeyecek şekilde aynı etkiye sahip ancak kişinin bir kabuğa sahip olmadığı kavramını aktarmakta çok daha iyi falseolduğundan muhtemelen bir kongre olarak kullanılıyor true.

Erkek nologinsayfasına bakıldığında, 4.4 BSD'de (1990'ların başında) oluşturulduğunu ve çok uzun bir süre sonra oluşturulduğunu söylüyor false. Kullanımı falsebir kabuk olarak muhtemelen UNIX ilk günlerinde taşınan sadece bir kuralıdır.

nologindaha kullanıcı dostu bir seçenektir, giriş yapmaya çalışan kullanıcıya verilen özelleştirilebilir bir mesajla, teorik olarak bunu kullanmak istersiniz; ancak her iki nologinve falsebirisi bir kabuğa sahip olmayan ve içinde ssha mümkün olmayan ile aynı sonuca sahip olacaktır.


10
/usr/sbin/nologinDebian tabanlı dağıtımlar için.
Diemo

3
En azından BSD uygulaması, girişin opensource.apple.com/source/system_cmds/system_cmds-735/… ' de görüldüğü gibi syslog girişini de kaydeder , oysa / bin / false hiçbir şeyi
kaydetmez

28

Bazı FTP sunucuları, yalnızca geçerli bir kabuğunuz varsa FTP erişimine izin verir. /sbin/nologingeçerli bir kabuk olarak kabul edilir, oysa /bin/falsedeğildir.

("Geçerli" nin, çıkış durumunun 0 olduğu anlamına geldiğini düşünüyorum, ancak /etc/shellsbununla da karşılaşabilir, muhtemelen sisteme, FTP yazılımına ve yapılandırmanıza bağlıdır.)


1
evet, muhtemelen pam kullanarak ftp programının bir parçası ve dediğiniz gibi kontrol eden pam_shells kullanarak pam /etc/shells. Sadece bir tahmin ... Yanılıyor olabilirim.
xenoterracide

4
Sadece hem Ubuntu 8.04 hem de 14.04'ü kontrol ettim. Nologin komutu, false değerine benzer bir durum 1 ile çıkar ve doğru, yanlış veya nologin hiçbiri / etc / shells içine dahil edilmez. Öyle olsaydı, bir kullanıcı böyle bir kabuk seçmek için chsh kullanabilir ve hesabından kendini kilitleyebilirdi.
penguin359

12

/bin/falseHerhangi bir zamanda bir hatayla çıkmaktan başka bir şey yapmaması gereken bir programa komut iletmeniz gerektiğinde kullanılan bir sistem komutudur. Bu bir arkadaştır /bin/true. Bunların her ikisi de çok eski ve standart POSIX yardımcı programlarıdır ve hiçbiri tanımı gereği herhangi bir çıktı üretmez. true bazen süresiz olarak çalışması gereken bir kabuk 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özel olarak bir kabuğun yerini almak üzere tasarlanmıştır ve oturum açamayacağınız şikâyetleri üretir. /bin/falseVar olmadan önce, sahte kullanıcılar için yaygındı , ancak kullanıcı neden atıldıklarını bilmediğinden kafa karıştırıcı olabilirdi.


4
Bunu dikkate değer /bin/trueve /bin/falseher zaman bir kabuk betiğinde alacaksınız değildir. Gelen zsh trueve falseyerleşik ins vardır bashkullanır /bin/*versiyonlarını
xenoterracide

4

Makinemde, nologinher zaman aynı mesajı görüntüler, İngilizce olarak, bağımsız değişkenleri yok sayarak. /bin/falsecevap --versionve --helpgösterdiği dilde $LC_CTYPE. Bu kozmetik farklılıklar dışında, aynı etkiye sahiptirler.

Kullanılabilirlik açısından, nologinİngilizce bilen gerçek bir kişinin hesabında kullanılırsa daha iyidir. Güvenlik açısından hiçbir fark yoktur.


4
Görünüşe göre falsegerçek bir kullanıcısı olmayan sistem hesapları nologiniçin ve engelli hesapları içindir.
xenoterracide

1
İşletim sisteminiz nedir? Centos nologinversiyonu hiçbir argüman almaz ancak mesajlarını okuyabilir /etc/nologin.txt.
Alexander Gonchiy

3

/ bin / false sadece iş sıfır olmayan bir çıkış kodu ile çıkmaktır.

Komut satırında deneyin:

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

Bazı kurumlar, şifre dosyasının kabuk alanında / bin / false komutunu kullanır. Kullanıcı giriş yapmaya çalışırsa, kabuk / bin / false olur, bu yüzden hemen çıkarlar


2

Linux üzerinde /sbin/nologingelir util-linux ederken, projenin /bin/falsebir parçası olan GNU coreutils . Farklı roller üstlenirler ve nologin, giriş yapan kabuğu gibi insanlar için bir mesaj basma seçeneğine sahiptir. FreeBSD falsebasitçe 1nologin değerini döndürür , bir TTY'de çalıştığından emin olmak için kontrol eder ve giriş denemeleri sırasında syslog'a bir mesaj gönderir. Linux versiyonları biraz daha karmaşıktır ( false--help, sanırım) için uluslararasılaştırma ile her türlü eğlenceli şeyi yapmak, ancak esasen aynı şekilde yapmak.


1

Aynı program olabilirler, ancak farklı anlamları var. Programın adı her şeyi anlatıyor.

  • / bin / false, yanlış bir değer döndürmeyi amaçlar. Program olarak çalıştırılır.
  • / bin / nologin, kullanıcıya bir hesap için giriş yapılmasına izin verilmediğini gösterme amaçlıdır. (Bir giriş kabuğu kullanılır.)

-4

Her ikisi de aynı işi yapar ya da daha az yapar ancak /bin/falseayrıcalıklı olmayan kullanıcılar için kullanışlıdır. Öte yandan, /sbin/nologinayrıcalıklı kullanıcılar içindir.


4
Oh, bu sonuca nasıl geldiniz?
fpmurphy

Muhtemelen araştırdı /etc/passwd. /etc/passwdYeni kurulmuş bir Debian uzantısına baktım . Bu kutuda, neredeyse tüm sistem hesaplarında (kullanıcı kimlikleri <1000) /usr/sbin/nologinbirkaç istisna dışında kabuk olarak bulunur. Lütfen @ pythondetective'in cevabını kabul etmediğimi unutmayın. Sadece onu bu sonuca götürebilecek olan şeyleri söylüyorum. Benim yorumum yine de biraz geç.
Binarus

Hayır! varsayılan giriş kabuğu, ayrıcalıklarla aynı değildir.
MUY Belçika

büyük bir "dedektif" değil
Emobe
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.