Permisos a Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Hola a tots. Aquesta és una traducció d'un article del llibre RedHat RHCSA RHCE 7 RedHat Enterprise Linux 7 EX200 i EX300.

Empènyer: Espero que l'article sigui útil no només per als principiants, sinó que també ajudi els administradors més experimentats a racionalitzar els seus coneixements.

Així que anem.

Permisos a Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Per accedir als fitxers a Linux, s'utilitzen permisos. Aquests permisos s'assignen a tres objectes: el propietari del fitxer, el propietari del grup i un altre objecte (és a dir, tots els altres). En aquest article, aprendràs a aplicar els permisos.

Aquest article comença amb una visió general dels conceptes bàsics, seguit d'una discussió sobre els permisos especials i les llistes de control d'accés (ACL). Al final d'aquest article, cobrim la configuració de permisos predeterminats mitjançant umask, així com la gestió dels atributs d'usuari ampliats.

Gestió de la propietat dels fitxers

Abans de parlar dels permisos, hauríeu de tenir en compte la funció del propietari del fitxer i del directori. La propietat dels fitxers i directoris és vital per gestionar els permisos. En aquesta secció, primer aprendràs com pots veure el propietari. A continuació, aprendràs a canviar el propietari i l'usuari del grup per a fitxers i directoris.

Mostra el propietari d'un fitxer o directori

A Linux, cada fitxer i cada directori té dos propietaris: un usuari i un propietari del grup.

Aquests propietaris s'estableixen quan es crea un fitxer o directori. L'usuari que crea el fitxer passa a ser el propietari d'aquest fitxer i el grup principal al qual pertany el mateix usuari també passa a ser el propietari d'aquest fitxer. Per determinar si vostè, com a usuari, té permís per accedir a un fitxer o directori, l'intèrpret d'ordres comprova la propietat.

Això passa en l'ordre següent:

  1. L'intèrpret d'ordres comprova si sou el propietari del fitxer al qual voleu accedir. Si sou el propietari, obteniu permisos i l'intèrpret d'ordres deixa de comprovar-ho.
  2. Si no sou el propietari del fitxer, l'intèrpret d'ordres comprovarà si sou membre d'un grup que té permisos sobre el fitxer. Si sou membre d'aquest grup, accedireu al fitxer amb els permisos que el grup hagi establert i l'intèrpret d'ordres deixarà de comprovar-ho.
  3. Si no ets ni usuari ni propietari d'un grup, tens els drets d'altres usuaris (Altres).

Per veure les assignacions actuals del propietari, podeu utilitzar l'ordre ls-l. Aquesta ordre mostra l'usuari i el propietari del grup. A continuació podeu veure la configuració del propietari dels directoris del directori /home.

[root@server1 home]# ls -l
total 8
drwx------. 3  bob            bob            74     Feb   6   10:13 bob
drwx------. 3  caroline       caroline       74     Feb   6   10:13 caroline
drwx------. 3  fozia          fozia          74     Feb   6   10:13 fozia
drwx------. 3  lara           lara           74     Feb   6   10:13 lara
drwx------. 5  lisa           lisa           4096   Feb   6   10:12 lisa
drwx------. 14 user           user           4096   Feb   5   10:35 user

Utilitzant l’ordre ls podeu mostrar el propietari dels fitxers en un directori determinat. De vegades pot ser útil obtenir una llista de tots els fitxers del sistema que tenen un usuari o grup determinat com a propietari. Per a això podeu utilitzar trobar. Argumentació cerca-usuari es pot utilitzar amb aquesta finalitat. Per exemple, l'ordre següent enumera tots els fitxers que són propietat de l'usuari linda:

find / -user linda

També podeu utilitzar trobar per cercar fitxers que tinguin un grup determinat com a propietari.

Per exemple, l'ordre següent cerca tots els fitxers que pertanyen al grup usuaris:

find / -group users

Canvi de propietat

Per aplicar els permisos adequats, el primer que cal tenir en compte és la propietat. Hi ha una comanda per a això chown. La sintaxi d'aquesta ordre és fàcil d'entendre:

chown кто что

Per exemple, l'ordre següent canvia el propietari del directori /home/account per l'usuari linda:

chown linda /home/account

Equip chown té diverses opcions, una de les quals és especialment útil: -R. Podeu endevinar què fa perquè aquesta opció també està disponible per a moltes altres ordres. Això us permet establir de forma recursiva el propietari, cosa que us permet establir el propietari del directori actual i tot el que hi ha a continuació. L'ordre següent canvia la propietat del directori /home i tot el que hi ha a sota a l'usuari linda:

Ara els propietaris es veuen així:

[root@localhost ~]# ls -l /home
total 0
drwx------. 2 account account 62 Sep 25 21:41 account
drwx------. 2 lisa    lisa    62 Sep 25 21:42 lisa

