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


69

Sık sık, bir kullanıcı hesabının kabuğunu ayarlayarak devre dışı bırakılması gerektiğini önerdiğini duydum /bin/false. Ancak, mevcut Linux sistemlerimde, çok sayıda mevcut hesabın (hepsi hizmet hesapları) /sbin/nologinbunun yerine bir kabuğunun bulunduğunu görüyorum .

/sbin/nologinKullanıcının hesabın devre dışı bırakıldığını belirten bir mesaj yazan ve ardından çıktıktan sonra man sayfasından bakın . Muhtemelen /bin/falsehiçbir şey basmazdı .

Ben de görüyoruz /sbin/nologinlistelenen /etc/shellsiken, /bin/falsedeğil.

Adam sayfa FTP bir kabuk ile kullanıcılarının erişimini devre dışı söylüyor değil listelenen /etc/shellsve diğer programlar aynı şeyi olabileceğini ima eder. Bu, birinin /sbin/nologinkabuğunu olan bir hesapla FTP'ye giriş yapabileceği anlamına mı geliyor ?

Buradaki fark nedir? Bunlardan hangisini bir kullanıcı hesabını devre dışı bırakmak için kullanmalıyım, hangi durumlarda? Bir girişin başka hangi etkileri /etc/shellsvar?



1
İşe yarayan genel bilgi olarak. Özellikle sistem yönetimi perspektifinden düşünüyorum.
Michael Hampton

Sadece bir arka plan olarak demek istedim.
dmourati

Yanıtlar:


70

/bin/false/bin/trueunix'in özelliklerin eksiksiz olmasını sağlamak için bazı soyut anlamda faydalı olan bir yardımcı programdır . Bununla birlikte, bu programlar için ortaya çıkan amaçlar bulunmuştur; geri dönüşü ne olursa olsun, /some/program || /bin/trueher zaman boole olarak değerlendirecek olan BASH deyimini düşünün .$? = 0/some/program

Belirttiğiniz /bin/falsegibi, ortaya çıkmış bir kullanım, kullanıcıların giriş yapmasına izin verilmeyen boş bir kabuk gibidir. Bu durumda, sistem tam olarak çalışmamış gibi davranır.

POSIX (yanlış olabilirim ve SUS olabilir), bu komutun her ikisini de, uygun boolean değerini döndürmekten başka hiçbir şey yapmamaya zorlar.

/sbin/nologinbenzer davranışı olan /bin/false(boolean false döndürür), ancak çıktı /bin/falsealması yasak olan bir BSD yardımcı programıdır . Bunun, kullanıcının ne olduğunu anlamasına yardımcı olması gerekir, ancak pratikte birçok terminal emülatörü, kabuk sona erdiğinde basitçe kapanacak ve mesajı bazı durumlarda okunaksız hale getirecektir.

Listeye küçük amaç yoktur /sbin/nologiniçinde /etc/shells. Bunun standart etkisi, kullanıcılar kendi kabuklarını değiştirirken /etc/shellskullanılabilecekleri izin verilen programları listelemektir chsh(ve kendi kabuğunuzu değiştirmek için makul bir neden yoktur /sbin/nologin). Süper kullanıcı herhangi birinin kabuğunu herhangi bir şeye değiştirebilir. Ancak, her iki listelemek isteyebilirsiniz /sbin/nologinve /bin/falsede /etc/rshkullanarak kabuk değiştirmesini bu kabuklar kullanıcılara yasaklamak, hangi chshonlar bir kabuk elde talihsiz olay.

FTP servetleri / etc / shells içinde olmayan bir kabuğa sahip kullanıcılara erişimi engelleyebilir veya istedikleri herhangi bir mantığı kullanabilirler. FTP çalıştırmadan kaçınılması gerekir, çünkü sftp(benzer işlevler sağlar) benzer fakat güvenlidir. Bazı siteler /sbin/nologin, kabuk erişimini devre dışı bırakmak için sftp erişimine izin verirken kullanır /etc/shells. Kullanıcının cronjobs oluşturmasına izin verilirse, bu bir arka kapı açabilir.

Her iki durumda scpda geçersiz bir kabukla çalışmaz. scponlyBu durumda bir kabuk olarak kullanılabilir.

Ek olarak, kabuk seçimi su -(AKA su -l) çalışmasını etkiler . Özellikle, /sbin/nologinkabuk çıktısı stdout'a basılacaktır; bu durum böyle olamaz /bin/false. Her iki durumda da komutları çalıştırmak su -clbaşarısız olur.

Sonunda, cevap:

