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)

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:

Text-editor.svg

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

Usuaris i autenticació a GNU/Linux

Introducció

Característica rellevant: sistema multiusuari.

  • Cal disposar d’algun sistema que permeti distingir a cada usuari de la resta.
  • A cada usuaris se li assigna un identificador únic dins del sistema conegut com el UID (User Identifier).
  • El UID no és suficient per establir uns requeriments mínims de seguretat i funcionalitat dins del sistema.
  • 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...

Exemple d'usuaris i grups

Compte d'usuari

Estructura de dades administrativa que permet reunir totes les dades associades a un mateix usuari 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. Cal una base de dades per emmagatzemar els usuaris (pot ser un simple fitxer de text)

Camps d'un compte d'usuari

Nom de l’usuari (login): nom amb el qual l’usuari serà conegut dins del sistema. No poden existir dos noms iguals. S’assigna explícitament per l’administrador en el moment de la creació del compte.No es xifren ni s’oculten, qualsevol usuari del sistema pot conèixer, en principi, els noms de la resta d’usuaris.

Paraula de pas (password): és aconsellable que cada usuari introdueixi durant el login, a més del seu nom, una contrasenya per verificar la seva identitat. La contrasenya d’un usuari només hauria de ser coneguda per l’usuari, per això les contrasenyes sempre s’oculten per pantalla i es xifren 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): 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.

Intèrpret d'ordres (shell): indica quin intèrpret d'ordresd’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 bash o sh). 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.

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 o relativa.

Comptes de grup

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.

Exemples d'usuaris i grups

Hugolucas usuarisigrups.jpeg

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.

Jerarquia dels usuaris

Hi ha 3 tipus de comptes d'usuari

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. josep, ana ... : 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 999.

Hi ha també 3 tipus de grups

  • root: El seu GID és 0. Grup principal de l’administrador.
  • Grups de sistema: P. ex. bin, daemon, sync, apache... 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.
  • 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 o 1000.

Sistema configurable

$ 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

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 1 al 999 per als comptes del sistema, del 1000 cap amunt per als usuaris externs al sistema o usuari normals).

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.

Noms d'usuari