Fem-ho:

[root@localhost ~]# chown -R lisa /home/account
[root@localhost ~]#

Ara l'usuari lisa s'ha convertit en el propietari del directori del compte:

[root@localhost ~]# ls -l /home
total 0
drwx------. 2 lisa account 62 Sep 25 21:41 account
drwx------. 2 lisa lisa    62 Sep 25 21:42 lisa

Canvia el propietari d'un grup

Hi ha dues maneres de canviar la propietat d'un grup. Podeu fer-ho fent servir chown, però hi ha una comanda especial anomenada chgrpque fa la feina. Si voleu utilitzar l'ordre chown, utilitzar . o : davant del nom del grup.

L'ordre següent canvia qualsevol propietari del grup /home/account al grup de comptes:

chown .account /home/account

pots fer servir chown per canviar el propietari d'un usuari i/o grup de diverses maneres. Aquests són alguns exemples:

  • chown lisa myfile1 estableix l'usuari lisa com a propietari de myfile1.
  • chown lisa.sales myfile estableix l'usuari lisa com a propietari del fitxer myfile i també defineix el grup de vendes com a propietari del mateix fitxer.
  • chown lisa:sales myfile el mateix que l'ordre anterior.
  • chown .sales myfile estableix el grup de vendes com a propietari de myfile sense canviar el propietari de l'usuari.
  • chown :sales myfile el mateix que l'ordre anterior.

Podeu utilitzar l'ordre chgrpper canviar el propietari del grup. Considereu l'exemple següent, on podeu utilitzar-lo chgrp establiu el propietari del directori del compte al grup de vendes:

chgrp .sales /home/account

Igual que amb chown, podeu utilitzar l'opció -R с chgrp, així com canviar recursivament el propietari del grup.

Entendre el propietari per defecte

És possible que hàgiu notat que quan un usuari crea un fitxer, s'aplica la propietat per defecte.
L'usuari que crea el fitxer es converteix automàticament en el propietari d'aquest fitxer i el grup principal d'aquest usuari es converteix automàticament en el propietari d'aquest fitxer. Aquest és normalment el grup que apareix al fitxer /etc/passwd com a grup principal de l'usuari. Tanmateix, si l'usuari és membre de més d'un grup, l'usuari pot canviar el grup principal efectiu.

Per mostrar el grup primari efectiu actual, l'usuari pot utilitzar l'ordre grups:

[root@server1 ~]# groups lisa
lisa : lisa account sales

Si l'usuari actual de linda vol canviar el grup principal efectiu, utilitzarà l'ordre nougrpseguit del nom del grup que vol establir com a nou grup primari efectiu. Després d'utilitzar l'ordre nougrp el grup principal estarà actiu fins que l'usuari introdueixi una ordre sortir de o no tancar la sessió.

A continuació es mostra com l'usuari linda utilitza aquesta ordre, amb les vendes com a grup principal:

lisa@server1 ~]$ groups
lisa account sales
[lisa@server1 ~]$ newgrp sales
[lisa@server1 ~]$ groups
sales lisa account
[lisa@server1 ~]$ touch file1
[lisa@server1 ~]$ ls -l
total 0
-rw-r--r--. 1 lisa sales 0 Feb 6 10:06 file1

Després de canviar el grup principal efectiu, tots els fitxers nous creats per l'usuari tindran aquest grup com a propietari del grup. Per tornar a la configuració original del grup principal, feu servir sortir de.

Per poder utilitzar l'ordre nougrp, l'usuari ha de ser membre del grup que vol utilitzar com a grup principal. A més, es pot utilitzar una contrasenya de grup per a un grup mitjançant l'ordre gpasswd. Si l'usuari utilitza l'ordre nougrpperò no és membre del grup objectiu, el shell demana la contrasenya del grup. Després d'introduir la contrasenya de grup correcta, s'establirà un nou grup principal efectiu.

Gestió dels drets fonamentals

El sistema de permisos Linux es va inventar a la dècada de 1970. Com que les necessitats d'informàtica eren limitades en aquells anys, el sistema bàsic de permisos era força limitat. Aquest sistema de permisos utilitza tres permisos que es poden aplicar a fitxers i directoris. En aquesta secció, aprendràs a utilitzar i canviar aquests permisos.

Entendre els permisos de lectura, escriptura i execució

Tres permisos bàsics us permeten llegir, escriure i executar fitxers. L'efecte d'aquests permisos és diferent quan s'apliquen a fitxers o directoris. Per a un fitxer, el permís de lectura us dóna dret a obrir el fitxer per llegir-lo. Per tant, podeu llegir el seu contingut, però això significa que el vostre ordinador pot obrir el fitxer per fer-hi alguna cosa.

