Care este ' diferența dintre / sbin / nologin și / bin / false

Tehnic, cu excepția cazului în pam este configurat pentru a verifica shell-ul dvs. cu pam_shells niciunul dintre acestea nu vă poate împiedica efectiv autentificarea, dacă nu sunteți pe shell. Pe sistemul meu au chiar dimensiuni diferite, așa că bănuiesc că fac ceva. Deci, care este diferența? de ce există amândoi? De ce aș folosi una peste cealaltă?

-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 

Comentarii

Răspuns

Când /sbin/nologin este setat ca shell, dacă utilizatorul odată cu conectarea acelui shell, vor primi un mesaj politicos care va spune „Acest cont nu este disponibil în prezent.” Acest mesaj poate fi modificat cu fișierul /etc/nologin.txt.

/bin/false este doar un binar care iese imediat, returnând fals, când este apelat, deci când cineva care are false ca jurnale de shell la, au „deconectat imediat la ieșirea false. Setarea shell-ului la /bin/true are același efect de a nu permite cuiva să se conecteze dar false este probabil folosit ca o convenție peste true deoarece este „mult mai bine un nu transmite conceptul că persoana nu are un shell.

Privind pagina de manual a nologin „, se spune că a fost creat în 4.4 BSD (începutul anilor 1990) ) deci a venit mult după ce a fost creat false. Utilizarea false ca shell este probabil doar o convenție preluată încă din primele zile ale UNIX.

nologin este opțiunea mai ușor de utilizat, cu un mesaj personalizabil dat utilizatorului care încearcă să se conecteze, deci teoretic ați dori să îl utilizați; dar atât nologin, cât și false vor avea același rezultat final al faptului că cineva nu are un shell și nu poate intra în ssh.

Comentarii

  • /usr/sbin/nologin pentru distribuțiile bazate pe Debian.
  • Cel puțin implementarea BSD jurnalizează datele de conectare încearcă să syslog așa cum se vede în opensource.apple.com/source/system_cmds/system_cmds-735/… , întrucât / bin / false nu ‘ nu înregistrează nimic
  • ACEST – Este un răspuns uimitor, cu o istorie excelentă prezentată aici. Bravo Mark!
  • Funcția de mesaj personalizat /etc/nologin.txt nu este disponibilă în Ubuntu.

Răspuns

Unele servere FTP vă vor permite accesul FTP numai dacă aveți un shell valid. /sbin/nologin este considerat un shell valid, în timp ce /bin/false nu este.

(Cred că „valid” înseamnă starea de ieșire este 0, dar poate apărea și /etc/shells, depinde probabil de sistem, de software-ul FTP și de configurația dvs.)

Comentarii

  • da, că ‘ face parte probabil din programul ftp folosind pam și pam folosind pam_shells care, după cum ați spus, verifică /etc/shells. Doar o presupunere … aș putea să mă înșel.
  • Tocmai am verificat atât Ubuntu 8.04, cât și 14.04. Comanda nologin iese cu starea 1 similară cu false și niciunul dintre adevărate, false sau nologine nu este inclus în / etc / shells. Dacă ar fi, un utilizator ar putea folosi chsh pentru a selecta un astfel de shell și pentru a se bloca din contul său.

Răspuns

/bin/false este o comandă de sistem care este utilizată oricând trebuie să transmiteți o comandă unui program care nu ar trebui să facă altceva decât să iasă cu o eroare. Este însoțitorul /bin/true. Ambele sunt utilități POSIX foarte vechi și standard și nici nu produc nici o ieșire prin definiție.true este uneori folosit pentru un script shell care ar trebui să se bucure la nesfârșit, cum ar fi:

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

/usr/sbin/nologin este conceput special pentru înlocuiți un shell și produce ieșiri plângându-vă că nu puteți să vă conectați. Înainte de a exista, era obișnuit să utilizați /bin/false pentru utilizatorii fictivi, dar ar putea fi confuz deoarece utilizatorul nu „t știți de ce au fost „demarate.

Comentarii

  • demn de remarcat faptul că /bin/true și /bin/false nu sunt întotdeauna ceea ce veți obține într-un script shell. În zsh true și false sunt încorporate, unde bash folosește versiunile /bin/*

Răspuns

Pe aparatul meu, nologin afișează întotdeauna același mesaj, în engleză, ignorând argumentele . /bin/false răspunde la --version și --help în limba indicată de $LC_CTYPE. În afară de aceste diferențe cosmetice, aceștia au același efect.

Din punct de vedere al utilizabilității, nologin este mai bine dacă este utilizat în contul unei persoane reale care vorbește engleză. În ceea ce privește securitatea, nu există nicio diferență.

Comentarii

  • pare a fi false este mai mult pentru conturile de sistem care nu au un utilizator real și nologin este pentru conturile dezactivate.
  • Care este sistemul dvs. de operare? Centos nologin versiunea nu acceptă argumente, dar poate citi mesajul din /etc/nologin.txt.

Răspuns

Pe linux, /sbin/nologin provine din proiectul util-linux , în timp ce /bin/false face parte din GNU Coreutils . Acestea îndeplinesc roluri diferite, iar nologin are opțiunea de a imprima un mesaj pentru persoanele care au ca shell-ul lor care se conectează. Comenzile Linux provin de la BS D, unde par să aibă o lungă istorie de a fi diferiți. FreeBSD false returnează pur și simplu 1 , în timp ce nologin verifică asigurați-vă că „s rulează pe un TTY și trimite un mesaj către syslog în timpul încercărilor de conectare. Versiunile Linux sunt puțin mai complicate (false fac tot felul de lucruri distractive cu internaționalizare pentru rezultatul –help, presupun), dar în esență funcționează în același mod.

Răspunde

/ bin / false numai lucrarea este să ieșiți cu un cod de ieșire diferit de zero.

Încercați-l la linia de comandă:

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

Unele instituții folosesc / bin / false în câmpul shell al fișierului de parolă. Dacă utilizatorul încearcă să se conecteze, shell-ul este / bin / false, deci sunt ieșiți imediat

Răspuns

Ar putea fi același program, dar au semnificații diferite. Numele programului spune totul.

  • / bin / false este destinat să returneze o valoare falsă este rulat ca program.
  • / bin / nologin este destinat să îi indice utilizatorului că nu este permisă nicio autentificare pentru un cont. (Se utilizează un shell de conectare.)

Răspuns

Ambele fac mai mult sau mai puțin aceeași treabă, dar /bin/false este util pentru utilizatorii fără privilegii. Pe de altă parte, /sbin/nologin este destinat utilizatorilor privilegiați.

Comentarii

  • Oh, cum ai făcut ați ajuns la această concluzie?
  • Probabil că a analizat /etc/passwd. Tocmai am aruncat o privire în /etc/passwd a unei secțiuni Debian proaspăt instalată. În această casetă, aproape toate conturile de sistem (ID-uri de utilizator < 1000) au /usr/sbin/nologin ca shell, cu câteva excepții. Rețineți că nu sunt de acord cu răspunsul @pythondetective ‘. Eu doar speculez ce l-ar fi putut duce la această concluzie. Comentariul meu întârzie puțin.
  • Nu! shell-ul de autentificare implicit nu este același cu privilegiile.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *