IMPORTANT: Per accedir als fitxer de subversion: http://acacha.org/svn (sense password). Poc a poc s'aniran migrant els enllaços. Encara però funciona el subversion de la farga però no se sap fins quan... (usuari: prova i la paraula de pas 123456)

LPI 107.1. Gestió d'usuaris i comptes de grup i els fitxers de sistema relacionats

De SergiTurWiki
Share/Save/Bookmark
(S'ha redirigit des de: GID)
Dreceres ràpides: navegació, cerca

Linux Professional Institute Certificate. LPIC-1

Lpic1 large.gif
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

Contingut

Objectius del tema

107.1. Gestió d'usuaris i comptes de grup i els fitxers de sistema relacionats
Objective.jpg
  • Objectiu: Els candidats han de se capaços d'afegir, eliminar, suspendre o modificar comptes d'usuari.
  • Pes: 5
060317 Icon - Theory of Knowledge v01 pdc.jpg

Àrees Clau de Coneixement:

  • Afegir, modificar i eliminar usuaris i grups.
  • Gestionar la informació d'usuaris i grups a les bases de dades password i group.
  • Crear i gestionar comptes limitades de propòsit específic.
Icon list.jpg

La següent és una llista parcial de fitxers, termes i utilitats utilitzades:

Fitxer:Text-editor.svg

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.

ExempleGrupsIUsuarisLinux.png

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:

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:

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:

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:

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é:

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

Consulteu chpasswd i newusers

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:

man login.defs

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:

LPI_107.1._Gestió_d'usuaris_i_comptes_de_grup_i_els_fitxers_de_sistema_relacionats#Afegir_usuaris_per_lots_.28batch.29

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:

/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

OpenFPnet
IES Nicolau Copèrnic