Un fitxer de programa que necessita accés a una biblioteca ha de tenir, per exemple, accés de lectura a aquesta biblioteca. Es dedueix que el permís de lectura és el permís més bàsic que necessiteu per treballar amb fitxers.

Quan s'aplica a un directori, la lectura us permet mostrar el contingut d'aquest directori. Heu de tenir en compte que aquest permís no us permet llegir els fitxers del directori. El sistema de permisos de Linux no coneix l'herència, i l'única manera de llegir un fitxer és utilitzar permisos de lectura en aquest fitxer.

Com probablement podeu endevinar, el permís d'escriptura, si s'aplica a un fitxer, permet escriure al fitxer. En altres paraules, us permet canviar el contingut dels fitxers existents. Tanmateix, no us permet crear o suprimir fitxers nous ni canviar els permisos dels fitxers. Per fer-ho, heu de donar permís d'escriptura al directori on voleu crear el fitxer. Als directoris, aquest permís també us permet crear i eliminar nous subdirectoris.

El permís d'execució és el que necessiteu per executar el fitxer. Mai s'instal·larà per defecte, cosa que fa que Linux sigui gairebé completament immune als virus. Només algú amb permisos d'escriptura al directori pot aplicar el permís d'execució.

A continuació es resumeix l'ús dels permisos bàsics:

Permisos a Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Utilitzant chmod

L'ordre s'utilitza per gestionar els permisos. Chmod. Utilitzant Chmod podeu establir permisos per a l'usuari (usuari), grups (grup) i altres (altres). Podeu utilitzar aquesta ordre en dos modes: mode relatiu i mode absolut. En mode absolut, s'utilitzen tres dígits per establir els permisos bàsics.

Permisos a Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Quan configureu els permisos, calculeu el valor que necessiteu. Si voleu configurar lectura/escriptura/execució per a l'usuari, llegir/executar per al grup i llegir/executar per a altres a /somefile, feu servir l'ordre següent Chmod:

chmod 755 /somefile

Quan utilitzeu Chmod d'aquesta manera, tots els permisos actuals se substitueixen pels permisos que heu establert.

Si voleu canviar els permisos relatius als permisos actuals, podeu utilitzar Chmod en mode relatiu. Utilitzant Chmod en mode relatiu treballeu amb tres indicadors per indicar què voleu fer:

  1. Primer, especifiqueu per a qui voleu canviar els permisos. Per fer-ho, podeu triar entre usuari (u), grup (g) i altres (o).
  2. A continuació, feu servir una instrucció per afegir o eliminar permisos del mode actual, o bé establir-los de manera absoluta.
  3. Al final fas servir r, w и xper especificar quins permisos voleu establir.

Quan canvieu els permisos en mode relatiu, podeu saltar la part "a" per afegir o eliminar el permís per a tots els objectes. Per exemple, aquesta ordre afegeix permís d'execució per a tots els usuaris:

chmod +x somefile

Quan treballeu en mode relatiu, també podeu utilitzar ordres més complexes. Per exemple, aquesta ordre afegeix permís d'escriptura a un grup i elimina el permís de lectura dels altres:

chmod g+w,o-r somefile

Quan s'utilitza el chmod -R o+rx /data establiu el permís d'execució per a tots els directoris, així com els fitxers del directori /data. Per establir el permís d'execució només per als directoris i no per als fitxers, feu servir chmod -R o+ rX /data.

La X majúscula garanteix que els fitxers no tinguin permís d'execució tret que el fitxer ja hagi establert el permís d'execució per a alguns objectes. Això fa que X sigui una manera més intel·ligent de gestionar els permisos d'execució; això evitarà establir aquest permís en fitxers on no sigui necessari.

Drets ampliats

A més dels permisos bàsics que acabeu de llegir, Linux també té un conjunt de permisos avançats. Aquests no són els permisos que definiu per defecte, però de vegades proporcionen una addició útil. En aquesta secció, aprendràs què són i com configurar-los.

Entendre els permisos ampliats de SUID, GUID i Sticky Bit

Hi ha tres permisos avançats. El primer d'ells és el permís per establir un identificador d'usuari (SUID). En alguns casos especials, podeu aplicar aquest permís als fitxers executables. Per defecte, un usuari que executa un executable executa aquest fitxer amb els seus propis permisos.

Per als usuaris normals, això normalment significa que l'ús del programa és limitat. Tanmateix, en alguns casos, l'usuari necessita permisos especials, només per realitzar una tasca específica.

Penseu, per exemple, en una situació en què un usuari necessita canviar la seva contrasenya. Per fer-ho, l'usuari ha d'escriure la seva nova contrasenya al fitxer /etc/shadow. Tanmateix, aquest fitxer no es pot escriure per usuaris que no siguin root:

root@hnl ~]# ls -l /etc/shadow
----------. 1 root root 1184 Apr 30 16:54 /etc/shadow

