Gestió d'usuaris i grups, permisos de fitxers i atributs i activació de l'accés sudo als comptes - Part 8


L'agost passat, la Linux Foundation va iniciar la certificació LFCS (Linux Foundation Certified Sysadmin), un nou programa que té com a objectiu permetre que les persones de tot arreu i de qualsevol lloc facin un examen per obtenir la certificació en suport operatiu bàsic i intermedi per als sistemes Linux, que inclou donar suport a sistemes i serveis en execució, juntament amb un seguiment i anàlisi generals, a més de la presa de decisions intel·ligents per poder decidir quan és necessari escalar els problemes als equips de suport de nivell superior.

Si us plau, feu una ullada ràpida al vídeo següent que descriu una introducció al programa de certificació de la Linux Foundation.

Aquest article és la part 8 d'una sèrie llarga de 10 tutorials, aquí en aquesta secció us guiarem sobre com gestionar els permisos d'usuaris i grups al sistema Linux, que són necessaris per a l'examen de certificació LFCS.

Atès que Linux és un sistema operatiu multiusuari (ja que permet que diversos usuaris de diferents ordinadors o terminals accedeixin a un únic sistema), caldrà saber com realitzar una gestió eficaç d'usuaris: com afegir, editar, suspendre o eliminar comptes d'usuari, a més de concedir-los els permisos necessaris per fer les tasques assignades.

Afegir comptes d'usuari

Per afegir un compte d'usuari nou, podeu executar qualsevol de les dues ordres següents com a root.

# adduser [new_account]
# useradd [new_account]

Quan s'afegeix un compte d'usuari nou al sistema, es realitzen les operacions següents.

1. Es crea el seu directori d'inici (/home/nom d'usuari per defecte).

2. Els fitxers ocults següents es copien al directori inicial de l'usuari i s'utilitzaran per proporcionar variables d'entorn per a la seva sessió d'usuari.

.bash_logout
.bash_profile
.bashrc

3. Es crea un spool de correu per a l'usuari a /var/spool/mail/nom d'usuari.

4. Es crea un grup i se li dóna el mateix nom que el nou compte d'usuari.

La informació completa del compte s'emmagatzema al fitxer /etc/passwd. Aquest fitxer conté un registre per compte d'usuari del sistema i té el format següent (els camps estan delimitats per dos punts).