GNU/Linux és força flexible amb els 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 (minúscules i minú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.

Recomanacions i restriccions en aplicacions de gestió d'usuaris d'alt nivell

Distribucions com Debian (ordre adduser) proposen noms d'usuari amb les següents característiques:

  • Mida màxima de 256 caràcters: es pot configurar segons els paràmetre LOGIN_NAME_MAX i LOGNAME_MAX (getconf)
  • El primer caràcter ha de ser una lletra
  • El fitxer de configuració de l'ordre adduser (/etc/adduser.conf) amb NAME_REGEX permet establir restriccions addicionals
  • 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.

Paraules de pas. Shadow suite

On s'amaguen les paraules de pas

Abans el fitxer /etc/passwd contenia la paraula de pas xifrada (s'utilitzava el xifratge crypt). Actualment aquest fitxer conté:

$ cat /etc/passwd | grep hugo
hugo:x:1000:1000:Hugo,,,:/home/hugo:/bin/bash

Les paraules de pas es guarden xifrades a /etc/shadow

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 passwords 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).

Esquemes d'autenticació

Un esquema d'autenticació defineix la forma en que un usuari determinara la seva identitat.

Quan paguem amb targeta de crèdit utilitzem un esquema d'autenticació basat en DNI.

El més comú en informàtica és la contrasenya, però hi ha altres (clau pública, Smartcards...)

L'esquema d'autenticació bàsic de Linux és la contrasenya

Terminologia

Servei: aplicació que utilitza un esquema d'autenticació

NSSwitch

Name Service Switch (NSS)

Permet reemplaçar fitxers basics de configuració de Unix (per exemple: /etc/passwd, /etc/group, /etc/hosts) per bases de dades centralitzades

Aquest sistema és configurable mitjançant el fitxer:

$ cat /etc/nsswitch.conf 
# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.

passwd:         compat
group:          compat
shadow:         compat  
hosts:          files mdns4_minimal [NOTFOUND=return] dns mdns4
networks:       files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files 
netgroup:       nis

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 les aplicacions.

PAM permet desenvolupar programes amb independència de l'esquema d'autenticació.

S'utilitzen mòduls d'autenticació en temps d'execució. No cal 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.

PAM. Configuració

Fitxers de la carpeta /etc/pam.d

  • Alguns sistemes poden tenir la configuració de PAM tota al fitxer /etc/pam.conf.

Cada fitxer és un servei/aplicació. Exemple:

  • /etc/pam.d/login: configura l'ús de PAM per l'aplicació login.
#
# /etc/pam.d/common-account - authorization settings common to all services
#
# This file is included from other service-specific PAM config files,
# and should contain a list of the authorization modules that define
# the central access policy for use on the system.  The default is to
# only deny service to users whose accounts are expired in /etc/shadow.
#
# As of pam 1.0.1-6, this file is managed by pam-auth-update by default.
# To take advantage of this, it is recommended that you configure any
# local modules either before or after the default block, and use
# pam-auth-update to manage selection of other modules.  See
# pam-auth-update(8) for details.
#

# here are the per-package modules (the "Primary" block)
account	[success=1 new_authtok_reqd=done default=ignore]	pam_unix.so 
# here's the fallback if no module succeeds
account	requisite			pam_deny.so
# prime the stack with a positive return value if there isn't one already;
# this avoids us returning an error just because nothing sets a success code
# since the modules above will each just jump around
account	required			pam_permit.so
# and here are more per-package modules (the "Additional" block)
# end of pam-auth-update config
#
# /etc/pam.d/common-auth - authentication settings common to all services
#
# This file is included from other service-specific PAM config files,
# and should contain a list of the authentication modules that define
# the central authentication scheme for use on the system
# (e.g., /etc/shadow, LDAP, Kerberos, etc.).  The default is to use the
# traditional Unix authentication mechanisms.
#
# As of pam 1.0.1-6, this file is managed by pam-auth-update by default.
# To take advantage of this, it is recommended that you configure any
# local modules either before or after the default block, and use
# pam-auth-update to manage selection of other modules.  See
# pam-auth-update(8) for details.

# here are the per-package modules (the "Primary" block)
auth	[success=1 default=ignore]	pam_unix.so nullok_secure
# here's the fallback if no module succeeds
auth	requisite			pam_deny.so
# prime the stack with a positive return value if there isn't one already;
# this avoids us returning an error just because nothing sets a success code
# since the modules above will each just jump around
auth	required			pam_permit.so
# and here are more per-package modules (the "Additional" block)
auth	optional			pam_smbpass.so migrate
auth	optional	pam_ecryptfs.so unwrap
auth	optional			pam_cap.so 
# end of pam-auth-update config
#
# /etc/pam.d/common-password - password-related modules common to all services
#
# This file is included from other service-specific PAM config files,
# and should contain a list of modules that define the services to be
# used to change user passwords.  The default is pam_unix.

# Explanation of pam_unix options:
#
# The "sha512" option enables salted SHA512 passwords.  Without this option,
# the default is Unix crypt.  Prior releases used the option "md5".
#
# The "obscure" option replaces the old `OBSCURE_CHECKS_ENAB' option in
# login.defs.
#
# See the pam_unix manpage for other options.

# As of pam 1.0.1-6, this file is managed by pam-auth-update by default.
# To take advantage of this, it is recommended that you configure any
# local modules either before or after the default block, and use
# pam-auth-update to manage selection of other modules.  See
# pam-auth-update(8) for details.

# here are the per-package modules (the "Primary" block)
password	[success=1 default=ignore]	pam_unix.so obscure sha512
# here's the fallback if no module succeeds
password	requisite			pam_deny.so
# prime the stack with a positive return value if there isn't one already;
# this avoids us returning an error just because nothing sets a success code
# since the modules above will each just jump around
password	required			pam_permit.so
# and here are more per-package modules (the "Additional" block)
password	optional			pam_smbpass.so nullok use_authtok use_first_pass
password	optional	pam_gnome_keyring.so 
password	optional	pam_ecryptfs.so 
# end of pam-auth-update config
#
# /etc/pam.d/common-session - session-related modules common to all services
#
# This file is included from other service-specific PAM config files,
# and should contain a list of modules that define tasks to be performed
# at the start and end of sessions of *any* kind (both interactive and
# non-interactive).
#
# As of pam 1.0.1-6, this file is managed by pam-auth-update by default.
# To take advantage of this, it is recommended that you configure any
# local modules either before or after the default block, and use
# pam-auth-update to manage selection of other modules.  See
# pam-auth-update(8) for details.

# here are the per-package modules (the "Primary" block)
session	[default=1]			pam_permit.so
# here's the fallback if no module succeeds
session	requisite			pam_deny.so
# prime the stack with a positive return value if there isn't one already;
# this avoids us returning an error just because nothing sets a success code
# since the modules above will each just jump around
session	required			pam_permit.so
# The pam_umask module will set the umask according to the system default in
# /etc/login.defs and user settings, solving the problem of different
# umask settings with different shells, display managers, remote sessions etc.
# See "man pam_umask".
session optional			pam_umask.so
# and here are more per-package modules (the "Additional" block)
session	required	pam_unix.so 
session	optional	pam_ecryptfs.so unwrap
session	optional			pam_ck_connector.so nox11
# end of pam-auth-update config

Contenen una llista ordenada de normes amb la següent sintaxi:

type control module-path module-arguments

"Types". Separen les normes en diferents àmbits:

  • auth: com determinem que l'usuari és qui diu que és. També s'encarrega de l'assignació de grups.
  • password: Proveïx els mecanismes per canviar l'autenticació de l'usuari (contrasenya).
  • session: realitza tasques abans i/o després de que l'usuari s'hagi autenticat.
  • account: Determina qüestions que no són purament de l'autenticació (la contrasenya ha expirat?, hora i data d'accés correctes?, etc.)