El permís SUID ofereix una solució a aquest problema. La utilitat /usr/bin/passwd utilitza aquest permís de manera predeterminada. Això vol dir que quan es canvia la contrasenya, l'usuari es converteix temporalment en root, la qual cosa li permet escriure al fitxer /etc/shadow. Podeu veure el permís SUID amb ls-l как s en una posició on normalment esperaries veure x per a permisos personalitzats:

[root@hnl ~]# ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 32680 Jan 28 2010 /usr/bin/passwd

El permís SUID pot semblar útil (i en alguns casos ho és), però al mateix temps és potencialment perillós. Si no s'aplica correctament, podeu cedir accidentalment els permisos d'arrel. Per tant, recomano utilitzar-lo només amb la màxima cura.

La majoria dels administradors mai hauran d'utilitzar-lo; només el veureu en alguns fitxers on el sistema operatiu l'hauria de configurar per defecte.

El segon permís especial és l'identificador de grup (SGID). Aquest permís té dos efectes. Quan s'aplica a un fitxer executable, dóna a l'usuari que executa el fitxer els permisos del propietari del grup del fitxer. Així, SGID pot fer més o menys el mateix que SUID. Tanmateix, SGID pràcticament no s'utilitza per a aquesta finalitat.

Igual que amb el permís SUID, SGID s'aplica a alguns fitxers del sistema com a configuració predeterminada.

Quan s'aplica a un directori, el SGID pot ser útil perquè el podeu utilitzar per establir el propietari del grup predeterminat per als fitxers i subdirectoris creats en aquest directori. Per defecte, quan un usuari crea un fitxer, el seu grup principal efectiu s'estableix com a propietari del grup d'aquest fitxer.

Això no sempre és molt útil, sobretot perquè els usuaris de Red Hat/CentOS tenen el seu grup principal configurat en un grup amb el mateix nom que l'usuari, i del qual l'usuari és l'únic membre. Així, per defecte, els fitxers que l'usuari creï es compartiran de manera massiva.

Imagineu una situació en què els usuaris linda i lori treballen en comptabilitat i són membres d'un grup Compte. Per defecte, aquests usuaris són membres d'un grup privat del qual són l'únic membre. Tanmateix, tots dos usuaris són membres del grup de comptes, però també com a paràmetre secundari del grup.

La situació per defecte és que quan qualsevol d'aquests usuaris crea un fitxer, el grup principal es converteix en el propietari. Per tant, per defecte, la linda no pot accedir als fitxers creats per lori, i viceversa. Tanmateix, si creeu un directori de grup compartit (per exemple, /groups/account) i assegureu-vos que el permís SGID s'aplica a aquest directori i que el compte del grup està definit com a propietari del grup per a aquest directori, tots els fitxers creats en aquest directori i tots els dels seus subdirectoris, també obteniu el compte del grup com a propietari del grup per defecte.

Per aquest motiu, el permís SGID és un permís molt útil per configurar-lo en directoris de grups públics.

El permís SGID es mostra a la sortida ls-l как s a la posició on normalment trobareu permís per executar un grup:

[root@hnl data]# ls -ld account
drwxr-sr-x. 2 root account 4096 Apr 30 21:28 account

El tercer dels permisos especials és el bit enganxós. Aquest permís és útil per protegir els fitxers de la supressió accidental en un entorn on diversos usuaris tenen accés d'escriptura al mateix directori. Si s'utilitza un bit enganxós, un usuari només pot suprimir un fitxer si és l'usuari propietari del fitxer o directori que conté el fitxer. Per aquest motiu, s'utilitza com a permís predeterminat per al directori /tmp i també pot ser útil per als directoris de grups públics.

Sense el bit enganxós, si l'usuari pot crear fitxers en un directori, també pot suprimir fitxers d'aquest directori. En un entorn de grup públic, això pot ser molest. Imagineu els usuaris linda i lori, que tots dos tenen permisos d'escriptura al directori /data/account i obtenen aquests permisos sent membres del grup de comptes. Per tant, linda pot esborrar fitxers creats per lori i viceversa.

Quan apliqueu el bit enganxós, l'usuari només pot suprimir fitxers si es compleix una de les condicions següents:

  • L'usuari és el propietari del fitxer;
  • L'usuari és el propietari del directori on es troba el fitxer.

Quan s'utilitza el ls-l, podeu veure la part enganxosa com t a la posició on normalment veuríeu el permís d'execució per a altres:

[root@hnl data]# ls -ld account/
drwxr-sr-t. 2 root account 4096 Apr 30 21:28 account/

Aplicació de drets ampliats

Per aplicar SUID, SGID i sticky bit també podeu utilitzar Chmod. SUID té un valor numèric de 4, SGID té un valor numèric de 2 i el bit adhesiu té un valor numèric d'1.