[username]:[x]:[UID]:[GID]:[Comment]:[Home directory]:[Default shell]

  1. Els camps [nom d'usuari] i [Comentari] s'explicaran per si mateixos.
  2. La x del segon camp indica que el compte està protegit per una contrasenya ombrejada (a /etc/shadow), que és necessària per iniciar la sessió com a [nom d'usuari].
  3. Els camps [UID] i [GID] són nombres enters que representen la identificació d'usuari i la identificació de grup principal a la qual [nom d'usuari] pertany, respectivament.
  4. El [directori d'inici] indica el camí absolut al directori d'inici de [nom d'usuari] i
  5. El [intèrpret d'ordres predeterminat] és l'intèrpret d'ordres que estarà disponible per a aquest usuari quan iniciï sessió al sistema.

La informació del grup s'emmagatzema al fitxer /etc/group. Cada registre té el format següent.

[Group name]:[Group password]:[GID]:[Group members]

  1. [Nom del grup] és el nom del grup.
  2. Una x a [Contrasenya de grup] indica que no s'utilitzen contrasenyes de grup.
  3. [GID]: igual que a /etc/passwd.
  4. [Membres del grup]: una llista d'usuaris separats per comes que són membres de [Nom del grup].

Després d'afegir un compte, podeu editar la informació següent (per citar alguns camps) mitjançant l'ordre usermod, la sintaxi bàsica de la qual de usermod és la següent.

# usermod [options] [username]

Utilitzeu la marca –expiredate seguida d'una data en format AAAA-MM-DD.

# usermod --expiredate 2014-10-30 tecmint

Utilitzeu les opcions combinades -aG o –afegir –grups, seguides d'una llista de grups separats per comes.

# usermod --append --groups root,users tecmint

Utilitzeu les opcions -d o –home, seguides de la ruta absoluta al nou directori d'inici.

# usermod --home /tmp tecmint

Utilitzeu –shell, seguit del camí del nou intèrpret d'ordres.

# usermod --shell /bin/sh tecmint
# groups tecmint
# id tecmint

Ara executem totes les ordres anteriors d'una vegada.

# usermod --expiredate 2014-10-30 --append --groups root,users --home /tmp --shell /bin/sh tecmint

A l'exemple anterior, establirem la data de caducitat del compte d'usuari de tecmint al 30 d'octubre de 2014. També afegirem el compte al grup root i usuaris. Finalment, establirem sh com a shell predeterminat i canviarem la ubicació del directori inicial a /tmp:

Llegiu també:

  1. 15 exemples d'ordres useradd a Linux
  2. 15 exemples d'ordres usermod a Linux

Per als comptes existents, també podem fer el següent.

Utilitzeu l'opció -L (L majúscula) o –bloquejar per bloquejar la contrasenya d'un usuari.

# usermod --lock tecmint

Utilitzeu l'opció –u o –desbloquejar per desbloquejar la contrasenya d'un usuari que s'havia bloquejat anteriorment.

# usermod --unlock tecmint

Executeu la següent sèrie d'ordres per aconseguir l'objectiu.

# groupadd common_group # Add a new group
# chown :common_group common.txt # Change the group owner of common.txt to common_group
# usermod -aG common_group user1 # Add user1 to common_group
# usermod -aG common_group user2 # Add user2 to common_group
# usermod -aG common_group user3 # Add user3 to common_group

Podeu suprimir un grup amb l'ordre següent.

# groupdel [group_name]

Si hi ha fitxers propietat de group_name, no se suprimiran, però el propietari del grup s'establirà en el GID del grup que s'ha suprimit.

Permisos de fitxers de Linux

A més dels permisos bàsics de lectura, escriptura i execució que hem comentat a Eines d'arxiu i Configuració d'atributs de fitxers - Part 3 d'aquesta sèrie, hi ha altres configuracions de permisos menys utilitzades (però no menys importants), de vegades anomenades \ permisos especials”.

Igual que els permisos bàsics comentats anteriorment, s'estableixen mitjançant un fitxer octal o mitjançant una lletra (notació simbòlica) que indica el tipus de permís.

Podeu suprimir un compte (juntament amb el seu directori d'inici, si és propietat de l'usuari, i tots els fitxers que hi resideixen, i també el spool de correu) mitjançant l'ordre userdel amb l'opció –remove opció.

# userdel --remove [username]

Cada vegada que s'afegeix un nou compte d'usuari al sistema, es crea un grup amb el mateix nom amb el nom d'usuari com a únic membre. Més endavant es poden afegir altres usuaris al grup. Un dels propòsits dels grups és implementar un control d'accés senzill als fitxers i altres recursos del sistema establint els permisos adequats sobre aquests recursos.

Per exemple, suposem que teniu els usuaris següents.

  1. usuari1 (grup principal: usuari1)
  2. usuari2 (grup principal: usuari2)
  3. usuari3 (grup principal: usuari3)

Tots ells necessiten accés de lectura i escriptura a un fitxer anomenat common.txt situat en algun lloc del vostre sistema local, o potser en una xarxa compartida que usuari1 ha creat. És possible que tingueu la temptació de fer alguna cosa com,

# chmod 660 common.txt
OR
# chmod u=rw,g=rw,o= common.txt [notice the space between the last equal sign and the file name]

Tanmateix, això només proporcionarà accés de lectura i escriptura al propietari del fitxer i als usuaris que són membres del grup propietari del fitxer (usuari1 en aquest cas). Un cop més, és possible que tingueu la temptació d'afegir usuari2 i usuari3 al grup usuari1, però això també els donarà accés a la resta de fitxers propietat. per usuari usuari1 i grup usuari1.

Aquí és on els grups són útils, i això és el que hauríeu de fer en un cas com aquest.

Quan s'aplica el permís setuid a un fitxer executable, un usuari que executa el programa hereta els privilegis efectius del propietari del programa. Com que aquest enfocament pot plantejar problemes de seguretat raonablement, el nombre de fitxers amb permís setuid s'ha de reduir al mínim. És probable que trobeu programes amb aquest permís establert quan un usuari del sistema necessiti accedir a un fitxer propietat de root.

En resum, no és només que l'usuari pugui executar el fitxer binari, sinó que també ho pot fer amb els privilegis de root. Per exemple, comprovem els permisos de /bin/passwd. Aquest binari s'utilitza per canviar la contrasenya d'un compte i modifica el fitxer /etc/shadow. El superusuari pot canviar la contrasenya de qualsevol, però tots els altres usuaris només haurien de poder canviar la seva pròpia.

Per tant, qualsevol usuari hauria de tenir permís per executar /bin/passwd, però només el root podrà especificar un compte. Els altres usuaris només poden canviar les seves contrasenyes corresponents.

Quan s'estableix el bit setgid, el GID efectiu de l'usuari real es converteix en el del propietari del grup. Així, qualsevol usuari pot accedir a un fitxer amb els privilegis concedits al propietari del grup d'aquest fitxer. A més, quan el bit setgid s'estableix en un directori, els fitxers de nova creació hereten el mateix grup que el directori, i els subdirectoris de nova creació també heretaran el bit setgid del directori principal. El més probable és que utilitzeu aquest enfocament sempre que els membres d'un grup determinat necessitin accedir a tots els fitxers d'un directori, independentment del grup principal del propietari del fitxer.

# chmod g+s [filename]

Per establir el setgid en forma octal, anteposa el número 2 als permisos bàsics actuals (o desitjats).

# chmod 2755 [directory]

Quan el \bit enganxós s'estableix als fitxers, Linux només l'ignora, mentre que per als directoris té l'efecte d'impedir que els usuaris esborrin o fins i tot canviïn el nom dels fitxers que conté tret que l'usuari sigui propietari del directori, el fitxer, o és root.

# chmod o+t [directory]

Per establir el bit enganxós en forma octal, anteposa el número 1 als permisos bàsics actuals (o desitjats).

# chmod 1755 [directory]

Sense el bit enganxós, qualsevol persona capaç d'escriure al directori pot esborrar o canviar el nom dels fitxers. Per aquest motiu, el bit enganxós es troba habitualment en directoris, com ara /tmp, que es poden escriure a tot el món.

Atributs especials de fitxer de Linux

Hi ha altres atributs que permeten límits addicionals a les operacions permeses als fitxers. Per exemple, eviteu que el fitxer es canviï de nom, es mogui, se suprimeixi o fins i tot es modifiqui. S'estableixen amb l'ordre chattr i es poden veure amb l'eina lsattr, de la següent manera.

# chattr +i file1
# chattr +a file2

Després d'executar aquestes dues ordres, fitxer1 serà immutable (és a dir, no es pot moure, canviar el nom, modificar-se o suprimir), mentre que fitxer2 entrarà en el mode només d'afegir (només es pot obert en mode d'afegit per escriure).

Accedint al compte root i utilitzant sudo

Una de les maneres en què els usuaris poden accedir al compte root és escrivint.

$ su

i després introduint la contrasenya de root.

Si l'autenticació té èxit, s'iniciarà la sessió com a arrel amb el directori de treball actual igual que abans. Si voleu ser col·locat al directori d'inici de l'arrel, executeu-lo.

$ su -

i després introduïu la contrasenya de root.

El procediment anterior requereix que un usuari normal conegui la contrasenya de root, la qual cosa suposa un greu risc de seguretat. Per aquest motiu, l'administrador del sistema pot configurar l'ordre sudo per permetre a un usuari normal executar ordres com un usuari diferent (normalment el superusuari) d'una manera molt controlada i limitada. Així, es poden establir restriccions a un usuari perquè pugui executar una o més ordres privilegiades específiques i cap altra.

Llegiu també: Diferència entre l'usuari su i sudo

Per autenticar-se amb sudo, l'usuari fa servir la seva pròpia contrasenya. Després d'introduir l'ordre, se'ns demanarà la nostra contrasenya (no la del superusuari) i si l'autenticació té èxit (i si a l'usuari se li han concedit privilegis per executar l'ordre), s'executa l'ordre especificada.

Per concedir accés a sudo, l'administrador del sistema ha d'editar el fitxer /etc/sudoers. Es recomana que aquest fitxer s'editi amb l'ordre visudo en lloc d'obrir-lo directament amb un editor de text.

# visudo

Això obre el fitxer /etc/sudoers mitjançant vim (podeu seguir les instruccions que es donen a Instal·lar i utilitzar vim com a editor - Part 2 d'aquesta sèrie per editar el fitxer).

Aquestes són les línies més rellevants.

Defaults    secure_path="/usr/sbin:/usr/bin:/sbin"
root        ALL=(ALL) ALL
tecmint     ALL=/bin/yum update
gacanepa    ALL=NOPASSWD:/bin/updatedb
%admin      ALL=(ALL) ALL

Fem-los una ullada més de prop.

Defaults    secure_path="/usr/sbin:/usr/bin:/sbin:/usr/local/bin"

Aquesta línia us permet especificar els directoris que s'utilitzaran per a sudo, i s'utilitza per evitar l'ús de directoris específics de l'usuari, que poden danyar el sistema.

Les línies següents s'utilitzen per especificar els permisos.

root        ALL=(ALL) ALL

  1. La primera paraula clau TOT indica que aquesta regla s'aplica a tots els amfitrions.
  2. El segon TOT indica que l'usuari de la primera columna pot executar ordres amb els privilegis de qualsevol usuari.
  3. El tercer TOT significa que es pot executar qualsevol ordre.

tecmint     ALL=/bin/yum update

Si no s'especifica cap usuari després del signe =, sudo assumeix l'usuari root. En aquest cas, l'usuari tecmint podrà executar yum update com a root.

gacanepa    ALL=NOPASSWD:/bin/updatedb

La directiva NOPASSWD permet a l'usuari gacanepa executar /bin/updatedb sense necessitat d'introduir la seva contrasenya.

%admin      ALL=(ALL) ALL

El signe % indica que aquesta línia s'aplica a un grup anomenat \admin. El significat de la resta de la línia és idèntic al d'un usuari normal. Això vol dir que els membres del grup \admin puguin executar totes les ordres com qualsevol usuari a tots els amfitrions.

Per veure quins privilegis us concedeix sudo, feu servir l'opció \-l per llistar-los.

PAM (Mòduls d'autenticació connectables)

Els mòduls d'autenticació connectables (PAM) ofereixen la flexibilitat d'establir un esquema d'autenticació específic per aplicació i/o per servei mitjançant mòduls. Aquesta eina present a totes les distribucions de Linux modernes va superar el problema que sovint s'enfrontaven els desenvolupadors en els primers dies de Linux, quan cada programa que requeria autenticació s'havia de compilar especialment per saber com obtenir la informació necessària.

Per exemple, amb PAM, no importa si la vostra contrasenya s'emmagatzema a /etc/shadow o en un servidor separat dins de la vostra xarxa.

Per exemple, quan el programa d'inici de sessió necessita autenticar un usuari, PAM proporciona dinàmicament la biblioteca que conté les funcions per a l'esquema d'autenticació adequat. Per tant, canviar l'esquema d'autenticació per a l'aplicació d'inici de sessió (o qualsevol altre programa que utilitzi PAM) és fàcil, ja que només implica editar un fitxer de configuració (molt probablement, un fitxer amb el nom de l'aplicació, situat dins de /etc/pam.d). , i menys probable a /etc/pam.conf).

Els fitxers dins de /etc/pam.d indiquen quines aplicacions utilitzen PAM de manera nativa. A més, podem saber si una determinada aplicació utilitza PAM comprovant si la biblioteca PAM (libpam) s'hi ha enllaçat:

# ldd $(which login) | grep libpam # login uses PAM
# ldd $(which top) | grep libpam # top does not use PAM

A la imatge de dalt podem veure que el libpam s'ha enllaçat amb l'aplicació d'inici de sessió. Això té sentit ja que aquesta aplicació està implicada en el funcionament de l'autenticació d'usuaris del sistema, mentre que la part superior no ho fa.

Examinem el fitxer de configuració PAM de passwd: sí, la coneguda utilitat per canviar les contrasenyes de l'usuari. Es troba a /etc/pam.d/passwd:

# cat /etc/passwd

La primera columna indica el tipus d'autenticació que s'utilitzarà amb el module-path (tercera columna). Quan apareix un guionet abans del tipus, PAM no gravarà al registre del sistema si el mòdul no es pot carregar perquè no s'ha pogut trobar al sistema.

Hi ha disponibles els tipus d'autenticació següents:

  1. compte: aquest tipus de mòdul comprova si l'usuari o servei ha proporcionat credencials vàlides per autenticar-se.
  2. auth: aquest tipus de mòdul verifica que l'usuari és qui diu ser i concedeix els privilegis necessaris.
  3. contrasenya: aquest tipus de mòdul permet a l'usuari o servei actualitzar la seva contrasenya.
  4. sessió: aquest tipus de mòdul indica què s'ha de fer abans i/o després que l'autenticació tingui èxit.

La segona columna (anomenada control) indica què hauria de passar si l'autenticació amb aquest mòdul falla:

  1. requisit: si l'autenticació mitjançant aquest mòdul falla, l'autenticació general es denegarà immediatament.
  2. obligatori és similar al requisit, tot i que tots els altres mòduls llistats per a aquest servei es cridaran abans de denegar l'autenticació.
  3. suficient: si l'autenticació a través d'aquest mòdul falla, PAM continuarà atorgant l'autenticació fins i tot si ha fallat un anterior marcat com a obligatori.
  4. opcional: si l'autenticació mitjançant aquest mòdul falla o té èxit, no passa res tret que aquest sigui l'únic mòdul d'aquest tipus definit per a aquest servei.
  5. inclou significa que les línies del tipus donat s'han de llegir des d'un altre fitxer.
  6. substack és similar a includes, però els errors o èxits d'autenticació no provoquen la sortida del mòdul complet, sinó només de la subpila.

La quarta columna, si existeix, mostra els arguments que s'han de passar al mòdul.

Les tres primeres línies de /etc/pam.d/passwd (que es mostra a dalt), carreguen el mòdul d'autenticació del sistema per comprovar que l'usuari ha proporcionat credencials vàlides (compte). Si és així, li permet canviar el testimoni d'autenticació (contrasenya) donant permís per utilitzar passwd (auth).

Per exemple, si afegiu

remember=2

a la línia següent

password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok

a /etc/pam.d/system-auth:

password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok remember=2

les dues últimes contrasenyes hash de cada usuari es guarden a /etc/security/opasswd perquè no es puguin reutilitzar:

Resum

Les habilitats efectives d'usuari i de gestió de fitxers són eines essencials per a qualsevol administrador del sistema. En aquest article hem tractat els conceptes bàsics i esperem que el pugueu utilitzar com a bon punt de partida per construir-hi. No dubteu a deixar els vostres comentaris o preguntes a continuació i us respondrem ràpidament.