"control". Determina que cal fer un cop l'execució sigui correcta o incorrecta:

  • requisite: Si el modul falla, es denega l'accés a l'usuari immediatament.
  • required: denega l'autenticació però es continua l'execució de la resta de mòduls abans de tornar el control a l'aplicació.
  • sufficient: El resultat del modul és ignorat si falla. Si és un èxit només serà un èxit de tota la pila si cap mòdul required ha fallat.
  • optional: s'ignora el resultat del modul. Només és necessari per tal de que l'autenticació sigui un èxit quan no hi han altres mòduls associats al mateix servei i tipus.

Modules

module-path: el nom del modul (allotjat a la carpeta /lib/security) o el camí absolut.

module-arguments: Arguments per passar al mòdul.

Cada fitxer té les normes per un servei (aplicació) “PAM-aware”.

Si l'aplicació utilitza PAM es pot canviar la autenticació sense modificar PAM

Cada norma executa un mòdul

Es poden combinar les normes per aconseguir autenticacions tan complexes com es desitgi.

Pila de normes

Per a un mateix tipus i servei podem tenir més d'una norma (llista ordenada)

auth required pam_nologin.so
auth required pam_securetty.so
auth required pam_env.so
auth sufficient
pam_rhosts_auth.so
auth required pam_stack.so
service=system-auth

Entre mòduls required no importa l'ordre.

Requisite finalitza la llista si no autentica.

Sufficent no finalitza si hi ha error.

L'exemple anterior utilitza mòduls bàsics de Linux

PAM. Modules

Pam proporciona una sèrie de mòduls bàsics per treballar amb l'autenticació bàsica de Linux

Paquet libpam-modules

Es poden afegir mòduls addicionals per treballar amb altres autenticacions

Hugolucas pam modules.jpeg

Gestió d'usuaris i grups

Gestió d'usuaris

Gestió de comptes d'usuari personals sense ser administrador

L'administrador del sistema disposa de les següents ordres 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.

També es pot editar directament els fitxers /etc/passwd i /etc/shadow

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.

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.

Podeu utilitzar chroot per tal de poder utilitzar les ordres useradd i similars.

Gestió de comptes d'usuari personals sense ser administrador

chfn

Permet canviar el nom complet d'usuari real. (Full name)

També s'anomena GECOS i conté informació de la ubicació i el telèfon.

chsh

Canvia la shell del sistema. Sol permet canviar-la per alguna shell que estigui instal·lada al sistema.

finger

Ens diu quins usuaris estan dintre el sistema en aquest moment.

who

Ens diu el mateix que la comanda finger.

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.