Si voleu aplicar aquests permisos, heu d'afegir un argument de quatre dígits a Chmod, el primer dígit del qual fa referència a permisos especials. La línia següent, per exemple, afegirà el permís SGID al directori i establirà rwx per a l'usuari i rx per al grup i altres:

chmod 2755 /somedir

Això és poc pràctic si necessiteu veure els permisos actuals establerts abans de treballar-hi Chmod en mode absolut. (Correu el risc de sobreescriure els permisos si no ho feu). Per tant, us recomano executar en mode relatiu si necessiteu aplicar algun dels permisos especials:

  1. Per a ús SUID chmod u+s.
  2. Per a ús de SGID chmod g+s.
  3. Per a ús enganxós chmod + t, seguit del nom del fitxer o directori per al qual voleu establir els permisos.

La taula resumeix tot el que necessiteu saber sobre la gestió de permisos especials.

Permisos a Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Exemple de treball amb drets especials

En aquest exemple, feu servir permisos especials per facilitar que els membres del grup comparteixin fitxers al directori del grup compartit. Assigneu el bit d'identificació a l'identificador de grup establert, així com al bit enganxós, i veieu que un cop establerts, s'afegeixen funcions per facilitar que els membres del grup treballin junts.

  1. Obre un terminal on siguis l'usuari de Linda. Podeu crear un usuari amb l'ordre Linda, afegiu la contrasenya Passwd Linda.
  2. Creeu el directori /data a l'arrel i el subdirectori /data/sales amb l'ordre mkdir -p /data/sales. Completa cd /data/vendesper anar al directori de vendes. Completa toca linda1 и toca linda2per crear dos fitxers buits propietat de la linda.
  3. Executar su-lisa per canviar l'usuari actual a l'usuari lisa, que també és membre del grup de vendes.
  4. Executar cd /data/vendes i des d'aquest directori executeu ls-l. Veureu dos fitxers creats per l'usuari linda i que pertanyen al grup linda. Completa rm -f linda*. Això eliminarà tots dos fitxers.
  5. Executar toca lisa1 и toca lisa2per crear dos fitxers propietat de l'usuari lisa.
  6. Executar su- per elevar els vostres privilegis a root.
  7. Executar chmod g+s,o+t /data/salesper establir el bit d'identificador de grup (GUID) així com el bit enganxós al directori del grup compartit.
  8. Executar su-linda. Llavors fes toca linda3 и toca linda4. Ara hauríeu de veure que els dos fitxers que heu creat són propietat del grup de vendes, que és el propietari del grup del directori /data/sales.
  9. Executar rm -rf lisa*. El bit enganxós evita que aquests fitxers s'esborrin en nom de l'usuari linda, ja que no sou el propietari d'aquests fitxers. Tingueu en compte que si l'usuari linda és el propietari del directori /data/sales, pot suprimir aquests fitxers de totes maneres!

Gestió d'ACL (setfacl, getfacl) a Linux

Tot i que els permisos ampliats comentats anteriorment afegeixen funcionalitats útils a la manera com Linux gestiona els permisos, no us permet concedir permisos a més d'un usuari o grup al mateix fitxer.

Les llistes de control d'accés ofereixen aquesta funció. A més, permeten als administradors establir els permisos predeterminats d'una manera complexa, on els permisos establerts poden variar d'un directori a un altre.

Entendre les ACL

Tot i que el subsistema ACL afegeix una gran funcionalitat al vostre servidor, té un desavantatge: no totes les utilitats ho admeten. Per tant, podeu perdre la configuració de l'ACL quan copieu o moveu fitxers, i el programari de còpia de seguretat pot fallar en fer una còpia de seguretat de la configuració d'ACL.

La utilitat tar no admet ACL. Per assegurar-vos que la configuració de l'ACL no es perd quan creeu una còpia de seguretat, feu servir estrella en lloc de quitrà. estrella funciona amb les mateixes opcions que tar; només afegeix suport per a la configuració d'ACL.

També podeu fer una còpia de seguretat de les ACL amb getfacl, que es pot restaurar mitjançant l'ordre setfacl. Per crear una còpia de seguretat, utilitzeu getfacl -R /directory > fitxer.acls. Per restaurar la configuració des d'un fitxer de còpia de seguretat, feu servir setfacl --restore=fitxer.acl.

La manca de suport d'algunes eines no hauria de ser un problema. Les ACL sovint s'apliquen als directoris com a mesura estructural més que a fitxers individuals.
Per tant, no n'hi haurà molts, sinó només uns quants, aplicats en llocs intel·ligents del sistema de fitxers. Per tant, restaurar les ACL originals amb les quals vau treballar és relativament fàcil, fins i tot si el vostre programari de còpia de seguretat no les admet.

