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
- Vezi și Are / usr / sbin / nologin ca shell de autentificare un scop de securitate?
- Sunt ‘ curios de ce / bin / false ia 21k de cod pentru a returna un ” 1 ” cod de returnare! (și / sbin / nologin necesită doar 4,7k)
- util pentru citire. Care este diferența dintre / sbin / nologin și / bin / false
- @MarkStewart Un pic prea târziu, dar poate doriți să citiți De ce sunt adevărate și false atât de mari? și Un tutorial Whirlwind despre crearea executabilelor ELF cu adevărat Teensy pentru Linux .
- @nxnev Da, nu ‘ nu m-am gândit la cheltuielile generale ale ELF. Și, din vechile mele zile IBM, a existat un program IEFBR14 care era o instrucțiune de asamblare simplă a unui cod op: BR 14 – Sucursală pentru înregistrarea 14, care ar termina programul cu codul de returnare setat la orice se afla în registrul 14! li>
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. Înzsh
true
șifalse
sunt încorporate, undebash
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 șinologin
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.