LPI 107.1. Gestió d'usuaris i comptes de grup i els fitxers de sistema relacionats
De SergiTurWiki
| 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 |
Objectius del tema
| 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 | |
Plantilla per prendre apunts
Usuaris i autenticació a GNU/Linux
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:
Introducció
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:
- Nom de l’usuari (login): és el nom amb el qual l’usuari serà conegut dins del sistema. No poden existir dos noms iguals. El nom s’assigna explícitament per l’administrador en el moment de la creació del compte. Els noms dels usuaris d’un sistema no s’encripten ni s’oculten, qualsevol usuari del sistema pot conèixer, en principi, els noms de la resta d’usuaris.
- Contrasenya (password): encara que és possible permetre a un usuari que entri al sistema només introduint el seu login, lo aconsellable és que cada usuari introdueixi, a més del seu nom, una contrasenya per verificar la seva identitat. És obvi que la contrasenya d’un usuari només hauria de ser coneguda per l’usuari i per l’administrador, per això les contrasenyes sempre s’oculten per pantalla i s’encripten en els fitxers on apareixen. Els usuaris haurien de canviar la contrasenya cada certs temps en busca d’una major seguretat en l’accés al sistema. L’administrador pot obligar als usuaris a canviar la contrasenya cada cert temps imposant una data límit per al canvi.
- Directori d’entrada (directori home): és el directori on es situarà a l’usuari cada vegada que entri al sistema. Quan l’administrador crea el compte d’un nou usuari, pot indicar explícitament quin serà el seu directori d’entrada. Si l’administrador no indica cap directori, el directori d’entrada de l’usuari es crearà per defecte amb el mateix nom de l’usuari i serà un subdirectori del directori establert com a base per a directoris d’entrada (que habitualment serà home).
- Identificador numèric (UID): és un identificador com el login però el UID serà sempre un número. Per norma general és un identificador únic. El propi sistema s’encarrega d’assignar automàticament el UID en el moment de la creació del compte d’usuari, encara que l’administrador pot establir-ho. Per conveni, es sol reservar un cert rang de valors (del 0 al 499 per als comptes del sistema, del 500 cap amunt per als usuaris externs al sistema o usuari normals)
- Intèrpret de comandes (shell): indica quin intèrpret de comandes d’entre els disponibles s’activarà quan l’usuari entri al sistema. Si l’administrador no indica un shell per a l’usuari el propi sistema li assignarà el shell que estigui configurat per defecte del sistema (normalment el bash). Per indicar un shell és necessari indicar el camí absolut d’on està ubicat:
- Nom real de l’usuari: es tracta del nom real de l’usuari, no és imprescindible però pot servir per recordar qui és la persona real propietària d’un compte d’usuari.
- Grup d’entrada (GID): és el grup prioritari del compte d’usuari. La prioritat d’aquest grup s’utilitza per a la política de drets.
- Grups addicionals: són tots aquells grups dels quals pot ser membre l’usuari, excepte el seu grup d’entrada. Qualsevol dels grups addicionals d’un usuari pot passar a ser el seu grup prioritari en qualsevol moment. No és imprescindible que un usuari sigui membre de grups addicionals, per defecte, aquesta llista estarà buida.
- Caducitat del compte: es contempla la possibilitat d’imposar una data de caducitat dels comptes d’usuari. Això evitarà que existeixin en el sistema comptes “abandonades” o oblidades pels seus propietaris consumint recursos inútilment. La data de caducitat es pot indicar de forma absoluta (especificant l’any, mes i dia en que el compte es desactivarà automàticament) o de forma relativa a la data d’expiració de la contrasenya (especificant els dies que passaran des de la expiració de la contrasenya fins a la inhabilitació del compte)
Exemple d'usuaris i grups
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.
Jerarquia dels usuaris
Es poden distingir tres tipus de comptes en UNIX:
- root: és el “superusuari” que s’encarrega de les tasques administratives del sistema. No està afectat pels drets d’accés als arxius i pot fer més o menys de tot al sistema. El seu UID és 0.
- Usuaris de sistema (bin, daemon, sync, apache...) : existeixen una sèrie de comptes que no s’assignen a persones físiques. Aquests comptes serveixen per a facilitar l’administració dels drets d’accés de certes aplicacions i dimonis. Aquests comptes solen tenir com a UID un número entre el 1 i el 499. Ordres com useradd o groupadd tenen una opció (-r, --system) que permet crear usuaris o grups de sistema
- Usuaris: P.ex. esteban, nicolàs ... : la resta de comptes d’usuari s’associen a persones reals; la seva funció és permetre als usuaris estàndards connectar-se i utilitzar els recursos de l’equip. El UID d’un usuari és normalment un número superior a 499.
També existeixen diferents tipus de grups en un sistema GNU/Linux que permeten donar drets comuns a una sèrie d’usuari:
- root: El seu GID és 0. És el grup principal de l’administrador.
- Grups de sistema: P. ex. bin, daemon, sync, apache... : Aquests grups tenen la mateixa funció que els comptes del mateix nom i permeten donar els mateixos drets d’accés a una sèrie d’aplicacions. El seu GID està comprés entre 1 i 499.
- Grups d'usuaris: Aquests grups representen a una sèrie de persones reals que han d’accedir als mateixos arxius. Típicament tenen un GID superior o igual a 500.
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
UID i GID
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:
- User Identifier (UID): Identifica l'usuari.
- Group Identifier (GID): Identifica el grup.
Noms d'usuari
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):
- Lletres (en minúscules o majúscules): tot i així no es recomana (i algunes aplicacions no deixen) utilitzar majúscules.
- Números
- Guions baixos (underscores o _ )
- Punts (periods): De totes maneres no es recomana l'ús.
- arrobes (@)
- Dol·lar ($) al final del nom: Per compatibilitat amb els noms de màquina de Samba.
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:
- El primer caràcter ha de ser una lletra
- Mida màxima de 256 caràcters: es pot configurar segons els paràmetre LOGIN_NAME_MAX i LOGNAME_MAX (consultable amb l'ordre getconf).
- Case sensitive: els noms d'usuari diferencien entre majúscules i minúscules. Per exemple no és el mateix USUARI que usuari. No es recoman tenir uusaris amb el mateix nom però amb canvis de majúscules o minúscules (massa confús), tradicionalment l'usuari és tot en minúscules.
- El dol·lar ($) al final del nom d'usuari es suportat per compatibilitat amb Samba (Samba Machine Accounts).
- Els noms d'usuaris normals han de ser minúscules. Als noms d'usuari de sistema se'ls permet utilitzar majúscules.
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:
- El primer caràcter ha de ser una lletra en mínuscula(el carat ^ indica el primer caràcter): ^[a-z]
- La resta de caràcters han de ser lletres en minúscula o números o un guió/dash (-) i poden haver-hi tants com calqui (*)
- Pot acabar el nom en dol.lar ($). Els signe dol·lar cal escapar-lo amb contrabarra
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:
- http://serverfault.com/questions/73084/what-characters-should-i-use-or-not-use-in-usernames-on-linux
Paraules de pas. Shadow suite
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:
Esquemes d'autenticació
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:
- Autenticació mitjançant claus públiques o criptografia de clau asimètrica (Consulteu SSH#ssh-copy-id)
- Autenticació mitjançant bases de dades remotes com LDAP, servidors de bases de dades relacionals com MySQL, Samba...
- DNI digital o Smartcards: Cal tenir el maquinari adient per a llegir el DNI.
- Escànner de retina: per posar un exemple força avançat, es podria fer l'autenticació mitjançant la retina de l'usuari.
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.
NSSwitch
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
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
Gestió d'usuaris i grups
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.
Gestió d'usuaris
L'administrador del sistema disposa de les següents ordre per gestionar els usuaris del sistema:
- useradd: Permet afegir usuaris a la base de dades d'usuaris (fitxer /etc/passwd i /etc/groups)
- usermod: Permet modificar un usuari que ja existeix a la base de dades.
- userdel: Permet eliminar usuaris
- passwd: permet modificar les paraules de pas
- chage: Permet modificar les dades d'expiració de les paraules de pas dels usuaris.
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
Gestió de comptes d'usuari personals sense ser administrador
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.
finger
Consulteu finger.
who
Consulteu who
passwd
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:
- Nom usuari:
- Estat: locked password (L), no password (NP), usable password (P).
- Data de l'últim canvi de paraula de pas:
- Minimum age: temps mínim en dies que ha de transcórrer entre canvis de paraules de pas.
- Maximum age: màxim número de dies de validesa de la paraula de pas
- warning period: dies abans de que caduqui la paraula de pas en que es rep un avís que està a punt de caducar.
- inactivity period: màxim temps en dies que pot estar inactiva la compte.
Vegeu també:
chfn
$ 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
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
expiry
Comprova la expiració del compte si s'aplica:
$ expiry -c
gpasswd
Si l'usuari és administrador d'un grup pot canviar la paraula de pas amb l'ordre gpasswd.
id
Mostra el UID de l’usuari, el GID del seu grup principal i els GID de tots els grups als quals pertany. Consulteu id.
groups
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
whoami
Consulteu whoami
Gestió de grups
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:
- Administradors: Poden fer canvis al grup amb l'ordre gpasswd. L'usuari root sempre pot gestionar qualsevol grup. També pode canviar la paraula de pas
- Membres: Usuaris que formen part del grup
- Paraula de pas: la paraula de pas permet accedir al grup a qualsevol usuari sigui o no membre del grup. Vegeu newgrp.
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
Gestió de paraules de pas
Consulteu també:
- passwd: gestió de paraules de pas d'usuaris
- gpasswd: gestió de paraules de pas de grups
- /etc/passwd i /etc/shadow
Expiració de paraules de pas
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.
Gestió d'usuari per lots i scripts
Afegir usuaris per lots (batch)
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:
- http://www.cyberciti.biz/tips/linux-how-to-create-multiple-users-accounts-in-batch.html
- http://sdn.vlsm.org/share/Debian-Doc/manuals/debian-reference/ch-program.en.html
Altres eines de gestió massiva:
Scripts
#!/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 \
)
}
Variables d'entorn
Variable d'entorn UID
Recordar: Variable d'entorn UID. Crear una redirecció per al terme UID. El mateix per USER
Consulteu també UID.
USERNAME
Conté el nom d'usuari del l'usuari que ha iniciat sessió:
$ env | grep NAME USERNAME=sergi LOGNAME=sergi
LOGNAME
$ env | grep NAME USERNAME=sergi LOGNAME=sergi
USER
TODO
Ordres
adduser versus useradd
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:
Shadow-utils login
Consulteu l'article login.
NOTA: No entra a aquest objectiu LPI
newgrp
Consulteu newgrp.
Shadow-utils passwd
useradd
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:
- -c: Una descripció de l'usuari. Camp lliure sense cap mena de funció, més enllà de la funció informativa.
- -d: Indica el camí absolut (PATH) a la HOME de l'usuari
- -s: Indica el camí absolut (PATH) a l'interpret d'ordres per defecte de l'usuari.
- -g: Indica el grup principal de l'usuari
- -G: Indica la resta de grups dels quals es membre l'usuari.
- -m: crea el compte d’usuari i el directori de treball:
- -r: crea un compte del sistema. Tindrà un UID dins del rang reservat als comptes del sistema i no es crearà un directori d’entrada per a aquest compte:
- -D: ens permet veure i modificar els paràmetres per defecte de creació d’un compte d’usuari.
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
usermod
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:
- -c: Una descripció de l'usuari. Camp lliure sense cap mena de funció, més enllà de la funció informativa.
- -d: Indica el camí absolut (PATH) a la HOME de l'usuari
- -s: Indica el camí absolut (PATH) a l'interpret d'ordres per defecte de l'usuari.
- -g: Indica el grup principal de l'usuari
- -G: Indica la resta de grups dels quals es membre l'usuari.
- -m: Permet moure la HOME de l'usuari.
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
userdel
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
groupadd
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
groupmod
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
groupdel
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
passwd
Consulteu LPI_107.1._Gestió_d'usuaris_i_comptes_de_grup_i_els_fitxers_de_sistema_relacionats#passwd.
chage
Consulteu Expiració de paraules de pas.
chfn
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
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.
chpasswd
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
chgpasswd
Ordre similar a chpasswd però que permet modificar/establir les paraules de pas de grups en mode batch.
cppw
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
pwck
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
grpck
Ordre similar a pwck però per a comprovar la base de dades de grups (fitxer /etc/groups).
grpconv
grpunconv
newusers
Permet crear usuaris per lots.
Consulteu:
Shadowconfig
Permet activar/desactivar les paraules de pas en format shadow:
$ shadowconfig on $ shadowconfig off
Vegeu shadow suite.
Debian
adduser
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:
Script de creació massiva d'usuaris
$ 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
addgroup
É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
core-utils
chgrp
Consulteu chgrp.
id
Mostra el UID de l’usuari, el GID del seu grup principal i els GID de tots els grups als quals pertany. Consulteu id.
groups
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
who
Consulteu who
whoami
Consulteu whoami
Fitxers
/etc/passwd
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:
- El login (nom d’usuari): és el nom utilitzat per connectar-se al sistema. Ha de ser únic.
- La contrasenya: aquesta contrasenya no es troba en aquest arxiu per raons de seguretat; el caràcter x la reemplaça i indica una referència a l’arxiu /etc/shadow que no és accessible en lectura als usuaris normals. Si no s'indica res és que no hi ha paraula de pas (no recomanat per qüestions evidents de seguretat) .En sistemes antics es trobava la paraula de pas xifrada amb crypt (actualment s'utilitzen sistemes de xifratge més potents com MD5 o SHA512, vegeu John The Ripper )
- UID: identificador del compte d’usuari, normalment és únic.
- GID: identificador del grup principal del compte.
- Nom complert: anomenat també GECOS nom provinent del sistema operatiu General Electric Comprehensive Operating System, aquest camp lliure i opcional indica, generalment, la identitat real de la persona associada al compte de linux.
- El directori personal (home directory): és el directori de base de l’usuari on es troba en connectar-se.
- L'interpret d'ordres per defecte: és el programa que es llança a la connexió. El shell predeterminat en GNU/Linux és el bash.
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:
- http://en.wikipedia.org/wiki/Gecos_field
- http://en.wikipedia.org/wiki/General_Comprehensive_Operating_System
- man passwd
/etc/shadow
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:
/etc/group
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:
/etc/gshadow
És l'equivalent al fitxer /etc/shadow però per a grups.
Consulteu l'odre gpasswd.
/etc/skel
Consulteu /etc/skel.
/etc/adduser.conf
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:
- NAME_REGEX: Els noms d'usuari i els grups han de complir amb aquesta expressió regular. Si no es compleix no es pot crear o modificar l'usuari a no ser que s'utilitzi el paràmetre --force-badname. El valor per defecte és ^[a-z][-a-z0-9]*$. Consulteu Noms d'usuari.
- NAME_REGEX_SYSTEM: És la expressió regular que han de complir els login names dels usuaris de sistema (quan s'utilitza el paràmetre --system) . Per defecte és el mateix que NAME_REGEX però permet lletres en majúscules,
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]*\$"
/etc/deluser.conf
/etc/login.defs
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:
- PASS_MAX_DAYS: Permet especificar en dies un període de validesa màxim d'una paraula de pas. Un cop caducat el període cal canviar la paraula de pas.
- PASS_MIN_DAYS: Mínim de dies que han de passar entre canvis de paraula de pas
- PASS_WARN_AGE: El nombre de dies que s'avisarà abans que la paraula de pas estigui a punt de caducar.
i
LOGIN_RETRIES 5 LOGIN_TIMEOUT 60 ENCRYPT_METHOD SHA512
On:
- LOGIN_RETRIES: nombre màxim d'intents
- LOGIN_TIMEOUT: és el temps màxim que s'espera login a que introduim la paraula de pas.
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
/etc/default/useradd
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.
vi
Consulteu vi.
vipw
Consulteu vipw.
vigrp
Consulteu vigrp.
Vegeu també
Enllaços externs
TODO