Preparació del sistema de fitxers per a ACL

Abans de començar a treballar amb ACL, és possible que hàgiu de preparar el vostre sistema de fitxers per admetre les ACL. Com que les metadades del sistema de fitxers s'han d'ampliar, no sempre hi ha suport predeterminat per a les ACL al sistema de fitxers. Si rebeu un missatge "operació no compatible" quan configureu les ACL per a un sistema de fitxers, és possible que el vostre sistema de fitxers no admeti les ACL.

Per solucionar-ho, cal afegir l'opció muntatge acl a /etc/fstab perquè el sistema de fitxers estigui muntat amb suport ACL per defecte.

Canviar i visualitzar la configuració d'ACL amb setfacl i getfacl

Per establir una ACL necessiteu l'ordre setfacl. Per veure la configuració actual de l'ACL, necessiteu getfacl. Equip ls-l no mostra cap ACL existent; només mostra un + després de la llista de permisos, que indica que les ACL també s'apliquen al fitxer.

Abans de configurar les ACL, sempre és una bona idea mostrar la configuració actual d'ACL amb getfacl. A l'exemple següent, podeu veure els permisos actuals, tal com es mostra amb ls-l, i també com es mostra amb getfacl. Si us fixeu prou bé, veureu que la informació que es mostra és exactament la mateixa.

[root@server1 /]# ls -ld /dir
drwxr-xr-x. 2 root root 6 Feb 6 11:28 /dir
[root@server1 /]# getfacl /dir
getfacl: Removing leading '/' from absolute path names
# file: dir
# owner: root
# group: root
user::rwx
group::r-x
other::r-x

Com a resultat d'executar l'ordre getfacl a continuació podeu veure que els permisos es mostren per a tres objectes diferents: usuari, grup i altres. Ara afegim una ACL per donar també permisos de lectura i execució al grup de vendes. comanda per a això setfacl -mg:sales:rx /dir. En aquest equip -m indica que cal canviar la configuració actual de l'ACL. Després d'això g:vendes:rx diu a l'ordre que estableixi l'ACL de lectura i execució (rx) per al grup (g) vendes. A continuació podeu veure com és l'ordre, així com la sortida de l'ordre getfacl després de canviar la configuració actual de l'ACL.

[root@server1 /]# setfacl -m g:sales:rx /dir
[root@server1 /]# getfacl /dir
getfacl: Removing leading '/' from absolute path names
# file: dir
# owner: root
# group: root
user::rwx
group::r-x
group:sales:r-x
mask::r-x
other::r-x

Ara que enteneu com configurar una ACL de grup, és fàcil entendre les ACL per als usuaris i altres usuaris. Per exemple, l'ordre setfacl -mu:linda:rwx /data dóna permisos a l'usuari linda al directori /data sense fer-ne el propietari ni canviar l'assignació del propietari actual.

Equip setfacl té moltes característiques i opcions. Una opció és especialment important, el paràmetre -R. Si s'utilitza, l'opció fa que l'ACL s'estableixi per a tots els fitxers i subdirectoris que existeixen actualment al directori on establiu l'ACL. Es recomana que utilitzeu sempre aquesta opció quan canvieu les ACL dels directoris existents.

Treballant amb ACL per defecte

Un dels avantatges d'utilitzar ACL és que podeu concedir permisos a diversos usuaris o grups d'un directori. Un altre avantatge és que podeu habilitar l'herència treballant amb les ACL predeterminades.

En establir l'ACL per defecte, determineu els permisos que s'establiran per a tots els elements nous creats al directori. Tingueu en compte que l'ACL per defecte no canvia els permisos dels fitxers i subdirectoris existents. Per canviar-los, també heu d'afegir una ACL normal!

Això és important saber-ho. Si voleu utilitzar una ACL per configurar diversos usuaris o grups per accedir al mateix directori, heu de configurar l'ACL dues vegades. Primer ús setfacl -R -mper canviar l'ACL dels fitxers actuals. A continuació, utilitzeu setfacl-md:per tenir cura de tots els elements nous que també es crearan.

Per establir l'ACL per defecte només cal afegir l'opció d després de l'opció -m (l'ordre importa!). Així que utilitza setfacl -md:g:sales:rx /datasi voleu que les vendes grupals llegeixin i executin tot el que es creï mai al directori /data.

Quan utilitzeu ACL predeterminades, també pot ser útil establir ACL per a altres. Això normalment no té gaire sentit perquè també podeu canviar els permisos per als altres Chmod. No obstant això, amb el que no pots fer Chmod, és especificar els drets que s'han d'atorgar a altres usuaris per a cada fitxer nou que es creï. Si voleu evitar que altres usuaris obtinguin permisos sobre qualsevol cosa creada a /data, per exemple, feu servir setfacl -md:o::- /data.

