Certificat | LPIC-1 |
Examen: | 102 (torneu a la resta de temes) |
Fitxers: | LPI107.1_GestioUsuarisIGrups.pdf (LPI107.1_GestioUsuarisIGrups.odp), UD_8_13_gestio_usuaris.pdf,UD_8_11_admin_comptes.pdf (apunts Eva Dominguez) |
Objectius: | http://www.lpi.org/eng/certification/the_lpic_program/lpic_1/exam_102_detailed_objectives |
Dipòsit SVN: | https://svn.projectes.lafarga.cat/svn/lpi/Materials/Examen_102/107.1 |
Usuari: | anonymous |
Paraula de pas: | qualsevol paraula de pas |
107.1. Gestió d'usuaris i comptes de grup i els fitxers de sistema relacionats | |
---|---|
![]() |
|
![]() |
Àrees Clau de Coneixement:
|
![]() |
La següent és una llista parcial de fitxers, termes i utilitats utilitzades: |
![]() |
Apunts: LPI 107.1. Gestió d'usuaris i comptes de grup i els fitxers de sistema relacionats |
Aquest apartat explica quins són els subsistemes que intervenen en la gestió de les bases de dades d'usuaris i autenticació dels usuaris en sistemes GNU/Linux. Bàsicament parlarem de:
També farem una petita introducció al tema d'usuaris
Recursos:
Una de les característiques principals de Linux és la seva capacitat per treballar com un sistema multiusuari.
La necessitat més evident que sorgeix en un sistema multiusuari és disposar d’algun sistema que permeti distingir a cada usuari de la resta. Per aquesta raó se li assigna a cada usuari un identificador únic dins del sistema conegut com el UID.
Però aquest identificador únic no és suficient per establir uns requeriments mínims de seguretat i funcionalitat dins del sistema. Per tant, cada usuari, a més de pel seu identificador propi, s’ha de caracteritzar per altres atributs fonamentals com ara la contrasenya d’accés al sistema, un directori propi, etc...
Per tot això es fa necessari una estructura administrativa que permeti reunir totes les dades associades a un mateix usuari dins del sistema.
D’aquesta forma sorgeix el concepte de compte de l’usuari en el sistema.
El compte d’usuari engloba al conjunt d’atributs (fonamentals o no) que el caracteritzen i, per extensió, també a tots els fitxers i directoris associats a l’usuari.
A més de poder afegir i eliminar usuaris, l’administrador del sistema té la capacitat de definir i desfer grups d’usuaris. Els grups d’usuaris són agrupacions merament administratives: la existència d’un grup no suposa una relació directa entre els comptes dels usuaris inclosos en el grup.
Aquestes agrupacions resulten útils a l’hora de facilitar o restringir fàcilment certs permisos a usuaris de similar categoria o necessitats operatives.
De forma semblant als usuaris, els grups també es caracteritzen per un identificador únic (GID) i per una sèrie d’atributs.
La informació d'un compte d'usuari és la següent:
El sistema GNU/Linux és multiusuari, per tant, les persones que l’utilitzen han d’identificar-se per assegurar la confidencialitat de les dades.
Aquestes persones tenen cadascuna un “compte d’usuari” al sistema, però també està permès compartir arxius entre col·laboradors per tant existeix la noció de “grup d’usuaris” a GNU/Linux.
Un usuari ha de ser membre obligatòriament d’un grup d’usuaris en un sistema Unix com GNU/Linux: el seu grup principal és l’utilitzat en crear arxius. Per una altra banda poden pertànyer a altres grups: els seus grups secundaris determinen els seus drets d’accés als arxius creats per altres membres dels grups.
Per exemple, representem els diferents serveis d’una empresa amb el seu personal, si bé cada usuari té una funció primària (entre parèntesis), alguns poden assumir diferents funcions.
On Esteban, Gerard i Willy són del Servei Tècnic. Willy col·labora amb els formadors i Gerard col·labora amb el servei de Vendes. Nicolàs i Marta són formadors però també col·laboren amb el Servei Tècnic. Marta, a més, col·labora amb el servei de comptabilitat. Àlex és un comercial que a més col·labora amb el servei de comptabilitat. Silvia només pertany al servei de comptabilitat.
Per identificar a tots aquests usuaris a nivell del sistema operatiu, se’ls hi atribueix un número únic: UID (“User’s ID”); el propietari d’un arxiu es determina per aquest número en Unix. Aquests usuaris també tenen un nom d’usuari únic (“login”) i una contrasenya (“password”) per autenticar-se en la connexió al sistema.
Els grups d’usuaris es representen per un nom únic al qual se li associa un identificador únic: el GID (“Group’s ID”). Aquest número també s’utilitza per determinar el grup propietari d’un arxiu.
Es poden distingir tres tipus de comptes en UNIX:
També existeixen diferents tipus de grups en un sistema GNU/Linux que permeten donar drets comuns a una sèrie d’usuari:
NOTA: El fitxer de configuració /etc/login.defs pot modificar els valors per defecte indicats anteriorment:
$ cat /etc/login.defs | grep ID UID_MIN 1000 UID_MAX 60000 #SYS_UID_MIN 100 #SYS_UID_MAX 999 GID_MIN 1000 GID_MAX 60000 #SYS_GID_MIN 100 #SYS_GID_MAX 999
El sistema operatiu no utilitza els mateixos identificadors que utilitzen els usuaris. Per identificar els usuaris i els grups s'utilitza uns números enters anomenats:
En alguns casos (per exemple camps del objecte Ldap posixAccount ) se'ls anomena idnumber i gidnumber.
Al treballar en sistemes amb Ldap és important tenir una bona planificació de la gestió del UID. Consulteu Proposta_de_gestió_del_uid_i_gid_numbers#Com_funciona_Gosa.3F
Sembla ser que s'utilitzen 16 bits i per aquesta raó els valor màxim de UID és 2 a la 16= 65536
Recursos:
Els sistemes operatius GNU/Linux són força flexibles pel que fa als noms d'usuari. L'ordre useradd no estableix gairebé cap restricció als noms d'usuari Linux, es poden utilitzar els següents caràcters (estàndard IEEE Std 1003.1-2001):
Extret de:
$ man adduser.conf
En canvi distribucions com Debian proposen noms d'usuari amb les següents característiques: Si s'utilitza l'ordre adduser, lo anterior és configurable i el que s'aplica és el que digui el fitxer de configuració de l'ordre adduser (/etc/adduser.conf). En aquest fitxer trobareu el paràmetre NAME_REGEX que permet establir restriccions addicionals:
Exemple:
$ cat /etc/adduser.conf #NAME_REGEX="^[a-z][-a-z0-9]*\$"
El paràmetre és una expressió regular. Tot i que surt comentat, és el valor que s'aplica per defecte i que ens indica que els noms d'usuari:
Si no compliu la expressió us donarà el següent error:
$ sudo adduser prova.prova adduser: Please enter a username matching the regular expression configured via the NAME_REGEX[_SYSTEM] configuration variable. Use the `--force-badname' option to relax this check or reconfigure NAME_REGEX or NAME_REGEX_SYSTEM.
Recursos:
Abans el fitxer /etc/passwd contenia la paraula de pas xifrada (s'utilitzava el xifratge crypt). Actualment aquest fitxer conté:
$ cat /etc/passwd | grep sergi sergi:x:1000:1000:Sergi Tur Badenas,sd,,:/home/sergi:/bin/bash
El sistema de paraules de pas ocultes és el sistema per defecte utilitzat a totes les distribucions Linux modernes. De fet s'està aplicant des de principis dels 90 que va ser quan es va implementar.
Al conjunt d'eines que permeten convertir fitxer de password tradicionals de Unix al format Shadow més als programes de gestió d'usuaris i grups i login se'ls anomena shadow suite o shadow-utils (utilitats shadow).
L'ordre pwconv converteix un fitxer de format tradicional a shadow (també hi ha la inversa pwunconv). Vegeu el següent exemple:
$ sudo cat /etc/passwd ... prova-1:x:1008:1011:,,,:/home/prova-1:/bin/bash ...
La x indica forma shadow.
$ sudo pwunconv $ sudo cat /etc/passwd ... prova-1:$6$Bn3PgOn5$I9jzC10hAAGN515NlOkPIbgNgWbJDahgvsPSiOWwqKliWVlsbCbIduJMlf8NViPrKFCKY.hvFuPi8IjxQid0q/:1008:1011:,,,:/home/prova-1:/bin/bash
Podeu tornar a deixar el sistema com estava amb:
$ sudo pwconv
NOTA: Actualment és difícil trobar-se un sistema Linux que no tingui de sèrie els fitxers de password en format Shadow
A Debian i derivats com Ubuntu, les eines shadow tools es distribueixen en format binari en dos paquets:
login passwd
Els executables són:
$ dpkg -L login| grep bin /usr/sbin/nologin /usr/bin/faillog /usr/bin/lastlog /usr/bin/newgrp /bin/login /bin/su /usr/bin/sg
i
$ dpkg -L passwd|grep bin /usr/bin/chage /usr/bin/chfn /usr/bin/chsh /usr/bin/expiry /usr/bin/gpasswd /usr/bin/passwd /usr/sbin/chpasswd /usr/sbin/chgpasswd /usr/sbin/cppw /usr/sbin/groupadd /usr/sbin/groupdel /usr/sbin/groupmod /usr/sbin/grpck /usr/sbin/grpconv /usr/sbin/grpunconv /usr/sbin/newusers /usr/sbin/pwck /usr/sbin/pwconv /usr/sbin/pwunconv /usr/sbin/useradd /usr/sbin/userdel /usr/sbin/usermod /usr/sbin/vipw /sbin/shadowconfig /usr/sbin/cpgr /usr/sbin/vigr
La configuració de shadow és fa al fitxer /etc/login.defs.
Recursos:
Els esquemes d'autenticació (de l'anglès Authentication Schemes) defineixen la forma en que un usuari determinara la seva identitat. Per exemple, quan paguem amb targeta de crèdit utilitzem un esquema d'autenticació basat en DNI (el venedor sap que la targeta és nostra quan li ensenyem el DNI).
L'esquema d'autenticació més utilitzat en informàtica és la contrasenya o paraula de pas, però hi ha altres sistemes com per exemple:
Als sistemes operatius Linux d'esquema d'autenticació bàsic i el que s'utilitza per defecte és la paraula de pas.
En la terminologia utilitzada per PAM s'anomena servei a l'aplicació informàtica que utilitza un esquema d'autenticació. Consulteu l'esquema Mòduls PAM.
Name Service Switch (NSS) permet reemplaçar fitxers bàsics de configuració de Unix (com per exemple: /etc/passwd, /etc/group, /etc/hosts) per bases de dades centralitzades.
Consulteu NSSwitch.
PAM (Pluggable Authentication Modules) és un mecanisme flexible per l'autenticació d'usuaris. Permet utilitzar sistemes d'autenticació diferents al sistema tradicional d'autenticació (fitxer /etc/passwords) sense necessitat de canviar el disseny de les aplicacions. PAM permet desenvolupar programes amb independència de l'esquema d'autenticació utilitzant mòduls d'autenticació en temps d'execució i no haver de tornar a compilar per canviar l'esquema d'autenticació.
PAM és un invent de SUN (especificació amb diferents implementacions). Linux-PAM és la implementació de PAM a Linux.
NOTA: Observeu que només amb la base de dades d'usuaris, grups i paraules de pas, a les qual podem accedir amb NSSwitch no hi ha prou per a treballar amb usuaris. A més cal definir com es fan processos com l'autenticació/login, com es gestionen les sessions d'usuari, com es gestionen les comptes d'usuari, etc. Tot això és el que fa PAM però sense lligar-se a cap tecnologia concreta
Per a més detall consulteu:
PAM
Els sistemes operatius GNU/Linux són sistemes multiusuari que depenen d'unes estructures de dades anomenades comptes d'usuari (accounts) i d'una sèrie de procediments utilitzats per a identificar els usuaris d'un ordinador i gestionar tot lo relacionat amb comptes d'usuari (logins, paraules de pas, sessions, etc.).
Saber gestionar les comptes d'usuari és una tasca bàsica que han de dominar tots els administradors de sistema.
L'administrador del sistema disposa de les següents ordre per gestionar els usuaris del sistema:
L'administrador també pot editar directament els fitxers /etc/passwd i /etc/shadow però no és recomanable ja que qualsevol error pot implicar que el sistema deixi de funcionar correctament. En tot cas si s'han d'editar els fitxers directament utilitzeu vipw i vigrp.
NOTA: A vegades cal editar directament els fitxer per què estem accedint al sistema des d'un LIVE-CD o qualsevol altre mitjà de recuperació del sistema. En aquests casos podríeu utilitzar chroot per tal de poder utilitzar les ordres useradd i similars al sistema a recuperar i no pas al LIVE-CD
Les següents ordres les poden executar els usuaris per tal de fer canvis als seus comptes. També les pot utilitzar l'administrador per fer canvis a qualsevol usuari.
Consulteu finger.
Consulteu who
Aquesta ordre serveis per canviar-se la paraula de pas:
$ passwd
Primer us pregunta la paraula de pas actual (això evita que algun "graciós" que pasi per un terminal oberta us pugui canviar la paraula de pas ;-))
Si sou superusuari (root) podeu canviar la paraula de pas de qualsevol usuari amb:
# passwd usuari
O amb sudo
$ sudo passwd usuari
Però l'ordre també serveix per a més coses. Per exemple bloquejar o desactivar un compte:
$ sudo passwd -l 4prova [sudo] password for sergi: passwd: password expiry information changed.
NOTA: A Ubuntu, a part de no saber la paraula de pas de root, a més la compte de root esta desactivada. També podeu utilitzar l'ordre usermod -L usuari
Es pot tornar a activar:
$ sudo passwd -u usuari
NOTA: Activar/desactivar no canvia cap dada de l'usuari.
Es pot força la expiració d'una paraula de pas:
$ sudo passwd -e usuari
I es poden establir els valors de mínim de dies entre canvi de paraules de pas i màxim de dies de validesa d'una paraula de pas.
Es pot consultar l'estat de totes les paraules de pas de tots els usuaris amb:
$ sudo passwd -a -S ... ntp L 03/14/2010 0 99999 7 -1 4prova L 01/01/1970 0 99999 7 -1
On hi ha 7 camps:
Vegeu també:
$ chfn Password: Changing the user information for sergi Enter the new value, or press ENTER for the default Full Name: Sergi Tur Badenas Room Number []: sd Work Phone []: Home Phone []:
NOTA: Observeu que no deixa canviar el GECOS. Això es degut al paràmetre CHFN_RESTRICT del fitxer /etc/login.defs que només permet modificar rwh (Room, Work i Phone)l Al superusuari aquestes restriccions no se li apliquen.
$ sudo chfn sergi [sudo] password for sergi: Changing the user information for sergi Enter the new value, or press ENTER for the default Full Name [Sergi Tur Badenas]: ...
Per a més informació consulteu el manual de Linux:
$ man chfn
Permet a un usuari modificar el shell predeterminat:
$ chsh Password: Changing the login shell for sergi Enter the new value, or press ENTER for the default Login Shell [/bin/bash]:
El fitxer:
/etc/shells
Conté una llista de shells de logins vàlides.
Consulteu també /etc/login.defs
Comprova la expiració del compte si s'aplica:
$ expiry -c
Si l'usuari és administrador d'un grup pot canviar la paraula de pas amb l'ordre gpasswd.
Mostra el UID de l’usuari, el GID del seu grup principal i els GID de tots els grups als quals pertany. Consulteu id.
Proporciona la llista complerta dels grups, però accepta varis noms d’usuari com a arguments. Consulteu groups. Per exemple els grups típics d'Ubuntu:
$ groups sergi adm dialout cdrom plugdev lpadmin admin sambashare bsf profes
També es poden consultar els grups d'altres usuaris:
[nicolas]$ groups gerard alex willy root gerard : tècnic curs vendes alex : vendes comptabilitat willy : tècnic curs root : root
Consulteu whoami
L'ordre gpasswd és l'encarregada de gestionar els grups. La informació dels grups es guarda als fitxers /etc/group i /etc/gshadow.
Els grups Linux poden tenir:
Els grups es creen amb l'ordre groupadd:
$ sudo groupadd nom_del_grup
NOTA: Només el superusuari pot crear grups. Hi ha grups que es generen automàticament, per exemple al crear un nou usuari se l'afegeix automàticament a un grup anomenat User Private Group (UPG) al qual només pertany aquest usuari
Un cop s'ha creat el grup es poden afegir i treure usuaris al grup amb les ordres:
$ sudo gpasswd -a usuari grup $ sudo gpasswd -d usuari grup
O es pot establir tots els membres de cop amb:
$ sudo gpasswd -M sergi,bego casa
IMPORTANT: Cal tenir en compte que qualsevol membre que estes abans al grup hi ara no surti a la llista deixarà de ser membre del grup!
Per exemple:
$ sudo groupadd casa $ sudo gpasswd -a sergi casa Adding user sergi to group casa $ sudo gpasswd -d sergi casa Removing user sergi from group casa
Es pot assignar una paraula de pas a un grup amb:
$ sudo gpasswd casa Changing the password for group casa New Password: Re-enter new password:
La paraula de pas es guarda a /etc/gshadow:
$ sudo cat /etc/gshadow | tail ... casa:$6$co92nA14dv$Ds9vRN/9VFX1GfKzSuCgpVtAsiIkXSolWk.MV7pZE/MLlTI9pqjtNPffbg/aE/7ajDsSGX7/fPOJdTL4o1C6u/::
Es pot eliminar la paraula de pas amb:
$ sudo gpasswd -r casa
L'administrador del sistema pot utilitzar l'opció -A per definir quins són els administradors d'un grup:
$ sudo gpasswd -A sergi casa
NOTA: Es poden indicar múltiples usuaris administrador: $ sudo gpasswd -A sergi,bego casa
L'administrador es guarda al fitxer /etc/gshadow:
$ sudo cat /etc/gshadow | grep casa casa:$6$co92nA14dv$Ds9vRN/9VFX1GfKzSuCgpVtAsiIkXSolWk.MV7pZE/MLlTI9pqjtNPffbg/aE/7ajDsSGX7/fPOJdTL4o1C6u/:sergi:sergi,bego
La paraula de pas s'utilitza per deixar als usuaris que no són membres accedir al grup amb l'ordre newgrp. Els usuaris que són membres accedeixen al grup directament.
Es pot restringir l'accés al grup només als membres:
$ sudo gpasswd -R casa
Amb l'opció -M pot definir els membres d'un grup.
$ sudo gpasswd -M sergi,bego casa
Si l'ordre es executada per un administrador del grup aleshores només serveix per canviar la paraula de pas del grup:
Si el grup té una paraula de pas els membres del grup i poden accedir sense posar-la i la resta d'usuaris l'han de posar.
NOTA: Els canvi només s'apliquen a la base de dades de fitxers locals files i no pas a sistemes remots com LDAP o NIS
Consulteu també:
L'ordre chage permet gestionar l'expiració de les paraules de pas. Un usuari pot consultar les dades d'expiració associades a la seva paraula de pas amb:
$ chage -l sergi
NOTA: Si intenta consultar les dades de qualsevol altre usuari no li deixarà. El root pot consultar i modificar totes les dades d'expiració
L'administrador pot establir els períodes de vigència de les paraules de pas amb. Les opcions més utilitzades són:
chage –d ul_dia nom_usuari
estableix la data de l’últim canvi de la contrasenya.
chage –m min_dies nom_usuari
número de dies que han de passar per canviar la contrasenya.
chage –M max_dies nom_usuari
número de dies màxim que pot estar amb la mateixa contrasenya sense canviar-la.
chage –W warn_dies nom_usuari
indica quants dies abans s’avisarà a l’usuari de que la contrasenya expirarà i que ha de canviar-la.
chage –I inac_dies nom_usuari
número de dies que han de passar després de que la contrasenya expiri per a que el compte es deshabiliti de forma automàtica si la contrasenya no ha estat canviada.
chage –E exp_dies nom_usuari
número de dies per a que expiri el compte i es deshabiliti de forma automàtica.
Comanda chpasswd
Comanda newusers:
Aquesta comanda ens permet donar d'alta o actualitzar massivament usuaris a partir d'un fitxer de text.
El format del fitxer és molt similar al del fitxer /etc/passwd
El fitxer
/etc/login.defs
Conté alguns dels valors importants a l'hora de donar d'alta usuaris:
$ cat /etc/login.defs | grep -v '#'
Recursos:
Altres eines de gestió massiva:
#!/usr/bin/awk -f # Script to create a file suitable for use in the 'newusers' command, # from a file consisting of user IDs and passwords in the form: # first_name last_name password # Copyright (c) KMSelf Sat Aug 25 20:47:38 PDT 2001 # Distributed under GNU GPL v 2, or at your option, any later version. # This program is distributed WITHOUT ANY WARRANTY. BEGIN { # Assign starting UID, GID if ( ARGC > 2 ) { startuid = ARGV[1] delete ARGV[1] } else { printf( "Usage: newusers startUID file\n" \ " where:\n" \ " startUID is the starting userid to add, and\n" \ " file is an input file in form:\n" \ " first_name last_name password\n" \ ) exit } infile = ARGV[1] printf( "Starting UID: %s\n\n", startuid ) } /^#/ { next } { ++record first = $1 last = $2 passwd = $3 user= substr( tolower( first ), 1, 1 ) tolower( last ) uid = startuid + record - 1 gid = uid printf( "%s:%s:%d:%d:%s %s,,/home/%s:/bin/bash\n", \ user, passwd, uid, gid, first, last, user \ ) }
Recordar: Variable d'entorn UID. Crear una redirecció per al terme UID. El mateix per USER
Consulteu també UID.
Conté el nom d'usuari del l'usuari que ha iniciat sessió:
$ env | grep NAME USERNAME=sergi LOGNAME=sergi
$ env | grep NAME USERNAME=sergi LOGNAME=sergi
TODO
Són dos ordres amb la mateixa funcionalitat però amb diferències importants. De fet podem dir que la majoria de distribucions tenen l'ordre useradd (proporcionada per shadow suite). En canvi només algunes distribucions com Debian utilitzant adduser un guió de perl que utilitzant useradd facilita la creació d'usuaris (mitjançant un assistent que va preguntant les dades del nou usuari). A altres distribucions adduser és un enllaç simbòlic a useradd.
NOTA: De fet a LPI només us demanen l'ordre useradd. El mateix passa entre les ordres groupadd i addgroup
Hi ha diferències en aquestes ordres segons el sistema operatiu:
$ whereis useradd useradd: /usr/sbin/useradd /usr/share/man/man8/useradd.8.gz $ file /usr/sbin/adduser /usr/sbin/adduser: a /usr/bin/perl script text executable $ head /usr/sbin/adduser #!/usr/bin/perl
L'ordre es proporcionada pel paquet del mateix nom:
$ dpkg -S /usr/sbin/adduser adduser: /usr/sbin/adduser
El mateix passa amb useradd:
$ whereis useradd useradd: /usr/sbin/useradd /usr/share/man/man8/useradd.8.gz
Recursos:
Consulteu l'article login.
NOTA: No entra a aquest objectiu LPI
Consulteu newgrp.
Si l'executeu sense paràmetres us indicarà quina és la sintaxi a utilitzar:
$ sudo useradd Usage: useradd [options] LOGIN Options: -b, --base-dir BASE_DIR base directory for the new user account home directory -c, --comment COMMENT set the GECOS field for the new user account -d, --home-dir HOME_DIR home directory for the new user account -D, --defaults print or save modified default useradd configuration -e, --expiredate EXPIRE_DATE set account expiration date to EXPIRE_DATE -f, --inactive INACTIVE set password inactive after expiration to INACTIVE -g, --gid GROUP force use GROUP for the new user account -G, --groups GROUPS list of supplementary groups for the new user account -h, --help display this help message and exit -k, --skel SKEL_DIR specify an alternative skel directory -K, --key KEY=VALUE overrides /etc/login.defs defaults -l, --no-log-init do not add the user to the lastlog and faillog databases -m, --create-home create home directory for the new user account -M, --no-create-home do not create user's home directory (overrides /etc/login.defs) -N, --no-user-group do not create a group with the same name as the user -o, --non-unique allow create user with duplicate (non-unique) UID -p, --password PASSWORD use encrypted password for the new user account -r, --system create a system account -s, --shell SHELL the login shell for the new user account -u, --uid UID force use the UID for the new user account -U, --user-group create a group with the same name as the user -Z, --selinux-user SEUSER use a specific SEUSER for the SELinux user mapping
L’administrador pot definir tots els camps que vulgui del compte d’usuari nou utilitzant diferents opcions de la comanda useradd:
El següent exemple mostra la creació d'un usuari:
# useradd -m -G users,ntadmin,administracio,coordinacio,coordinacio_fp,direccio,sgqualitat -c "Sergi Tur" sergi # passwd sergi Changing password for sergi. New Password: Reenter New Password: Password changed.
Per saber si el compte d’usuari s’ha creat de forma correcta es pot mirar el fitxer /etc/passwd i/o utilitzar la comanda pwck que controla si el fitxer és correcte.
Els valors per defecte es guarden al fitxer /etc/default/useradd i es poden modificar amb -D. Sense opcions serveix per consultar els paràmetres per defecte:
$ useradd -D GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/sh SKEL=/etc/skel CREATE_MAIL_SPOOL=no
Les opcions són molt similars a les de useradd, us les mostrarà executant usermod sense opcions:
$ usermod Usage: usermod [options] LOGIN Options: -c, --comment COMMENT new value of the GECOS field -d, --home HOME_DIR new home directory for the user account -e, --expiredate EXPIRE_DATE set account expiration date to EXPIRE_DATE -f, --inactive INACTIVE set password inactive after expiration to INACTIVE -g, --gid GROUP force use GROUP as new primary group -G, --groups GROUPS new list of supplementary GROUPS -a, --append append the user to the supplemental GROUPS mentioned by the -G option without removing him/her from other groups -h, --help display this help message and exit -l, --login NEW_LOGIN new value of the login name -L, --lock lock the user account -m, --move-home move contents of the home directory to the new location (use only with -d) -o, --non-unique allow using duplicate (non-unique) UID -p, --password PASSWORD use encrypted password for the new password -s, --shell SHELL new login shell for the user account -u, --uid UID new UID for the user account -U, --unlock unlock the user account -Z, --selinux-user new SELinux user mapping for the user account
L’administrador pot definir tots els camps que vulgui del compte d’usuari nou utilitzant diferents opcions de la comanda useradd:
Cal anar en compte al afegir grups, ja que l'opció -G per defecte no afegeix la llista de grups addicionals sinó que la reemplaça. Cal afegir -a
$ sudo usermod -a -G grup1,grup2,grup3 sergi
Un exemple típic d'ús es voler afegir els grups per defecte d'un usuari a una distribució Ubuntu. Si consulteu un usuari ja existent que sigui usuari amb privilegis:
$ sudo groups sergi
I voleu crear un usuari nou
$ sudo useradd -m usuari $ sudo usermod -a -G adm,dialout,cdrom,plugdev,lpadmin,admin,sambashare usuari
Es pot desactivar/activar un compte d'usuari amb:
$ sudo usermod -L usuari $ sudo usermod -U usuari
Consulteu també el manual:
$ man usermod
Permet eliminar un usuari:
$ sudo userdel nom_usuari
Per exemple:
$ sudo useradd provaaborrar $ sudo userdel provaaborrar
L'únic destacable és el paràmetre -f (--force) que obliga a l'eliminació de l'usuari encara que l'usuari estigui "logat" dins del sistema.
Consulteu el manual:
$ man userdel
Si l'executeu sense paràmetres us indicarà quina és la sintaxi a utilitzar:
$ sudo groupadd Usage: groupadd [options] GROUP Options: -f, --force force exit with success status if the specified group already exists -g, --gid GID use GID for the new group -h, --help display this help message and exit -K, --key KEY=VALUE overrides /etc/login.defs defaults -o, --non-unique allow create group with duplicate (non-unique) GID -p, --password PASSWORD use encrypted password for the new group -r, --system create a system account
Per afegir un group:
$ sudo groupadd casa
Consulteu:
Gesti.C3.B3_de_grups
L'ordre group modification, permet modificar un grup. Per exemple es pot canviar el gid d'un grup:
$ sudo groupmod -g 1050 casa
NOTA: Tots els fitxers que eren d'aquests grup han de modificar el grup de forma manual!
Potser preferiu canviar només el nom:
$ sudo groupmod -n casa1 casa
Tant els grups com els fitxer que pertanyien al grup antic ara seran del nou grup de forma automàtica.
Es pot establir la paraula de pas de forma manual:
$ sudo groupmod -p PARAULA_DE_PAS_XIFRADA casa1
Per a més informació consulteu el manual:
$ man groupmod
Consulteu:
Gestió de grups
Permet eliminar un grup:
$ sudo groupdel grup_a_eliminar.
A diferència de la eliminació d’usuaris, la eliminació de grups no provocarà la pèrdua definitiva de dades, però sí pot afectar seriosament a la política de permisos del sistema. Si el grup té algun usuari poden passar dos casos:
a) Que sigui el grup principal:
$ sudo groupdel sergi groupdel: cannot remove the primary group of user 'sergi'
Per tant abans s'hauria de modificar el compte sergi.
b) Que sigui un grup secundari:
$ sudo groupdel prova1
No news good news, per tant l'ordre s'executa sense més.
Consulteu:
Gestió de grups
Consulteu LPI_107.1._Gestió_d'usuaris_i_comptes_de_grup_i_els_fitxers_de_sistema_relacionats#passwd.
Consulteu Expiració de paraules de pas.
Canvia la informació personal d'un usuari.
$ chfn Password: Changing the user information for sergi Enter the new value, or press ENTER for the default Full Name: Sergi Tur Badenas Room Number []: sd Work Phone []: Home Phone []:
NOTA: Observeu que no deixa canviar el GECOS. Això es degut al paràmetre CHFN_RESTRICT del fitxer /etc/login.defs que només permet modificar rwh (Room, Work i Phone)l Al superusuari aquestes restriccions no se li apliquen.
$ sudo chfn sergi [sudo] password for sergi: Changing the user information for sergi Enter the new value, or press ENTER for the default Full Name [Sergi Tur Badenas]: ...
Per a més informació consulteu el manual de Linux:
$ man chfn
chsh (change shell) permet a un usuari modificar l'intèrpret d'ordres predeterminat:
$ chsh Password: Changing the login shell for sergi Enter the new value, or press ENTER for the default Login Shell [/bin/bash]:
El fitxer:
/etc/shells
Conté una llista de shells de login vàlides.
Consulteu també /etc/login.defs.
Permet canviar les paraules de pas de múltiples usuaris de cop, mitjançant un fitxer amb múltiples línies (una per usuari) i cada línia amb el format:
usuari:paraula_de_pas
la paraula de pas ha de ser un text no xifrat (text en clar).
Vegem un exemple:
$ sudo useradd pep $ sudo useradd maria $ sudo useradd joan
Ara creeu el fitxer:
$ sudo joe paraulesdepas
El fitxer es llegeix de l'entrada estàndard, i si indiquem l'opció -S (o --stdout), ens mostrarà quines són les paraules de pas:
$ chpasswd -S < paraulesdepas pep:$6$D1r2o5JXZc$mE0xpdc7uvl/3BYtV0JQudzikxUZgdryoFk.nJ/nihP06mUUfa.MJS2XuWpbDlr60ZAEU7QRml4pMT7xwoqvU/ maria:$6$MH7xu/XwPp5$uUB3Z/RQ7tT6gYShY4Hj1IqMpaDUEg5rLG2zIRKuPway.3xwcMgJsKbJsOT3HU6H.ysbDVtHOiC.90XN2x.sW. joan:$6$UFqwv/uhtY$qLTtbPNBx4KJxktnzPJyUM5JUEzEr2jchiUcdhc6jRn5P8x3DG7GlcKoduPZTp4ZOADwQXoj6PbFbiv7AHfHx0
Com podeu veure s'utilitza com a sistema de xifratge el que s'estigui utilitzant al vostre sistema. Com que l'exemple s'ha executat a una Ubuntu Server 9.10 o Karmic Koala, el sistema és SHA-512 (consulteu john the ripper).
Podeu fer els canvis a la base de dades /etc/shadow com a superusuari amb:
$ sudo chpasswd < paraulesdepas
Ordre similar a chpasswd però que permet modificar/establir les paraules de pas de grups en mode batch.
Permet copiar un fitxer de paraules de pas a /etc/passwd, substituint doncs la base de dades d'usuaris existent en un moment donat. Ho fa fent un locking i per tant de forma segura.
És una forma de restaurar una copia de seguretat de la base de dades d'usuaris. També s'utilitza per fer migracions o per donar d'alta usuaris de forma usuari (primer preparant el fitxer i després fent cppw).
Un exemple:
$ cd $ sudo cp /etc/passwd . $ sudo cppw passwd
L'ordre cpgr fa el mateix amb el fitxer /etc/group.
NOTA: L'opció -s copia el fitxer amb el format shadow
Aquesta ordre verifica l'integritat del fitxer de paraules de pas (/etc/passwd):
$ sudo pwck ... user 'maria': directory '/home/maria' does not exist user 'joan': directory '/home/joan' does not exist pwck: no hi ha canvis
És útil per comprovar per exemple els usuaris que no tenen HOME. Consulteu:
$ man pwck
Ordre similar a pwck però per a comprovar la base de dades de grups (fitxer /etc/groups).
Permet crear usuaris per lots.
Consulteu:
Permet activar/desactivar les paraules de pas en format shadow:
$ shadowconfig on $ shadowconfig off
Vegeu shadow suite.
Assistent de perl que a sistemes de la família Debian permet crear un nou usuari:
$ sudo adduser prova3 [sudo] password for sergi: Adding user `prova3' ... Adding new group `prova3' (1008) ... Adding new user `prova3' (1003) with group `prova3' ... Creating home directory `/home/prova3' ... Copying files from `/etc/skel' ... Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully Changing the user information for prova3 Enter the new value, or press ENTER for the default Full Name []: Room Number []: Work Phone []: Home Phone []: Other []: Is the information correct? [Y/n] y
Consulteu adduser vs useradd.
A sistemes Debian podeu utilitzar:
$ cat addTeachers.sh #/bin/bash #File with teachers information, space separated TEACHERS_FILENAME=profes.csv ADDUSER_CONF_FILENAME=adduser.conf SHELL=/bin/bash TEACHERS_GROUP=profes cat $TEACHERS_FILENAME | while read line; do USER=`echo $line | awk '{print $1}'` PASSWD=`echo $line | awk '{print $2}'` #sudo adduser [options] [--home DIR] [--shell SHELL] [--no-create-home] [--uid ID] [--firstuid ID] [--lastuid ID] [--ingroup GROUP | --gid ID] [--disabled- password] # [--disabled-login] [--gecos GECOS] [--add_extra_groups] [--encrypt-home] user #Adduser és la comanda que fa preguntes interactives! echo "Adding user ${USER}..." echo "Running command: sudo useradd -m -G profes ${USER} ..." #sudo adduser --conf ${ADDUSER_CONF_FILENAME} ${USUARI} #-m, --create-home create home directory for the new user account #-g, --gid GROUP force use GROUP for the new user account # -G, --groups GROUPS list of supplementary groups for the new user account #-s, --shell SHELL # The name of the user´s login shell. The default is to leave this field blank, which causes the system to select the default login shell specified by the SHELL # variable in /etc/default/useradd, or an empty string by default. sudo /usr/sbin/useradd -m -G ${TEACHERS_GROUP} -s ${SHELL} ${USER} echo "Creant la paraula de pas..." sudo passwd ${USER} <<EOF ${PASSWD} ${PASSWD} EOF done
És tracta d'un enllaç a adduser.
$ whereis addgroup addgroup: /usr/sbin/addgroup /usr/share/man/man8/addgroup.8.gz $ ls -al /usr/sbin/addgroup lrwxrwxrwx 1 root root 7 2009-12-23 07:45 /usr/sbin/addgroup -> adduser
Consulteu chgrp.
Mostra el UID de l’usuari, el GID del seu grup principal i els GID de tots els grups als quals pertany. Consulteu id.
Proporciona la llista complerta dels grups, però accepta varis noms d’usuari com a arguments. Consulteu groups. Per exemple els grups típics d'Ubuntu:
$ groups sergi adm dialout cdrom plugdev lpadmin admin sambashare bsf profes
També es poden consultar els grups d'altres usuaris:
[nicolas]$ groups gerard alex willy root gerard : tècnic curs vendes alex : vendes comptabilitat willy : tècnic curs root : root
Consulteu who
Consulteu whoami
Tal i com s'explica a l'article NSSwitch el fitxer passwd és el fitxer que conté la base de dades local d'usuaris.
NOTA: Fixeu-vos que parlem de base de dades local, és a dir que també hi ha la possibilitat d'utilitzar bases de dades d'usuaris remote, p. ex. LDAP, NIS, etc...
Es tracta de la bases de dades d'usuaris local o fitxer de passwords:
$ cat /etc/passwd root:x:0:0:root:/root:/bin/bash .... dansguardian:x:118:127:DansGuardian User,,,:/var/log/dansguardian:/bin/sh postfix:x:119:128::/var/spool/postfix:/bin/false openldap:x:120:130:OpenLDAP Server Account,,,:/nonexistent:/bin/false smbguest:x:1004:1006:Samba guest account:/dev/null:/dev/null pepe:x:1005:1008::/home/pepe:/bin/bash ntp:x:121:131::/home/ntp:/bin/false 4prova:x:1006:1009::/home/4prova:/bin/sh
NOTA: Curiosament i contràriament a que indica el seu nom, aquest fitxer ja no sol contindre les paraules de pas. Consulteu shadow suite
Cada línia caracteritza un compte d’usuari i els set camps separats per : (dos punts) són:
NOTA: Les ordres useradd, usermod i userdel permeten afegir, modificar i eliminar usuaris respectivament.
La resta d’arxius que regulen els comptes d’usuari són /etc/shadow que conté les contrasenyes xifrades, /etc/group i /etc/gshadow que defineixen els grups d’usuaris i les paraules de pas de grup si s'escau.
El manual està a la secció 5 (si no poseu el 5 us mostrarà el manual de l'ordre passwd):
$ man 5 passwd
Recursos:
El fitxer /etc/passwd conté informació bàsica de tots els usuaris i per tant tots els usuaris han de poder accedir a aquest fitxer (per exemple per conèixer quina és la seva home). Per aquesta raó a les primeres versions d'aquests fitxer la paraula de pas es guardava xifrada dins d'aquest fitxer per tal d'evitar que els usuaris puguessin conèixer la paraula de pas d'altres usuaris del sistema o fins i tot del root.
NOTA: Fins i tot el root no sap quines són les paraules de pas dels usuaris (a no ser que les hagi posat ell mateix). Aquesta és un característica de seguretat desitjable tant pels usuaris com per als administradors, ja que els usuaris poden utilitzar amb tranquil·litat paraules de pas en màquines amb múltiples usuaris i els administradors per la seva part no se'ls pot fer responsables de paraules de pas alienes.
El problema és que cada cop és més fàcil obtenir una paraula de pas per atacs de força bruta amb Eines de Hacking com John The Ripper.
Per aquesta raó es va crear el fitxer /etc/shadow, que podeu veure amb:
$ sudo -s # cd /etc # ls -la passwd -rw-r--r-- 1 root root 1744 2006-12-28 13:33 passwd # ls -la shadow -rw-r----- 1 root shadow 1095 2006-12-28 13:33 shadow
a diferència del fitxer passwd només és llegible per root i el grup shadow. El fitxer té la següent estructura:
pete:/3GJllg1o4152:11009:0:99999:7:::
Recursos:
La informació de grups s'emmagatzema al fitxer /etc/group. El format és similar al del fitxer /etc/passwd amb informació dels grups (nom del grup, gid, usuaris del grup). Un exemple:
pasta:x:103:spagetti,fettucini,linguine,vermicelli
Es pot utilitzar conjuntament amb l'ordre grep per tal de saber quis són els membres d'un grup:
$ cat /etc/group | grep casa casa::1021:sergi,bego
Recursos:
És l'equivalent al fitxer /etc/shadow però per a grups.
Consulteu l'odre gpasswd.
Consulteu /etc/skel.
Aquest fitxer configura el comportament de les ordres adduser i addgroup, és a dir conté els valors per defecte que s'apliquen a aquestes ordres.
Aquest fitxer té pàgina de manual a la secció 5 (secció de fitxers de configuració)
$ man userdd.conf
A on s'explica per a que serveix cada paràmetres. Els més interessants són:
Per exemple a una Ubuntu 9.10 Karmic Koala sense modificar trobareu:
$ cat /etc/adduser.conf | more # /etc/adduser.conf: `adduser' configuration. # See adduser(8) and adduser.conf(5) for full documentation. # The DSHELL variable specifies the default login shell on your # system. DSHELL=/bin/bash # The DHOME variable specifies the directory containing users' home # directories. DHOME=/home # If GROUPHOMES is "yes", then the home directories will be created as # /home/groupname/user. GROUPHOMES=no # If LETTERHOMES is "yes", then the created home directories will have # an extra directory - the first letter of the user name. For example: # /home/u/user. LETTERHOMES=no # The SKEL variable specifies the directory containing "skeletal" user # files; in other words, files such as a sample .profile that will be # copied to the new user's home directory when it is created. SKEL=/etc/skel # FIRST_SYSTEM_[GU]ID to LAST_SYSTEM_[GU]ID inclusive is the range for UIDs # for dynamically allocated administrative and system accounts/groups. # Please note that system software, such as the users allocated by the base-passwd # package, may assume that UIDs less than 100 are unallocated. FIRST_SYSTEM_UID=100 LAST_SYSTEM_UID=999 FIRST_SYSTEM_GID=100 LAST_SYSTEM_GID=999 # FIRST_[GU]ID to LAST_[GU]ID inclusive is the range of UIDs of dynamically # allocated user accounts/groups. FIRST_UID=1000 LAST_UID=29999 FIRST_GID=1000 LAST_GID=29999 # The USERGROUPS variable can be either "yes" or "no". If "yes" each # created user will be given their own group to use as a default. If # "no", each created user will be placed in the group whose gid is # USERS_GID (see below). USERGROUPS=yes # If USERGROUPS is "no", then USERS_GID should be the GID of the group # `users' (or the equivalent group) on your system. USERS_GID=100 # If DIR_MODE is set, directories will be created with the specified # mode. Otherwise the default mode 0755 will be used. DIR_MODE=0755 # If SETGID_HOME is "yes" home directories for users with their own # group the setgid bit will be set. This was the default for # versions << 3.13 of adduser. Because it has some bad side effects we # no longer do this per default. If you want it nevertheless you can # still set it here. SETGID_HOME=no # If QUOTAUSER is set, a default quota will be set from that user with # `edquota -p QUOTAUSER newuser' QUOTAUSER="" # If SKEL_IGNORE_REGEX is set, adduser will ignore files matching this # regular expression when creating a new home directory SKEL_IGNORE_REGEX="dpkg-(old|new|dist|save)" # Set this if you want the --add_extra_groups option to adduser to add # new users to other groups. # This is the list of groups that new non-system users will be added to # Default: #EXTRA_GROUPS="dialout cdrom floppy audio video plugdev users games" # If ADD_EXTRA_GROUPS is set to something non-zero, the EXTRA_GROUPS # option above will be default behavior for adding new, non-system users #ADD_EXTRA_GROUPS=1 # check user and group names also against this regular expression. #NAME_REGEX="^[a-z][-a-z0-9]*\$"
El fitxer /etc/login.defs conté la configuració de la suite Shadow.
A una Ubuntu 9.10 (Karmic Koala) el fitxer té el següent contingut:
$ cat /etc/login.defs | grep -v '^#\|^$\|^;' MAIL_DIR /var/mail FAILLOG_ENAB yes LOG_UNKFAIL_ENAB no LOG_OK_LOGINS no SYSLOG_SU_ENAB yes SYSLOG_SG_ENAB yes FTMP_FILE /var/log/btmp SU_NAME su HUSHLOGIN_FILE .hushlogin ENV_SUPATH PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin ENV_PATH PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games TTYGROUP tty TTYPERM 0600 ERASECHAR 0177 KILLCHAR 025 PASS_MAX_DAYS 99999 PASS_MIN_DAYS 0 PASS_WARN_AGE 7 UID_MIN 1000 UID_MAX 60000 GID_MIN 1000 GID_MAX 60000 LOGIN_RETRIES 5 LOGIN_TIMEOUT 60 CHFN_RESTRICT rwh DEFAULT_HOME yes USERGROUPS_ENAB yes ENCRYPT_METHOD SHA512
Alguns paràmetres interessant són:
$ cat /etc/login.defs | grep PASS PASS_MAX_DAYS 99999 PASS_MIN_DAYS 0 PASS_WARN_AGE 7
On:
i
LOGIN_RETRIES 5 LOGIN_TIMEOUT 60 ENCRYPT_METHOD SHA512
On:
NOTA: LOGIN_RETRIES This will most likely be overriden by PAM, since the default pam_unix module has it´s own built in of 3 retries. However, this is a safe fallback in case you are using an authentication module that does not enforce PAM_MAXTRIES.
Al fitxer complet trobareu molts més paràmetres. Cal tenir en compte que alguns paràmetres ja no s'utilitzen per què els gestiona PAM.
Consulteu també el manual
$ man login.defs
Permet canviar els valors per defecte de l'ordre useradd:
$ cat /etc/default/useradd # Default values for useradd(8) # # The SHELL variable specifies the default login shell on your # system. # Similar to DHSELL in adduser. However, we use "sh" here because # useradd is a low level utility and should be as general # as possible SHELL=/bin/sh # # The default group for users # 100=users on Debian systems # Same as USERS_GID in adduser # This argument is used when the -n flag is specified. # The default behavior (when -n and -g are not specified) is to create a # primary user group with the same name as the user being added to the # system. # GROUP=100 # # The default home directory. Same as DHOME for adduser # HOME=/home # # The number of days after a password expires until the account # is permanently disabled # INACTIVE=-1 # # The default expire date # EXPIRE= # # The SKEL variable specifies the directory containing "skeletal" user # files; in other words, files such as a sample .profile that will be # copied to the new user's home directory when it is created. # SKEL=/etc/skel # # Defines whether the mail spool should be created while # creating the account # CREATE_MAIL_SPOOL=yes
També es pot utilitzar el paràmetre -D de l'ordre useradd.
Consulteu vi.
Consulteu vipw.
Consulteu vigrp.
TODO