adăugarea unui utilizator este unul dintre cele mai fundamentale exerciții pe orice sistem informatic; acest articol se concentrează asupra modului de a face acest lucru pe un sistem Linux.
înainte de a începe, vreau să menționez trei elemente fundamentale de care trebuie să ținem cont. În primul rând, la fel ca în majoritatea sistemelor de operare, utilizatorii Linux au nevoie de un cont pentru a se putea conecta. Acest articol acoperă în mod specific conturile locale, nu conturile de rețea, cum ar fi LDAP. În al doilea rând, conturile au atât un nume (numit nume de utilizator), cât și un număr (numit ID de utilizator). În al treilea rând, utilizatorii sunt de obicei plasați într-un grup. Grupurile au, de asemenea, un nume și un ID de grup.
după cum v-ați aștepta, Linux include un utilitar de linie de comandă pentru adăugarea de utilizatori; se numește useradd. De asemenea, puteți găsi comanda adduser. Multe distribuții au adăugat această legătură simbolică la comanda useradd ca o chestiune de comoditate.
$ file `which adduser`
/usr/sbin/adduser: symbolic link to useradd
Să aruncăm o privire la useradd.
notă: valorile implicite descrise în acest articol le reflectă pe cele din Red Hat Enterprise Linux 8.0. Puteți găsi diferențe subtile în aceste fișiere și anumite valori implicite pe alte distribuții Linux sau alte sisteme de operare Unix, cum ar fi FreeBSD sau Solaris.
comportament implicit
utilizarea de bază a useradd este destul de simplu: un utilizator poate fi adăugat doar prin furnizarea de numele de utilizator.
$ sudo useradd sonny
în acest exemplu, comanda useradd creează un cont numit sonny. De asemenea, este creat un grup cu același nume, iar sonny este plasat în el pentru a fi folosit ca grup primar. Există și alți parametri, cum ar fi limba și shell-ul, care sunt aplicați în funcție de valorile implicite și stabilite în fișierele de configurare /etc/default/useradd și /etc/login.defs. Acest lucru este, în general, suficient pentru un singur sistem personal sau pentru un mediu de afaceri mic, cu un singur server.
în timp ce cele două fișiere de mai sus guvernează comportamentul useradd, informațiile despre utilizator sunt stocate în alte fișiere găsite în directorul / etc, la care mă voi referi în acest articol.
fișier | descriere | câmpuri (bold—set de useradd) |
---|---|---|
passwd | stochează detaliile contului de utilizator | nume de utilizator:neutilizat:uid:gid:comentariu:homedir:Shell |
Shadow | stochează detaliile de securitate ale contului de utilizator | nume de utilizator:parolă:lastchange:minim:maxim:avertizează:inactiv:expiră:neutilizat |
grupul | stochează detaliile grupului | groupName:neutilizat:gid:membrii |
comportament personalizabil
linia de comandă permite personalizarea pentru momentele în care un administrator are nevoie de un control mai fin, cum ar fi specificarea numărului de identificare al unui utilizator.
User and group ID numbers
în mod implicit, useradd încearcă să utilizeze același număr pentru ID-ul utilizatorului (UID) și ID-ul grupului primar (GID), dar nu există garanții. Deși nu este necesar ca UID și GID să se potrivească, este mai ușor pentru administratori să le gestioneze atunci când o fac.
am doar scenariul de explicat. Să presupunem că am adăuga un alt cont, de data aceasta pentru Timmy. Comparând cei doi utilizatori, sonny și timmy, arată că atât utilizatorii, cât și grupurile lor primare respective au fost create folosind comanda getent.
$ getent passwd sonny timmy
sonny:x:1001:1002:Sonny:/home/sonny:/bin/bash
timmy:x:1002:1003::/home/timmy:/bin/bash
$ getent group sonny timmy
sonny:x:1002:
timmy:x:1003:
Din păcate, nici UID-ul utilizatorilor, nici GID-ul primar nu se potrivesc. Acest lucru se datorează faptului că comportamentul implicit este de a atribui următorul UID disponibil utilizatorului și apoi încercați să atribuiți același număr grupului principal. Cu toate acestea, dacă acest număr este deja utilizat, următorul GID disponibil este atribuit grupului. Pentru a explica ce sa întâmplat, am ipoteza că un grup cu GID 1001 există deja și introduceți o comandă pentru a confirma.
$ getent group 1001
book:x:1001:alan
cartea de grup cu ID-ul 1001 a făcut ca GID-urile să fie dezactivate cu unul. Acesta este un exemplu în care un administrator de sistem ar trebui să preia mai mult control asupra procesului de creare a utilizatorului. Pentru a rezolva această problemă, trebuie mai întâi să determin următorul ID de utilizator și grup disponibil care se va potrivi. Comenzile getent group și getent passwd vor fi utile în determinarea următorului număr disponibil. Acest număr poate fi transmis cu argumentul-U.
$ sudo useradd -u 1004 bobby
$ getent passwd bobby; getent group bobby
bobby:x:1004:1004::/home/bobby:/bin/bash
bobby:x:1004:
Un alt motiv bun pentru a specifica ID-ul este pentru utilizatorii care vor accesa fișiere pe un sistem la distanță folosind sistemul de fișiere de rețea (NFS). NFS este mai ușor de administrat atunci când toate sistemele client și server au același ID configurat pentru un anumit utilizator. Am acoperi acest lucru într-un pic mai detaliat în articolul meu despre utilizarea autofs pentru a monta acțiuni NFS.
mai multe personalizări
foarte des, totuși, trebuie specificați alți parametri ai contului pentru un utilizator. Iată câteva exemple scurte ale celor mai frecvente personalizări pe care poate fi necesar să le utilizați.
Comment
opțiunea comment este un câmp cu text simplu pentru a furniza o scurtă descriere sau alte informații folosind argumentul-C.
$ sudo useradd -c "Bailey is cool" bailey
$ getent passwd bailey
bailey:x:1011:1011:Bailey is cool:/home/bailey:/bin/bash
grupuri
unui utilizator i se poate atribui un grup primar și mai multe grupuri secundare. Argumentul-g specifică numele sau GID-ul grupului primar. Dacă nu este specificat, useradd creează un grup primar cu același nume al utilizatorului (așa cum s-a demonstrat mai sus). Argumentul-g (majuscule) este folosit pentru a trece o listă separată prin virgulă de grupuri în care utilizatorul va fi plasat; acestea sunt cunoscute sub numele de grupuri secundare.
$ sudo useradd -G tgroup,fgroup,libvirt milly
$ id milly
uid=1012(milly) gid=1012(milly) groups=1012(milly),981(libvirt),4000(fgroup),3000(tgroup)
Home directory
comportamentul implicit al useradd este de a crea directorul home al utilizatorului în / home. Cu toate acestea, diferite aspecte ale directorului de acasă pot fi înlocuite cu următoarele argumente. -B stabilește un alt director în care pot fi plasate casele utilizatorilor. De exemplu, /home2 în loc de implicit /home.
$ sudo useradd -b /home2 vicky
$ getent passwd vicky
vicky:x:1013:1013::/home2/vicky:/bin/bash
– d vă permite să specificați un director de acasă cu un nume diferit de utilizator.
$ sudo useradd -d /home/ben jerry
$ getent passwd jerry
jerry:x:1014:1014::/home/ben:/bin/bash
directorul skeleton
– k instruiește noul director de acasă al utilizatorului să fie populat cu orice fișiere din directorul/etc / skel. Acestea sunt de obicei fișiere de configurare shell, dar pot fi orice lucru pe care un administrator de sistem ar dori să îl pună la dispoziția tuturor utilizatorilor noi.
Shell
argumentul-s poate fi folosit pentru a specifica shell-ul. Valoarea implicită este utilizată dacă nu este specificat nimic altceva. De exemplu, în cele ce urmează, shell bash este definit în fișierul de configurare implicit, dar Wally a solicitat zsh.
$ grep SHELL /etc/default/useradd
SHELL=/bin/bash
$ sudo useradd -s /usr/bin/zsh wally
$ getent passwd wally
wally:x:1004:1004::/home/wally:/usr/bin/zsh
securitate
Securitatea este o parte esențială a gestionării utilizatorilor, deci există mai multe opțiuni disponibile cu comanda useradd. Un cont de utilizator poate primi o dată de expirare, sub forma AAAA-LL-ZZ, folosind argumentul-E.
$ sudo useradd -e 20191231 sammy
$ sudo getent shadow sammy
sammy:!!:18171:0:99999:7::20191231:
un cont poate fi dezactivat automat dacă parola expiră. Argumentul-f va seta numărul de zile după expirarea parolei înainte ca contul să fie dezactivat. Zero este imediat.
$ sudo useradd -f 30 willy
$ sudo getent shadow willy
willy:!!:18171:0:99999:7:30::
un exemplu din lumea reală
în practică, mai multe dintre aceste argumente pot fi utilizate la crearea unui nou cont de utilizator. De exemplu, dacă trebuie să creez un cont pentru Perry, aș putea folosi următoarea comandă:
$ sudo useradd -u 1020 -c "Perry Example" \
-G tgroup -b /home2 \
-s /usr/bin/zsh \
-e 20201201 -f 5 perry
consultați secțiunile de mai sus pentru a înțelege fiecare opțiune. Verificați rezultatele cu:
$ getent passwd perry; getent group perry; getent shadow perry; id perry
perry:x:1020:1020:Perry Example:/home2/perry:/usr/bin/zsh
perry:x:1020:
perry:!!:18171:0:99999:7:5:20201201:
uid=1020(perry) gid=1020(perry) groups=1020(perry),3000(tgroup)
câteva sfaturi finale
comanda useradd este un „must-know” pentru orice administrator Unix (nu doar Linux). Este important să înțelegeți toate opțiunile sale, deoarece crearea utilizatorului este ceva ce doriți să obțineți corect prima dată. Aceasta înseamnă să aveți o convenție de denumire bine gândită, care include o gamă dedicată UID / GID rezervată utilizatorilor dvs. din întreaga întreprindere, nu doar pe un singur sistem—în special atunci când lucrați într-o organizație în creștere.