Les ACL i els permisos normals no sempre estan ben integrats. Poden sorgir problemes si apliqueu una ACL predeterminada a un directori, després s'afegeixen elements a aquest directori i després intenteu canviar els permisos normals. Els canvis que s'apliquen als permisos normals no es reflectiran bé a la visió general de l'ACL. Per evitar problemes, configureu primer els permisos normals i, a continuació, configureu els ACL predeterminats (i després intenteu no canviar-los de nou).

Exemple de gestió de drets elevats utilitzant ACL

En aquest exemple, continuareu amb els directoris /data/account i /data/sales que heu creat anteriorment. En els exemples anteriors, us heu assegurat que el grup de vendes té permisos a /data/sales i el grup de comptes té permisos a /data/account.

En primer lloc, assegureu-vos que el grup de comptes obté permisos de lectura al directori /data/sales i que el grup de vendes tingui permisos de lectura al directori /data/account.

A continuació, configureu les ACL predeterminades per assegurar-vos que tots els fitxers nous tinguin els permisos correctes per a tots els elements nous.

  1. Obre un terminal.
  2. Executar setfacl -mg:account:rx /data/sales и setfacl -mg:sales:rx /data/account.
  3. Executar getfaclper assegurar-vos que els permisos s'han configurat com voleu.
  4. Executar setfacl -md:g:account:rwx,g:sales:rx /data/salesper establir l'ACL per defecte per al directori de vendes.
  5. Afegiu una ACL predeterminada per al directori /data/account utilitzant setfacl -md:g:vendes:rwx,g:compte:rx /data/compte.
  6. Verifiqueu que la configuració de l'ACL estigui vigent afegint un fitxer nou a /data/sales. Completa toqueu /data/sales/newfile i executar getfacl /data/sales/newfile per comprovar els permisos actuals.

Configuració dels permisos predeterminats amb umask

Més amunt, heu après a treballar amb ACL predeterminades. Si no utilitzeu una ACL, hi ha una opció de shell que determina els permisos predeterminats que obtindreu: umask (màscara inversa). En aquesta secció, aprendràs a canviar els permisos predeterminats amb umask.

És possible que hàgiu notat que quan creeu un fitxer nou, s'estableixen alguns permisos predeterminats. Aquests permisos estan determinats per la configuració umask. Aquesta configuració de l'intèrpret d'ordres s'aplica a tots els usuaris en iniciar sessió. En paràmetre umask s'utilitza un valor numèric, que es resta dels permisos màxims que es poden establir automàticament per al fitxer; la configuració màxima per als fitxers és 666 i per als directoris és 777.

Tanmateix, s'apliquen algunes excepcions a aquesta regla. Podeu trobar una visió general completa de la configuració umask a la taula següent.

Dels números utilitzats a umask, com en el cas dels arguments numèrics de l'ordre Chmod, el primer dígit fa referència als permisos de l'usuari, el segon dígit es refereix als permisos del grup i l'últim es refereix als permisos predeterminats establerts per als altres. Significat umask el 022 per defecte dóna 644 per a tots els fitxers nous i 755 per a tots els directoris nous creats al vostre servidor.

Visió general completa de tots els valors numèrics umask i els seus resultats a la taula següent.

Permisos a Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Una manera fàcil de veure com funciona la configuració d'umask és la següent: comenceu amb els permisos predeterminats del fitxer establerts a 666 i resteu l'umask per obtenir els permisos efectius. Feu el mateix amb el directori i els seus permisos predeterminats de 777.

Hi ha dues maneres de canviar la configuració d'umask: per a tots els usuaris i per a usuaris individuals. Si voleu establir l'umask per a tots els usuaris, heu d'assegurar-vos que la configuració de l'umask es tingui en compte quan inicieu els fitxers de l'entorn de l'intèrpret d'ordres, tal com s'especifica a /etc/profile. L'enfocament correcte és crear un script shell anomenat umask.sh al directori /etc/profile.d i especificar l'umask que voleu utilitzar en aquest script shell. Si es canvia l'umask en aquest fitxer, s'aplica a tots els usuaris després d'iniciar sessió al servidor.

Una alternativa a la configuració de l'umask mitjançant /etc/profile i fitxers relacionats, on s'aplica a tots els usuaris que inicien sessió, és canviar la configuració de l'umask en un fitxer anomenat .profile que es crea al directori inicial de cada usuari.

La configuració aplicada en aquest fitxer només s'aplica a l'usuari individual; per tant, aquest és un bon mètode si necessiteu més detalls. Personalment, m'agrada que aquesta funció canviï l'umask predeterminat per a l'usuari root a 027 mentre que els usuaris normals s'executen amb l'umask predeterminat de 022.

Treballar amb atributs d'usuari ampliats

Aquesta és la secció final sobre els permisos de Linux.