$ sudo passwd -u Pepe
passwd: user 'Pepe' does not exist
[email protected]:~$ sudo passwd pepa
Introduïu la nova contrasenya d'UNIX: 
Torneu a escriure la nova contrasenya d'UNIX: 
passwd: s'ha actualitzat la contrasenya satisfactòriament
[email protected]:~$ sudo passwd Pepe
passwd: user 'Pepe' does not exist
[email protected]:~$ sudo passwd pepe
Introduïu la nova contrasenya d'UNIX: 
Torneu a escriure la nova contrasenya d'UNIX: 
passwd: s'ha actualitzat la contrasenya satisfactòriament
[email protected]:~$ sudo passwd -l pepe
passwd: password expiry information changed.
[email protected]:~$ sudo passwd -u pepe
passwd: password expiry information changed.
[email protected]:~$ sudo passwd -e pepe
passwd: password expiry information changed.
[email protected]:~$ sudo passwd -a -S
root P 09/27/2011 0 99999 7 -1
daemon L 04/25/2011 0 99999 7 -1
bin L 04/25/2011 0 99999 7 -1
sys L 04/25/2011 0 99999 7 -1
sync L 04/25/2011 0 99999 7 -1
games L 04/25/2011 0 99999 7 -1
man L 04/25/2011 0 99999 7 -1
lp L 04/25/2011 0 99999 7 -1
mail L 04/25/2011 0 99999 7 -1
news L 04/25/2011 0 99999 7 -1
uucp L 04/25/2011 0 99999 7 -1
proxy L 04/25/2011 0 99999 7 -1
www-data L 04/25/2011 0 99999 7 -1
backup L 04/25/2011 0 99999 7 -1
list L 04/25/2011 0 99999 7 -1
irc L 04/25/2011 0 99999 7 -1
gnats L 04/25/2011 0 99999 7 -1
nobody L 04/25/2011 0 99999 7 -1
libuuid L 04/25/2011 0 99999 7 -1
syslog L 04/25/2011 0 99999 7 -1
messagebus L 04/25/2011 0 99999 7 -1
avahi-autoipd L 04/25/2011 0 99999 7 -1
avahi L 04/25/2011 0 99999 7 -1
usbmux L 04/25/2011 0 99999 7 -1
gdm L 04/25/2011 0 99999 7 -1
speech-dispatcher L 04/25/2011 0 99999 7 -1
kernoops L 04/25/2011 0 99999 7 -1
pulse L 04/25/2011 0 99999 7 -1
rtkit L 04/25/2011 0 99999 7 -1
hplip L 04/25/2011 0 99999 7 -1
saned L 04/25/2011 0 99999 7 -1
hugo P 09/26/2011 0 99999 7 -1
lightdm L 10/18/2011 0 99999 7 -1
colord L 10/18/2011 0 99999 7 -1
kdm L 01/09/2012 0 99999 7 -1
sshd L 03/28/2012 0 99999 7 -1
mysql P 04/13/2012 0 99999 7 -1
pepe P 01/01/1970 0 99999 7 -1
pepa P 05/02/2012 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.

expiry

gpasswd

id

groups

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.

Afegir un grup

• $ sudo groupadd nom_del_grup

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.

Afegir/Eliminar membres a un grup

$ sudo gpasswd -a usuari grup
$ sudo gpasswd -d usuari grup

Establir els membres d'un grup

$ sudo gpasswd -M sergi,bego casa

Assignar paraula de pas

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.

$ sudo gpasswd casa

Eliminar: $ sudo gpasswd -r casa

Restringir l'accés al grup només als membres

$ sudo gpasswd -R casa

Gestió de paraules de pas

Ordres:

passwd: gestió de paraules de pas d'usuaris

gpasswd: gestió de paraules de pas de grups

Fitxers

/etc/passwd i /etc/shadow

Bloquejar/activar un compte

$ sudo passwd -l 4prova
$ sudo passwd -u usuari

Expiració de paraules de pas

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 amb l'ordre chage.

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.

Gestió d'usuari per lots i scripts

Afegir usuaris per lots (batch)

Scripts

Variables d'entorn

Variable d'entorn UID

USERNAME

LOGNAME

USER

Ordres

adduser versus useradd

Shadow-utils login

newgrp

Permet iniciar un nou interpret d'ordres amb un grup diferent.

Útil per crear carpetes o fitxers que siguin propietat d'un grup diferent al nostre grup per defecte.

Per tornar al grup per defecte només cal sortir del nou interpret d'ordres.

Relacionada amb les ordres de login, login, sudo, su, sg.