Bir hesap devre dışı bırakmak için, bunların hiçbiri bağlıdır, bunlarla kabuğun ayarlanması /sbin/nologin(sürece bilgilendirme amaçlı /sbin/nologinolduğunu /etc/shellshangi noktada kullanması gereken nokta, /bin/falseolmamalı ki,). Bunun yerine, parola alanını ayarlamak /etc/passwdiçin !güvencesindedir, crypthiçbir şifreler için geçerli olması. /etc/shadowHataları önlemek için karmayı aynı şekilde ayarlamayı düşünün . passwd -lbunu senin için yapacağım.

Bir hesabı devre dışı bırakmanın üçüncü yolu, hesap son kullanma tarihi alanını eski bir tarihe (örn. usermod --expiredate 1) Ayarlamaktır . Bu, kurulumunuzun kullanıcıların unix hesaplarına parola olmadan kimlik doğrulaması yapmalarına izin vermesi ve kullandıkları hizmetin kabuk gerektirmemesi durumunda girişleri engelleyecektir.


9
Bu cevap mükemmel farklı seçenekler özetlemektedir (ve soru cevaplar), ben de, en azından hisse senedi Debian depolarında bulunuyor bu kullanım şeklini yararlı bir kaynak, işaret etmek ihtiyacı hissetti titantoolspaketin: noshell. Bu sözde noshellkabuk, erişim yetkisine izin vermemekle birlikte syslog'da hesapları kabuk olarak kullanarak kullanmaya çalıştığı denetleme yetenekleri sağlar .
dawud,

1
Hiçbir uydurma olmaktan uzaktır ancak kullanımı, belirli bir bağbozumu (öksürük) ait sysadmins arasında oldukça yaygın aslında /bin/falsegiriş olmamalıdır insanlar için bir giriş kabuğu olarak.
MadHatter

2
Kıyamet, amaçlanan kullanım amacı değildir. Ben anakronistik demedim; Her gün görüyorum :)
Falcon Momot 28:13

1
Hesabın geçersiz şifreyle devre dışı bırakılması ssh ile çok iyi çalışmıyor. Kullanıcı daha önce açık anahtar kimlik doğrulaması kurmayı başarmıştı, yine de girebilirdi.
joshudson

3
sshd, pubkey auth ile bile olsa, belirli şekillerde kilitlenmiş hesapların (özellikle de!
Falcon Momot 13:14

13

Bu konuda biraz araştırma yaptıktan sonra, kullandığınız yöntem neyi kilitlemeniz gerektiğine bağlıdır. Bir kullanıcı bu set ile birlikte kabukta oturum açarsa, en azından RHEL türevlerinde This account is currently unavailable.dosyayı oluşturarak bunu değiştirebileceğiniz konusunda Not'un etkisine bir mesaj alacak /etc/nologin.txt.

Bildiğiniz gibi /bin/falsebir kabuk değil. Çalışma şekli, ikili çıkıştan hemen sonra çıkış yapan false değerini döndürmesidir. /bin/trueAynı etkiyi elde edeceğini unutmayın .

FTP sorunuzla ilgili olarak: Evet, /sbin/nologinkullanıcının FTP'ye giriş yapmasına izin verecek şekilde ayarlanmış kabuğun ayarlanmış olması /bin/falseveya /bin/truekullanıcının herhangi bir hizmete giriş yapmasını tamamen engellemesi konusunda haklısınız .

Bu nedenle, kullanıcının herhangi bir hizmete giriş yapmasını önlemek /bin/falseveya /bin/trueen iyisi /sbin/nologinolmakla birlikte, kullanıcının hesabın etkin olmadığı ve yalnızca SSH / yerel olduğunda en iyi şekilde kullanıldığı konusunda kullanıcıya SSH veya yerel konsol dışındaki servislere giriş yapmasına izin verir. Konsolun kilitlenmesi gerekiyor.


2

Birisi / bin / false'ın FTP erişimine izin vermeyeceğini kanıtlamaya çalışan oldu mu?

Kullanıcımın kabuğunu / bin / false olarak değiştirdim ve FTP'yi gayet iyi yapabildim.

Kullanıcıyı tamamen kilitlemek için / dev / null kullanıyorum (e-posta hariç, yine de POP3 yapabilirler).


İçinde /etc/shellsbulundun mu? FTP sunucunuz nasıl yapılandırılmıştır?
Michael Hampton

Bir kullanıcının bir FTP sunucusunda oturum açmak için bir kabuğa ihtiyacı olduğunu söyleyen bir kural yoktur.
Petter H

Bazı FTP istemcilerine izin vermeyecek, bazılarına değil. Çeşitli olanlar arasında işlevsellikte oldukça fazla fark vardır. Klasik uygulama, kabuğu olmayan kimseye erişimi engeller, ancak bu, tüm uygulamaların yapmak zorunda olduğu anlamına gelmez.
Falcon Momot
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.