Quan es treballa amb permisos, sempre hi ha una relació entre un objecte d'usuari o grup i els permisos que tenen els objectes d'usuari o grup en un fitxer o directori. Un mètode alternatiu per protegir els fitxers en un servidor Linux és treballar amb atributs.
Els atributs fan la seva feina independentment de l'usuari que accedeix al fitxer.

Igual que amb les ACL, és possible que els atributs de fitxer hagin d'incloure l'opció muntar.

Aquesta és una opció user_xattr. Si rebeu un missatge "operació no compatible" quan treballeu amb atributs d'usuari ampliats, assegureu-vos d'establir el paràmetre muntar a /etc/fstab.

S'han documentat molts atributs. Alguns atributs estan disponibles però encara no s'han implementat. No els utilitzeu; no et portaran res.

A continuació es mostren els atributs més útils que podeu aplicar:

A Aquest atribut garanteix que el temps d'accés al fitxer del fitxer no canviï.
Normalment, cada vegada que s'obre un fitxer, el temps d'accés al fitxer s'ha d'enregistrar a les metadades del fitxer. Això afecta negativament el rendiment; per tant, per als fitxers als quals s'accedeix regularment, l'atribut A es pot utilitzar per desactivar aquesta funció.

a Aquest atribut us permet afegir però no eliminar un fitxer.

c Si utilitzeu un sistema de fitxers que admet la compressió a nivell de volum, aquest atribut de fitxer assegura que el fitxer es comprimirà la primera vegada que s'habilita el mecanisme de compressió.

D Aquest atribut garanteix que els canvis als fitxers s'escriuen al disc immediatament en lloc d'emmagatzemar-los primer a la memòria cau. Aquest és un atribut útil en fitxers de base de dades importants per assegurar-vos que no es perdin entre la memòria cau de fitxers i el disc dur.

d Aquest atribut assegura que el fitxer no es desarà a les còpies de seguretat on s'utilitzi la utilitat d'abocament.

I Aquest atribut permet la indexació del directori on està habilitat. Això proporciona un accés més ràpid als fitxers per a sistemes de fitxers primitius com Ext3 que no utilitzen la base de dades B-tree per accedir ràpidament als fitxers.

i Aquest atribut fa que el fitxer sigui immutable. Per tant, no es poden fer canvis al fitxer, cosa que és útil per als fitxers que necessiten protecció addicional.

j Aquest atribut assegura que, en un sistema de fitxers ext3, el fitxer s'escriu primer al diari i després als blocs de dades del disc dur.

s Sobreescriu els blocs en què es va desar el fitxer a 0 després d'haver suprimit el fitxer. Això garanteix que un fitxer no es pugui restaurar un cop s'hagi suprimit.

u Aquest atribut emmagatzema informació sobre la supressió. Això us permet desenvolupar una utilitat que funcioni amb aquesta informació per rescatar fitxers suprimits.

Si voleu aplicar els atributs, podeu utilitzar l'ordre xatr. Per exemple, utilitzar chattr +s algun fitxerper aplicar atributs a algun fitxer. Necessites eliminar un atribut? A continuació, utilitzeu chattr -s algun fitxeri serà eliminat. Per obtenir una visió general de tots els atributs que s'apliquen actualment, utilitzeu l'ordre lsattr.

Resum

En aquest article, heu après a treballar amb permisos. Heu llegit sobre els tres permisos bàsics, els permisos avançats i com aplicar les ACL en un sistema de fitxers. També heu après a utilitzar l'opció umask per aplicar els permisos predeterminats. Al final d'aquest article, heu après com utilitzar els atributs ampliats per l'usuari per aplicar una capa addicional de seguretat del sistema de fitxers.

Si t'ha agradat aquesta traducció, escriu-ne als comentaris. Hi haurà més motivació per fer traduccions útils.

S'han corregit alguns errors tipogràfics i gramaticals de l'article. S'han reduït alguns paràgrafs voluminosos en altres més petits per a una millor llegibilitat.

En lloc de "Només algú amb drets d'administrador al directori pot aplicar el permís d'execució". arreglat a "Només algú amb permisos d'escriptura al directori pot aplicar el permís d'execució.", que seria més correcte.

Gràcies pels comentaris berez.

Reemplaçat:
Si no sou el propietari de l'usuari, l'intèrpret d'ordres comprovarà si sou membre d'un grup, també conegut com el grup del fitxer.

A la:
Si no sou el propietari del fitxer, l'intèrpret d'ordres comprovarà si sou membre d'un grup que té permisos sobre el fitxer. Si sou membre d'aquest grup, accedireu al fitxer amb els permisos que el grup hagi establert i l'intèrpret d'ordres deixarà de comprovar-ho.

Gràcies pel teu comentari CryptoPirate

Font: www.habr.com

Afegeix comentari