Tilladelser i Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Hej alle. Dette er en oversættelse af en artikel fra bogen RedHat RHCSA RHCE 7 RedHat Enterprise Linux 7 EX200 og EX300.

Skubbe: Jeg håber, at artiklen ikke kun vil være nyttig for begyndere, men også vil hjælpe mere erfarne administratorer med at strømline deres viden.

Så lad os gå.

Tilladelser i Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

For at få adgang til filer i Linux, bruges tilladelser. Disse tilladelser er tildelt tre objekter: filejeren, gruppeejeren og et andet objekt (det vil sige alle andre). I denne artikel lærer du, hvordan du anvender tilladelser.

Denne artikel begynder med en oversigt over de grundlæggende begreber, efterfulgt af en diskussion af særlige tilladelser og adgangskontrollister (ACL'er). I slutningen af ​​denne artikel dækker vi indstilling af standardtilladelser via umask samt administration af udvidede brugerattributter.

Filejerskabsstyring

Før du diskuterer tilladelser, bør du være opmærksom på rollen som fil- og mappeejer. Ejerskab af filer og mapper er afgørende for at håndtere tilladelser. I dette afsnit lærer du først, hvordan du kan se ejeren. Du vil derefter lære, hvordan du ændrer gruppeejer og bruger for filer og mapper.

Viser ejeren af ​​en fil eller et bibliotek

I Linux har hver fil og hver mappe to ejere: en bruger og en gruppeejer.

Disse ejere indstilles, når en fil eller et bibliotek oprettes. Brugeren, der opretter filen, bliver ejeren af ​​denne fil, og den primære gruppe, som den samme bruger tilhører, bliver også ejeren af ​​filen. For at afgøre, om du som bruger har tilladelse til at få adgang til en fil eller et bibliotek, tjekker shellen for ejerskab.

Dette sker i følgende rækkefølge:

  1. Skallen kontrollerer, om du er ejeren af ​​den fil, du vil have adgang til. Hvis du er ejeren, får du tilladelser, og skallen stopper med at tjekke.
  2. Hvis du ikke er ejeren af ​​filen, vil shellen kontrollere, om du er medlem af en gruppe, der har tilladelser til filen. Hvis du er medlem af denne gruppe, får du adgang til filen med de tilladelser, som gruppen har indstillet, og shellen stopper med at kontrollere.
  3. Hvis du hverken er bruger eller ejer af en gruppe, får du andre brugeres rettigheder (Andet).

For at se de aktuelle ejertildelinger kan du bruge kommandoen ls-l. Denne kommando viser brugeren og ejeren af ​​gruppen. Nedenfor kan du se ejerindstillingerne for mapper i /home-mappen.

[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

Med kommandoen ls du kan vise ejeren af ​​filer i en given mappe. Nogle gange kan det være nyttigt at få en liste over alle filer på systemet, som har en given bruger eller gruppe som ejer. Til dette kan du bruge find. Argument find-bruger kan bruges til dette formål. For eksempel viser følgende kommando alle filer, der ejes af brugeren linda:

find / -user linda

Du kan også bruge find at søge efter filer, der har en bestemt gruppe som deres ejer.

For eksempel søger den følgende kommando efter alle filer, der tilhører gruppen brugere:

find / -group users

Ejerskifte

For at anvende de relevante tilladelser er den første ting at overveje ejerskab. Der er en kommando til dette chown. Syntaksen for denne kommando er let at forstå:

chown кто что

For eksempel ændrer følgende kommando ejeren af ​​/home/account-biblioteket til brugeren linda:

chown linda /home/account

Team chown har flere muligheder, hvoraf den ene er særlig nyttig: -R. Du kan gætte, hvad det gør, fordi denne mulighed også er tilgængelig for mange andre kommandoer. Dette giver dig mulighed for rekursivt at indstille ejeren, hvilket giver dig mulighed for at angive ejeren af ​​den aktuelle mappe og alt nedenfor. Følgende kommando ændrer ejerskabet af /home-mappen og alt under det til linda-brugeren:

Nu ser ejerne sådan her ud:

[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

Lad os gøre det:

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

Nu er brugeren lisa blevet ejer af kontobiblioteket:

[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

Skift ejer af en gruppe

Der er to måder at ændre ejerskabet af en gruppe på. Du kan gøre dette vha chown, men der hedder en speciel kommando chgrpder gør jobbet. Hvis du vil bruge kommandoen chown, brug . eller : foran gruppenavnet.

Følgende kommando ændrer enhver ejer af /home/kontogruppen til kontogruppen:

chown .account /home/account

du kan bruge chown at ændre ejeren af ​​en bruger og/eller gruppe på flere måder. Her er nogle eksempler:

  • chown lisa myfile1 indstiller brugeren lisa som ejer af myfile1.
  • chown lisa.sales myfile indstiller brugeren lisa som ejer af myfile-filen, og indstiller også salgsgruppen som ejer af den samme fil.
  • chown lisa:sales myfile det samme som den forrige kommando.
  • chown .sales myfile indstiller salgsgruppen som ejer af minfil uden at ændre ejeren af ​​brugeren.
  • chown :sales myfile det samme som den forrige kommando.

Du kan bruge kommandoen chgrpfor at ændre ejeren af ​​gruppen. Overvej følgende eksempel, hvor du kan bruge chgrp sæt ejeren af ​​kontokartoteket til salgsgruppen:

chgrp .sales /home/account

Som med chown, kan du bruge muligheden -R с chgrp, samt rekursivt ændre ejeren af ​​gruppen.

Forståelse af standardejeren

Du har måske bemærket, at når en bruger opretter en fil, anvendes standardejerskabet.
Den bruger, der opretter filen, bliver automatisk ejer af filen, og den brugers primære gruppe bliver automatisk ejer af filen. Dette er normalt den gruppe, der er angivet i filen /etc/passwd som brugerens primære gruppe. Men hvis brugeren er medlem af mere end én gruppe, kan brugeren ændre den effektive primære gruppe.

For at vise den aktuelle effektive primære gruppe kan brugeren bruge kommandoen grupper:

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

Hvis den nuværende linda-bruger ønsker at ændre den effektive primære gruppe, vil han bruge kommandoen nygrpefterfulgt af navnet på den gruppe, han ønsker at angive som den nye effektive primære gruppe. Efter at have brugt kommandoen nygrp den primære gruppe vil være aktiv, indtil brugeren indtaster en kommando frakørsel eller ikke logge ud.

Det følgende viser, hvordan brugeren linda bruger denne kommando, med salg som den primære gruppe:

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

Efter at have ændret den effektive primære gruppe, vil alle nye filer oprettet af brugeren have denne gruppe som gruppeejer. For at vende tilbage til den oprindelige primære gruppeindstilling, brug frakørsel.

For at kunne bruge kommandoen nygrp, skal brugeren være medlem af den gruppe, de vil bruge som den primære gruppe. Derudover kan en gruppeadgangskode bruges til en gruppe ved hjælp af kommandoen gpasswd. Hvis brugeren bruger kommandoen nygrpmen ikke er medlem af målgruppen, beder skallen om gruppens adgangskode. Når du har indtastet den korrekte gruppeadgangskode, oprettes en ny effektiv primær gruppe.

Forvaltning af grundlæggende rettigheder

Linux-tilladelsessystemet blev opfundet i 1970'erne. Da computerbehovet var begrænset i disse år, var det grundlæggende tilladelsessystem ret begrænset. Dette tilladelsessystem bruger tre tilladelser, der kan anvendes på filer og mapper. I dette afsnit lærer du, hvordan du bruger og ændrer disse tilladelser.

Forståelse af læse-, skrive- og udførelsestilladelser

Tre grundlæggende tilladelser giver dig mulighed for at læse, skrive og udføre filer. Effekten af ​​disse tilladelser er forskellig, når de anvendes på filer eller mapper. For en fil giver læsetilladelsen dig ret til at åbne filen til læsning. Derfor kan du læse dens indhold, men det betyder, at din computer kan åbne filen for at gøre noget med den.

En programfil, der skal have adgang til et bibliotek, skal for eksempel have læseadgang til det pågældende bibliotek. Det følger heraf, at læsetilladelsen er den mest grundlæggende tilladelse, du skal bruge for at arbejde med filer.

Når den anvendes på en mappe, giver læsning dig mulighed for at vise indholdet af den mappe. Du skal være opmærksom på, at denne tilladelse ikke tillader dig at læse filerne i mappen. Linux-tilladelsessystemet kender ikke arv, og den eneste måde at læse en fil på er at bruge læsetilladelser på den fil.

Som du sikkert kan gætte, tillader skrivetilladelse, hvis den anvendes til en fil, at skrive til filen. Med andre ord giver det dig mulighed for at ændre indholdet af eksisterende filer. Det tillader dig dog ikke at oprette eller slette nye filer eller ændre filtilladelser. For at gøre dette skal du give skrivetilladelse til den mappe, hvor du vil oprette filen. I mapper giver denne tilladelse dig også mulighed for at oprette og slette nye undermapper.

Udfør tilladelse er, hvad du behøver for at udføre filen. Det vil aldrig blive installeret som standard, hvilket gør Linux næsten fuldstændig immun over for virus. Kun en person med skrivetilladelser til mappen kan anvende udførelsestilladelse.

Følgende opsummerer brugen af ​​grundlæggende tilladelser:

Tilladelser i Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Bruger chmod

Kommandoen bruges til at administrere tilladelser. chmod. Ved brug af chmod du kan indstille tilladelser for brugeren (brugeren), grupper (gruppe) og andre (andre). Du kan bruge denne kommando i to tilstande: relativ tilstand og absolut tilstand. I absolut tilstand bruges tre cifre til at indstille grundlæggende tilladelser.

Tilladelser i Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Når du angiver tilladelser, skal du beregne den værdi, du har brug for. Hvis du vil indstille read/write/execute for bruger, read/execute for group, og read/execute for andre i /somefile, så bruger du følgende kommando chmod:

chmod 755 /somefile

Når du bruger chmod på denne måde erstattes alle nuværende tilladelser af de tilladelser, du angiver.

Hvis du vil ændre tilladelserne i forhold til de aktuelle tilladelser, kan du bruge chmod i relativ tilstand. Ved brug af chmod i relativ tilstand arbejder du med tre indikatorer for at angive, hvad du vil gøre:

  1. Først angiver du, hvem du vil ændre tilladelser for. For at gøre dette kan du vælge mellem bruger (u), gruppe (g) og andre (o).
  2. Du bruger derefter en erklæring til at tilføje eller fjerne tilladelser fra den aktuelle tilstand, eller indstille dem absolut.
  3. Til sidst bruger du r, w и xfor at angive, hvilke tilladelser du vil indstille.

Når du ændrer tilladelser i relativ tilstand, kan du springe "til"-delen over for at tilføje eller fjerne tilladelser for alle objekter. For eksempel tilføjer denne kommando udførelsestilladelse for alle brugere:

chmod +x somefile

Når du arbejder i relativ tilstand, kan du også bruge mere komplekse kommandoer. For eksempel tilføjer denne kommando skrivetilladelse til en gruppe og fjerner læsetilladelse for andre:

chmod g+w,o-r somefile

Ved brug af chmod -R o+rx /data du indstiller udførelsestilladelse for alle mapper såvel som filer i /data-mappen. For kun at indstille udførelsestilladelse for mapper og ikke for filer, skal du bruge chmod -R o+ rX /data.

Det store X sikrer, at filer ikke får udførelsestilladelse, medmindre filen allerede har indstillet udførelsestilladelse for nogle objekter. Dette gør X til en smartere måde at håndtere eksekveringstilladelser på; dette vil undgå at indstille denne tilladelse på filer, hvor det ikke er nødvendigt.

Udvidede rettigheder

Udover de grundlæggende tilladelser, du lige har læst om, har Linux også et sæt avancerede tilladelser. Det er ikke de tilladelser, du angiver som standard, men nogle gange giver de en nyttig tilføjelse. I dette afsnit lærer du, hvad de er, og hvordan du konfigurerer dem.

Forståelse af SUID, GUID og Sticky Bit Extended Permissions

Der er tre avancerede tilladelser. Den første af disse er tilladelsen til at indstille en bruger-id (SUID). I nogle særlige tilfælde kan du anvende denne tilladelse til eksekverbare filer. Som standard kører en bruger, der kører en eksekverbar fil, denne fil med deres egne tilladelser.

For almindelige brugere betyder det normalt, at brugen af ​​programmet er begrænset. Men i nogle tilfælde har brugeren brug for særlige tilladelser, kun for at udføre en bestemt opgave.

Overvej for eksempel en situation, hvor en bruger skal ændre deres adgangskode. For at gøre dette skal brugeren skrive deres nye adgangskode til filen /etc/shadow. Denne fil kan dog ikke skrives af ikke-rootbrugere:

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

SUID-tilladelsen tilbyder en løsning på dette problem. /usr/bin/passwd-værktøjet bruger denne tilladelse som standard. Dette betyder, at når du ændrer adgangskoden, bliver brugeren midlertidigt root, hvilket giver ham mulighed for at skrive til filen /etc/shadow. Du kan se SUID-tilladelsen med ls-l som s i en position, hvor du normalt ville forvente at se x for tilpassede tilladelser:

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

SUID-tilladelsen kan se nyttig ud (og i nogle tilfælde er den det), men den er samtidig potentielt farlig. Hvis det ikke anvendes korrekt, kan du ved et uheld give root-tilladelser væk. Derfor anbefaler jeg kun at bruge den med den største omhu.

De fleste administratorer behøver aldrig at bruge det; du vil kun se det i nogle filer, hvor operativsystemet skal indstille det som standard.

Den anden særlige tilladelse er gruppe-id'en (SGID). Denne tilladelse har to virkninger. Når den anvendes på en eksekverbar fil, giver den brugeren, der udfører filen, tilladelserne fra filens gruppeejer. Så SGID kan mere eller mindre det samme som SUID. SGID bruges dog praktisk talt ikke til dette formål.

Som med SUID-tilladelse anvendes SGID på nogle systemfiler som standardindstilling.

Når det anvendes på en mappe, kan SGID'et være nyttigt, fordi du kan bruge det til at indstille standardgruppeejeren for filer og undermapper, der er oprettet i den mappe. Som standard, når en bruger opretter en fil, er deres effektive primære gruppe indstillet som gruppeejer for den pågældende fil.

Dette er ikke altid særlig nyttigt, især da Red Hat/CentOS-brugere har deres primære gruppe indstillet til en gruppe med samme navn som brugeren, og som brugeren er det eneste medlem af. Som standard vil de filer, som brugeren opretter, blive delt i bulk.

Forestil dig en situation, hvor brugerne linda og lori arbejder med regnskab og er medlemmer af en gruppe konto. Som standard er disse brugere medlemmer af en privat gruppe, som de er det eneste medlem af. Begge brugere er dog medlemmer af kontogruppen, men også som en sekundær gruppeparameter.

Standardsituationen er, at når nogen af ​​disse brugere opretter en fil, bliver den primære gruppe ejeren. Derfor kan linda som standard ikke få adgang til filer oprettet af lori, og omvendt. Men hvis du opretter en delt gruppemappe (f.eks. /groups/account) og sikrer, at SGID-tilladelsen anvendes på den mappe, og at gruppekontoen er angivet som gruppeejer for den mappe, vil alle filer, der er oprettet i den mappe og alle af dens undermapper , får også gruppekontoen som gruppeejer som standard.

Af denne grund er SGID-tilladelsen en meget nyttig tilladelse til at angive offentlige gruppefortegnelser.

SGID-tilladelse vist i output ls-l som s på den position, hvor du normalt ville finde tilladelse til at udføre en gruppe:

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

Den tredje af de særlige tilladelser er den sticky bit. Denne tilladelse er nyttig til at beskytte filer mod utilsigtet sletning i et miljø, hvor flere brugere har skriveadgang til den samme mappe. Hvis der bruges en sticky bit, kan en bruger kun slette en fil, hvis de er brugerejeren af ​​filen eller mappen, der indeholder filen. Af denne grund bruges den som standardtilladelse til mappen /tmp og kan også være nyttig for offentlige gruppemapper.

Uden den sticky bit, hvis brugeren kan oprette filer i en mappe, kan de også slette filer fra den mappe. I et offentligt gruppemiljø kan dette være irriterende. Forestil dig brugerne linda og lori, som begge har skrivetilladelser til /data/kontobiblioteket og får disse tilladelser ved at være medlemmer af kontogruppen. Derfor kan linda slette filer oprettet af lori og omvendt.

Når du anvender den sticky bit, kan brugeren kun slette filer, hvis en af ​​følgende betingelser er sand:

  • Brugeren er ejeren af ​​filen;
  • Brugeren er ejeren af ​​den mappe, hvor filen er placeret.

Ved brug af ls-l, kan du se den klæbrige bit som t i den position, hvor du normalt ville se udførelsestilladelse for andre:

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

Anvendelse af udvidede rettigheder

For at anvende SUID, SGID og sticky bit kan du også bruge chmod. SUID har en numerisk værdi på 4, SGID har en numerisk værdi på 2, og sticky bit har en numerisk værdi på 1.

Hvis du vil anvende disse tilladelser, skal du tilføje et firecifret argument til chmod, hvis første ciffer refererer til særlige tilladelser. Følgende linje vil f.eks. tilføje SGID-tilladelse til biblioteket og indstille rwx for bruger og rx for gruppe og andre:

chmod 2755 /somedir

Dette er ret upraktisk, hvis du har brug for at se de aktuelle tilladelser, der er indstillet, før du arbejder med chmod i absolut tilstand. (Du risikerer at overskrive tilladelser, hvis du ikke gør det.) Så jeg anbefaler at køre i relativ tilstand, hvis du har brug for at anvende nogen af ​​de særlige tilladelser:

  1. Til SUID-brug chmod u+s.
  2. Til SGID-brug chmod g+s.
  3. Til sticky bit brug chmod +t, efterfulgt af navnet på den fil eller mappe, som du vil angive tilladelser for.

Tabellen opsummerer alt, hvad du behøver at vide om administration af særlige tilladelser.

Tilladelser i Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Eksempel på arbejde med særlige rettigheder

I dette eksempel bruger du specielle tilladelser til at gøre det nemmere for gruppemedlemmer at dele filer i den delte gruppemappe. Du tildeler ID-bitten til det indstillede gruppe-ID såvel som den sticky bit, og du kan se, at når de er indstillet, tilføjes funktioner for at gøre det nemmere for gruppemedlemmer at arbejde sammen.

  1. Åbn en terminal, hvor du er linda-brugeren. Du kan oprette en bruger med kommandoen brugertilføj linda, tilføj adgangskode passwd Linda.
  2. Opret /data-mappen i roden og /data/sales-undermappen med kommandoen mkdir -p /data/salg. Komplet cd /data/salgfor at gå til salgskartoteket. Komplet røre ved linda1 и røre ved linda2at oprette to tomme filer ejet af linda.
  3. Udfør su-lisa at skifte den nuværende bruger til brugeren lisa, som også er medlem af salgsgruppen.
  4. Udfør cd /data/salg og kør fra den mappe ls-l. Du vil se to filer, der er oprettet af linda-brugeren og tilhører linda-gruppen. Komplet rm -f linda*. Dette vil fjerne begge filer.
  5. Udfør rør ved lisa1 и rør ved lisa2at oprette to filer, der ejes af brugeren lisa.
  6. Udfør su- for at hæve dine privilegier til root.
  7. Udfør chmod g+s,o+t /data/salgfor at indstille gruppeidentifikatoren (GUID) bit samt sticky bit i den delte gruppemappe.
  8. Udfør su-linda. Så gør røre ved linda3 и røre ved linda4. Du skal nu se, at de to filer, du har oprettet, ejes af salgsgruppen, som er gruppeejeren af ​​mappen /data/sales.
  9. Udfør rm -rf lisa*. Den sticky bit forhindrer disse filer i at blive slettet på vegne af linda-brugeren, da du ikke er ejeren af ​​disse filer. Bemærk, at hvis linda-brugeren er ejer af mappen /data/sales, kan de slette disse filer alligevel!

ACL-styring (setfacl, getfacl) i Linux

Selvom de udvidede tilladelser diskuteret ovenfor tilføjer nyttig funktionalitet til den måde, Linux håndterer tilladelser på, tillader det dig ikke at give tilladelser til mere end én bruger eller gruppe i samme fil.

Adgangskontrollister tilbyder denne funktion. Derudover giver de administratorer mulighed for at indstille standardtilladelser på en kompleks måde, hvor de indstillede tilladelser kan variere fra bibliotek til bibliotek.

Forståelse af ACL'er

Selvom ACL-undersystemet tilføjer stor funktionalitet til din server, har det én ulempe: ikke alle hjælpeprogrammer understøtter det. Derfor kan du miste dine ACL-indstillinger, når du kopierer eller flytter filer, og din backupsoftware kan muligvis ikke sikkerhedskopiere dine ACL-indstillinger.

Tar-værktøjet understøtter ikke ACL'er. For at sikre, at ACL-indstillingerne ikke går tabt, når du opretter en sikkerhedskopi, skal du bruge stjerne i stedet for tjære. stjerne fungerer med de samme muligheder som tjære; det tilføjer bare understøttelse af ACL-indstillinger.

Du kan også sikkerhedskopiere ACL'er med getfacl, som kan gendannes ved hjælp af setfacl-kommandoen. For at oprette en sikkerhedskopi, brug getfacl -R /bibliotek > fil.acls. For at gendanne indstillinger fra en sikkerhedskopifil skal du bruge setfacl --restore=fil.acl.

Mangel på støtte fra nogle værktøjer burde ikke være et problem. ACL'er anvendes ofte på mapper som en strukturel foranstaltning snarere end på individuelle filer.
Derfor vil der ikke være mange af dem, men kun få, der anvendes smarte steder i filsystemet. Derfor er det relativt nemt at gendanne de originale ACL'er, du arbejdede med, selvom din backupsoftware ikke understøtter dem.

Forberedelse af filsystemet til ACL'er

Før du begynder at arbejde med ACL'er, skal du muligvis forberede dit filsystem til at understøtte ACL'er. Fordi filsystemets metadata skal udvides, er der ikke altid standardunderstøttelse af ACL'er i filsystemet. Hvis du får en "operation not supported"-meddelelse, når du opsætter ACL'er for et filsystem, understøtter dit filsystem muligvis ikke ACL'er.

For at rette dette skal du tilføje muligheden acl montering i /etc/fstab, så filsystemet er monteret med ACL-understøttelse som standard.

Ændring og visning af ACL-indstillinger med setfacl og getfacl

For at indstille en ACL skal du bruge kommandoen sætfacl. For at se de aktuelle ACL-indstillinger skal du bruge getfacl. Hold ls-l viser ingen eksisterende ACL'er; den viser bare et + efter tilladelseslisten, hvilket indikerer, at ACL'erne også gælder for filen.

Inden du opsætter ACL'er, er det altid en god idé at vise de aktuelle ACL-indstillinger med getfacl. I eksemplet nedenfor kan du se de aktuelle tilladelser, som vist med ls-l, og også som vist med getfacl. Hvis du kigger godt nok efter, vil du se, at den viste information er nøjagtig den samme.

[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

Som et resultat af at udføre kommandoen getfacl nedenfor kan du se, at tilladelserne vises for tre forskellige objekter: bruger, gruppe og andre. Lad os nu tilføje en ACL for også at give læse- og udførelsestilladelser til salgsgruppen. kommando til dette setfacl -mg:sales:rx /dir. I dette hold -m angiver, at de aktuelle ACL-indstillinger skal ændres. Efter det g:salg:rx fortæller kommandoen om at indstille read-execute ACL (rx) for gruppen (g) salg. Nedenfor kan du se, hvordan kommandoen ser ud, samt output fra getfacl-kommandoen efter ændring af de aktuelle ACL-indstillinger.

[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

Nu hvor du forstår, hvordan man opsætter en gruppe-ACL, er det nemt at forstå ACL'er for brugere og andre brugere. For eksempel kommandoen setfacl -mu:linda:rwx /data giver tilladelser til linda-brugeren i mappen /data uden at gøre den til ejer eller ændre tildelingen af ​​den nuværende ejer.

Team sætfacl har mange funktioner og muligheder. En mulighed er særlig vigtig, parameteren -R. Hvis den bruges, gør indstillingen ACL indstillet for alle filer og undermapper, der aktuelt findes i den mappe, hvor du indstiller ACL. Det anbefales, at du altid bruger denne mulighed, når du ændrer ACL'er for eksisterende mapper.

Arbejde med standard ACL'er

En af fordelene ved at bruge ACL'er er, at du kan give tilladelser til flere brugere eller grupper i en mappe. En anden fordel er, at du kan aktivere nedarvning ved at arbejde med standard ACL'erne.

Ved at indstille standard ACL bestemmer du de tilladelser, der vil blive indstillet for alle nye elementer, der oprettes i mappen. Vær opmærksom på, at standard ACL ikke ændrer tilladelser på eksisterende filer og undermapper. For at ændre dem skal du også tilføje en normal ACL!

Dette er vigtigt at vide. Hvis du vil bruge en ACL til at konfigurere flere brugere eller grupper til at få adgang til den samme mappe, skal du indstille ACL to gange. Første brug setfacl -R -mfor at ændre ACL'er for aktuelle filer. Brug derefter setfacl-md:at tage sig af alle nye elementer, der også bliver skabt.

For at indstille standard ACL skal du blot tilføje muligheden d efter mulighed -m (orden betyder noget!). Så brug setfacl -md:g:salg:rx /datahvis du ønsker, at gruppesalg skal læse og udføre det, der nogensinde er oprettet i mappen /data.

Når du bruger standard-ACL'er, kan det også være nyttigt at indstille ACL'er for andre. Dette giver normalt ikke meget mening, fordi du også kan ændre tilladelserne for andre, der bruger chmod. Men hvad du ikke kan gøre med chmod, er at specificere de rettigheder, der skal gives til andre brugere for hver ny fil, der nogensinde oprettes. Hvis du vil forhindre andre i at få tilladelser til noget, der er oprettet i /data, f.eks setfacl -md:o::- /data.

ACL'er og normale tilladelser er ikke altid godt integreret. Der kan opstå problemer, hvis du anvender en standard-ACL til en mappe, derefter tilføjes elementer til den mappe, og derefter forsøger at ændre de normale tilladelser. Ændringer, der gælder for normale tilladelser, vil ikke blive godt afspejlet i ACL-oversigten. For at undgå problemer skal du først indstille normale tilladelser og derefter indstille standard ACL'erne (og prøve ikke at ændre dem igen efter det).

Eksempel på styring af forhøjede rettigheder ved hjælp af ACL'er

I dette eksempel vil du fortsætte med mapperne /data/account og /data/sales, du oprettede tidligere. I de foregående eksempler har du sikret dig, at salgsgruppen har tilladelser til /data/salg, og kontogruppen har tilladelser til /data/konto.

Først skal du sikre dig, at kontogruppen får læsetilladelser på /data/sales-biblioteket, og at salgsgruppen får læsetilladelser på /data/account-biblioteket.

Du indstiller derefter standard ACL'er for at sikre, at alle nye filer har de korrekte tilladelser indstillet for alle nye elementer.

  1. Åbn en terminal.
  2. Udfør setfacl -mg:account:rx /data/salg и setfacl -mg:salg:rx /data/konto.
  3. Udfør getfaclfor at sikre, at tilladelserne blev indstillet, som du ønskede.
  4. Udfør setfacl -md:g:account:rwx,g:sales:rx /data/salesfor at indstille standard ACL for salgskataloget.
  5. Tilføj en standard ACL for /data/account biblioteket ved hjælp af setfacl -md:g:salg:rwx,g:konto:rx /data/konto.
  6. Bekræft, at ACL-indstillingerne er aktive ved at tilføje en ny fil til /data/sales. Komplet tryk på /data/salg/nyfil og gør getfacl /data/sales/newfile for at kontrollere aktuelle tilladelser.

Indstilling af standardtilladelser med umask

Ovenfor har du lært, hvordan du arbejder med standard ACL'er. Hvis du ikke bruger en ACL, er der en shell-indstilling, der bestemmer de standardtilladelser, du får: umask (omvendt maske). I dette afsnit lærer du, hvordan du ændrer standardtilladelserne med umask.

Du har måske bemærket, at når du opretter en ny fil, er nogle standardtilladelser indstillet. Disse tilladelser bestemmes af indstillingen umask. Denne shell-indstilling gælder for alle brugere ved logon. I parameter umask der bruges en numerisk værdi, som trækkes fra de maksimale tilladelser, der automatisk kan indstilles for filen; den maksimale indstilling for filer er 666 og for mapper er 777.

Der gælder dog nogle undtagelser fra denne regel. Du kan finde en komplet oversigt over indstillinger umask i nedenstående tabel.

Af de tal, der er brugt i umask, som i tilfældet med numeriske argumenter for kommandoen chmod, det første ciffer refererer til brugerens tilladelser, det andet ciffer henviser til gruppens tilladelser, og det sidste refererer til standardtilladelserne, der er angivet for andre. Betyder umask standarden 022 giver 644 for alle nye filer og 755 for alle nye mapper oprettet på din server.

Fuldstændig oversigt over alle numeriske værdier umask og deres resultater i tabellen nedenfor.

Tilladelser i Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

En nem måde at se, hvordan umask-indstillingen virker, er som følger: start med filens standardtilladelser sat til 666 og træk umasken fra for at få de effektive tilladelser. Gør det samme for mappen og dens standardtilladelser på 777.

Der er to måder at ændre umask-indstillingen på: for alle brugere og for individuelle brugere. Hvis du vil indstille umasken for alle brugere, skal du sikre dig, at umask-indstillingen tages i betragtning, når du starter shell-miljøfiler, som angivet i /etc/profile. Den korrekte fremgangsmåde er at oprette et shell-script kaldet umask.sh i mappen /etc/profile.d og specificere den umask du vil bruge i det shell-script. Hvis umasken ændres i denne fil, anvendes den på alle brugere efter at have logget på serveren.

Et alternativ til at indstille umasken via /etc/profile og relaterede filer, hvor det gælder for alle brugere, der logger på, er at ændre umask-indstillingerne i en fil kaldet .profile, der oprettes i hver brugers hjemmemappe.

Indstillingerne i denne fil gælder kun for den enkelte bruger; Derfor er dette en god metode, hvis du har brug for flere detaljer. Jeg kan personligt godt lide denne funktion til at ændre standard umask for root-brugeren til 027, mens normale brugere kører med standard umask af 022.

Arbejde med udvidede brugerattributter

Dette er det sidste afsnit om Linux-tilladelser.

Når du arbejder med tilladelser, er der altid et forhold mellem et bruger- eller gruppeobjekt og de tilladelser, som bruger- eller gruppeobjekter har på en fil eller mappe. En alternativ metode til at beskytte filer på en Linux-server er at arbejde med attributter.
Attributter udfører deres arbejde, uanset om brugeren har adgang til filen.

Som med ACL'er skal filattributter muligvis inkludere muligheden montere.

Dette er en mulighed user_xattr. Hvis du får en "operation not supported"-meddelelse, når du arbejder med udvidede brugerattributter, skal du sørge for at indstille parameteren montere i /etc/fstab.

Mange egenskaber er dokumenteret. Nogle attributter er tilgængelige, men ikke implementeret endnu. Brug dem ikke; de vil ikke bringe dig noget.

Nedenfor er de mest nyttige egenskaber, du kan anvende:

A Denne attribut sikrer, at filens filadgangstid ikke ændres.
Typisk, hver gang en fil åbnes, skal filens adgangstid registreres i filens metadata. Dette påvirker ydeevnen negativt; så for filer, der tilgås regelmæssigt, attributten A kan bruges til at deaktivere denne funktion.

a Denne attribut giver dig mulighed for at tilføje, men ikke fjerne en fil.

c Hvis du bruger et filsystem, der understøtter komprimering på volumenniveau, sikrer denne filattribut, at filen komprimeres første gang, komprimeringsmekanismen aktiveres.

D Denne egenskab sikrer, at ændringer af filer skrives til disken med det samme i stedet for at cache først. Dette er en nyttig egenskab på vigtige databasefiler for at sikre, at de ikke bliver væk mellem filcachen og harddisken.

d Denne egenskab sikrer, at filen ikke bliver gemt i sikkerhedskopier, hvor dump-værktøjet bruges.

I Denne egenskab aktiverer indeksering for den mappe, hvor den er aktiveret. Dette giver hurtigere filadgang for primitive filsystemer som Ext3, der ikke bruger B-tree databasen til hurtig filadgang.

i Denne egenskab gør filen uforanderlig. Derfor kan der ikke foretages ændringer i filen, hvilket er nyttigt for filer, der har brug for yderligere beskyttelse.

j Denne egenskab sikrer, at filen på et ext3-filsystem først skrives til journalen og derefter til datablokke på harddisken.

s Overskriv de blokke, hvor filen blev gemt til 0s efter sletning af filen. Dette sikrer, at filen ikke kan gendannes, når den først er blevet slettet.

u Denne attribut gemmer oplysninger om sletningen. Dette giver dig mulighed for at udvikle et værktøj, der arbejder med disse oplysninger for at redde slettede filer.

Hvis du vil anvende attributterne, kan du bruge kommandoen snak. Brug f.eks chattr +s en eller anden filat anvende attributter til en fil. Skal du fjerne en attribut? Brug derefter chattr -s en eller anden filog det vil blive fjernet. Brug kommandoen for at få et overblik over alle attributter, der anvendes i øjeblikket lsattr.

Resumé

I denne artikel har du lært, hvordan du arbejder med tilladelser. Du læser om de tre grundlæggende tilladelser, avancerede tilladelser, og hvordan man anvender ACL'er på et filsystem. Du har også lært, hvordan du bruger muligheden umask til at anvende standardtilladelser. I slutningen af ​​denne artikel lærte du, hvordan du bruger brugerudvidede attributter til at anvende et ekstra lag af filsystemsikkerhed.

Hvis du kunne lide denne oversættelse, så skriv venligst om den i kommentarerne. Der vil være mere motivation til at lave nyttige oversættelser.

Rettet nogle tastefejl og grammatiske fejl i artiklen. Reducerede nogle omfangsrige afsnit til mindre for bedre læsbarhed.

I stedet for "Kun en person med administrative rettigheder til mappen kan anvende udførelsestilladelse." rettet til "Kun nogen med skrivetilladelser på mappen kan anvende udførelsestilladelse.", hvilket ville være mere korrekt.

Tak for kommentarerne berez.

Erstattet:
Hvis du ikke er ejeren af ​​brugeren, vil shellen kontrollere, om du er medlem af en gruppe, også kendt som gruppen af ​​filen.

Til:
Hvis du ikke er ejeren af ​​filen, vil shellen kontrollere, om du er medlem af en gruppe, der har tilladelser til filen. Hvis du er medlem af denne gruppe, får du adgang til filen med de tilladelser, som gruppen har indstillet, og shellen stopper med at kontrollere.

tak for din kommentar CryptoPirate

Kilde: www.habr.com

Tilføj en kommentar