shadow-utils passwd

useradd

Opcions

-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.

# useradd -m -G users,admin,administracio,coordinacio,direccio,qualitat -c "Sergi Tur" sergi
# passwd sergi
Changing password for sergi.
New Password:
Reenter New Password:
Password changed.

Sinó s'indiquen algunes opcions s'apliquen les opcions per defecte.

-D: ens permet veure i modificar els paràmetres per defecte de creació d’un compte d’usuari.

Si s'indiquen més opcions amb -D, aleshores modifiquem els valors per defecte.

Comprovacions

Per saber si el compte d’usuari s’ha creat de forma correcta es pot mirar el fitxer /etc/passwd

També es pot utilitzar la comanda pwck que controla si el fitxer és correcte.

$ sudo pwck
user 'lp': directory '/var/spool/lpd' does not exist
user 'news': directory '/var/spool/news' does not exist
user 'uucp': directory '/var/spool/uucp' does not exist
user 'list': directory '/var/list' does not exist
user 'irc': directory '/var/run/ircd' does not exist
user 'gnats': directory '/var/lib/gnats' does not exist
user 'nobody': directory '/nonexistent' does not exist
user 'syslog': directory '/home/syslog' does not exist
user 'usbmux': directory '/home/usbmux' does not exist
user 'speech-dispatcher': directory '/var/run/speech-dispatcher' does not exist
user 'pulse': directory '/var/run/pulse' does not exist
user 'hplip': directory '/var/run/hplip' does not exist
user 'saned': directory '/home/saned' does not exist
user 'kdm': directory '/home/kdm' does not exist
user 'aria': directory '/home/aria' does not exist
pwck: no hi ha canvis

Opcions per defecte

$ useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/sh
SKEL=/etc/skel
CREATE_MAIL_SPOOL=no

Fitxer de configuració:

/etc/default/useradd
$ cat /etc/default/useradd | more
# 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
...

usermod

Permet modifica un usuari.

Sintaxi:

$ sudo usermod [opcions] LOGIN

Les opcions són molt similars a les de useradd

# Exemple de creació d'usuari a Ubuntu
$ sudo useradd -m usuari
$ sudo usermod -a -G adm,dialout,cdrom,plugdev,lpadmin,admin,sambashare usuari

userdel

Ens permet eliminar un usuari.

Sintaxi:

$ sudo userdel [opcions] LOGIN

L'opció -f permet eliminar l'usuari tot i que tingui una sessió d'usuari oberta.

groupadd

groupmod

groupdel

passwd

chage

chfn

chsh

chpasswd

chgpasswd

cppw

pwck

grpck

grpconv

grpunconv

newusers

shadowconfig

Debian

adduser

Adduser: assistent disponible a Debian

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.

addgroup

core-utils

chgrp

Permet canviar només el grup

La sintaxi és:

$ chgrp [-R] <grup> <arxiu ...>

-R: aplicar l'ordre de forma recursiva

El propietari pot cedir l'arxiu a qualsevol grup al qual pertanyi:

El grup per defecte assignat als nous arxius és el grup principal de l’usuari que l’ha creat, a menys que estigui habilitat el permís SGID en el directori on es crea el fitxer.

Exemple:

Creem un arxiu:

$ touch prova123

i ara li canviem el grup per a que pertanyi al grup admin:

$ chgrp -R admin prova123

comprovem amb un

$ ls -la
... 
-rw-rw-r--  1 hugo admin         0 2012-05-02 15:20 prova123
...

id

groups

who

whoami

/etc/passwd

/etc/shadow

/etc/group

/etc/gshadow

/etc/skel

Carpeta HOME per defecte

Utilitzada per ordres com useradd (useradd -m) o adduser.

Si s'utilitzin altres ordres com adduser (només en sistemes de la família Debian) es crea automàticament la carpeta home també a partir d'skel.

Tingueu en compte que es pot configurar useradd per tal d'utilitzar un altre carpeta:

# cat /etc/default/useradd | grep skel
# The SKEL variable specifies the directory containing "skeletal" user
# SKEL=/etc/skel

NOTA: Cal tenir en compte que qualsevol canvi que feu a la carpeta /etc/skel no s'aplicarà als usuaris ja existents.

/etc/adduser.conf

/etc/deluser.conf

/etc/login.defs

vi

vipw

vigrp