Behörigheter i Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Hej alla. Detta är en översättning av en artikel från boken RedHat RHCSA RHCE 7 RedHat Enterprise Linux 7 EX200 och EX300.

Tryck: Jag hoppas att artikeln kommer att vara användbar inte bara för nybörjare, utan kommer också att hjälpa mer erfarna administratörer att effektivisera sina kunskaper.

Låt oss gå.

Behörigheter i Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

För att komma åt filer i Linux används behörigheter. Dessa behörigheter tilldelas tre objekt: filägaren, gruppägaren och ett annat objekt (det vill säga alla andra). I den här artikeln får du lära dig hur du tillämpar behörigheter.

Den här artikeln börjar med en översikt över de grundläggande begreppen, följt av en diskussion om särskilda behörigheter och åtkomstkontrollistor (ACL). I slutet av den här artikeln täcker vi inställning av standardbehörigheter via umask, samt hantering av utökade användarattribut.

Filägandehantering

Innan du diskuterar behörigheter bör du vara medveten om rollen som fil- och katalogägare. Ägarskap till filer och kataloger är avgörande för att hantera behörigheter. I det här avsnittet kommer du först att lära dig hur du kan se ägaren. Du kommer då att lära dig hur du ändrar gruppägare och användare för filer och kataloger.

Visar ägaren till en fil eller katalog

I Linux har varje fil och varje katalog två ägare: en användare och en gruppägare.

Dessa ägare ställs in när en fil eller katalog skapas. Användaren som skapar filen blir ägare till filen, och den primära gruppen som samma användare tillhör blir också ägare till filen. För att avgöra om du som användare har behörighet att komma åt en fil eller katalog, kontrollerar skalet för ägande.

Detta sker i följande ordning:

  1. Skalet kontrollerar om du är ägaren till filen du vill komma åt. Om du är ägaren får du behörigheter och skalet slutar kontrollera.
  2. Om du inte är ägaren till filen kommer skalet att kontrollera om du är medlem i en grupp som har behörigheter för filen. Om du är medlem i den här gruppen kommer du åt filen med de behörigheter som gruppen har angett, och skalet kommer att sluta kontrollera.
  3. Om du varken är användare eller ägare till en grupp ges du rättigheterna för andra användare (Övrigt).

För att se aktuella ägartilldelningar kan du använda kommandot ls-l. Detta kommando visar användaren och ägaren av gruppen. Nedan kan du se ägarinställningarna för kataloger i /home-katalogen.

[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 kommandot ls du kan visa ägaren till filerna i en given katalog. Ibland kan det vara användbart att få en lista över alla filer på systemet som har en given användare eller grupp som ägare. För detta kan du använda finna. Argument hitta-användare kan användas för detta ändamål. Till exempel listar följande kommando alla filer som ägs av användaren linda:

find / -user linda

Du kan också använda finna för att söka efter filer som har en specifik grupp som ägare.

Följande kommando söker till exempel efter alla filer som tillhör gruppen användare:

find / -group users

Ägarbyte

För att tillämpa lämpliga behörigheter är det första att tänka på ägande. Det finns ett kommando för detta chown. Syntaxen för detta kommando är lätt att förstå:

chown кто что

Till exempel ändrar följande kommando ägaren av /home/account-katalogen till användaren linda:

chown linda /home/account

Team chown har flera alternativ, varav ett är särskilt användbart: -R. Du kan gissa vad det gör eftersom det här alternativet är tillgängligt för många andra kommandon också. Detta låter dig ställa in ägaren rekursivt, vilket gör att du kan ställa in ägaren till den aktuella katalogen och allt nedan. Följande kommando ändrar ägandet av /home-katalogen och allt under den till linda-användaren:

Nu ser ägarna ut så här:

[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

Låt oss göra:

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

Nu har användaren lisa blivit ägare till kontokatalogen:

[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

Byt ägare till en grupp

Det finns två sätt att ändra ägandet av en grupp. Du kan göra detta med hjälp av chown, men det finns ett speciellt kommando som heter chgrpsom gör jobbet. Om du vill använda kommandot chown, använda sig av . eller : framför gruppnamnet.

Följande kommando ändrar alla ägare av /home/kontogruppen till kontogruppen:

chown .account /home/account

du kan använda chown att byta ägare till en användare och/eller grupp på flera sätt. Här är några exempel:

  • chown lisa myfile1 anger användaren lisa som ägare av myfile1.
  • chown lisa.sales myfile ställer in användaren lisa som ägare av filen myfile, och anger även försäljningsgruppen som ägare till samma fil.
  • chown lisa:sales myfile samma som föregående kommando.
  • chown .sales myfile anger säljgruppen som ägare till myfile utan att ändra ägaren till användaren.
  • chown :sales myfile samma som föregående kommando.

Du kan använda kommandot chgrpför att byta ägare till gruppen. Tänk på följande exempel, där du kan använda chgrp ställ in ägaren av kontokatalogen till försäljningsgruppen:

chgrp .sales /home/account

Som med chown, kan du använda alternativet -R с chgrp, och även ändra ägaren till gruppen rekursivt.

Förstå standardägaren

Du kanske har märkt att när en användare skapar en fil tillämpas standardäganderätten.
Användaren som skapar filen blir automatiskt ägare till filen, och användarens primära grupp blir automatiskt ägare till filen. Detta är vanligtvis gruppen som är listad i filen /etc/passwd som användarens primära grupp. Men om användaren är medlem i mer än en grupp kan användaren ändra den effektiva primära gruppen.

För att visa den aktuella primära gruppen kan användaren använda kommandot grupper:

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

Om den nuvarande linda-användaren vill ändra den effektiva primära gruppen, kommer han att använda kommandot nygrpföljt av namnet på gruppen han vill ställa in som den nya effektiva primära gruppen. Efter att ha använt kommandot nygrp den primära gruppen kommer att vara aktiv tills användaren anger ett kommando avsluta eller kommer inte att logga ut från systemet.

Följande visar hur användaren linda använder detta kommando, med försäljning som primär grupp:

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 att ha ändrat den effektiva primära gruppen kommer alla nya filer som skapats av användaren att ha den gruppen som gruppägare. För att återgå till den ursprungliga primära gruppinställningen, använd avsluta.

För att kunna använda kommandot nygrp, måste användaren vara medlem i gruppen de vill använda som primär grupp. Dessutom kan ett grupplösenord användas för en grupp med kommandot gpasswd. Om användaren använder kommandot nygrpmen inte är medlem i målgruppen, frågar skalet om gruppens lösenord. När du har angett rätt grupplösenord kommer en ny effektiv primär grupp att upprättas.

Förvaltning av grundläggande rättigheter

Linux-tillståndssystemet uppfanns på 1970-talet. Eftersom datorbehoven var begränsade under dessa år var det grundläggande behörighetssystemet ganska begränsat. Detta behörighetssystem använder tre behörigheter som kan tillämpas på filer och kataloger. I det här avsnittet kommer du att lära dig hur du använder och ändrar dessa behörigheter.

Förstå läs-, skriv- och exekveringsbehörigheter

Tre grundläggande behörigheter låter dig läsa, skriva och köra filer. Effekten av dessa behörigheter skiljer sig när de tillämpas på filer eller kataloger. För en fil ger läsbehörigheten dig rätt att öppna filen för läsning. Därför kan du läsa dess innehåll, men det betyder att din dator kan öppna filen för att göra något med den.

En programfil som behöver tillgång till ett bibliotek måste till exempel ha läsbehörighet till det biblioteket. Det följer att läsbehörigheten är den mest grundläggande behörigheten du behöver för att arbeta med filer.

När den tillämpas på en katalog låter läsning dig visa innehållet i den katalogen. Du bör vara medveten om att denna behörighet inte tillåter dig att läsa filer i katalogen. Linux-behörighetssystemet känner inte till arv, och det enda sättet att läsa en fil är att använda läsbehörigheter för den filen.

Som du säkert kan gissa tillåter skrivbehörighet, om den tillämpas på en fil, att skriva till filen. Med andra ord låter den dig ändra innehållet i befintliga filer. Det tillåter dig dock inte att skapa eller ta bort nya filer eller ändra filbehörigheter. För att göra detta måste du ge skrivbehörighet till katalogen där du vill skapa filen. I kataloger tillåter denna behörighet dig också att skapa och ta bort nya underkataloger.

Exekveringsbehörighet är vad du behöver för att köra filen. Det kommer aldrig att installeras som standard, vilket gör Linux nästan helt immun mot virus. Endast någon med skrivbehörighet på katalogen kan tillämpa exekveringsbehörighet.

Följande sammanfattar användningen av grundläggande behörigheter:

Behörigheter i Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Använder chmod

Kommandot används för att hantera behörigheter. chmod. Använder sig av chmod du kan ställa in behörigheter för användaren (användaren), grupper (grupp) och andra (övriga). Du kan använda detta kommando i två lägen: relativt läge och absolut läge. I absolut läge används tre siffror för att ställa in grundläggande behörigheter.

Behörigheter i Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

När du ställer in behörigheter, beräkna värdet du behöver. Om du vill ställa in läs/skriv/kör för användare, läs/kör för grupp och läs/kör för andra i /någon fil så använder du följande kommando chmod:

chmod 755 /somefile

När du använder chmod på detta sätt ersätts alla nuvarande behörigheter med de behörigheter du ställer in.

Om du vill ändra behörigheterna i förhållande till de aktuella behörigheterna kan du använda chmod i relativt läge. Använder sig av chmod i relativt läge arbetar du med tre indikatorer för att indikera vad du vill göra:

  1. Först anger du vem du vill ändra behörigheter för. För att göra detta kan du välja mellan användare (u), grupp (g) och andra (o).
  2. Du använder sedan ett uttalande för att lägga till eller ta bort behörigheter från det aktuella läget, eller ställa in dem absolut.
  3. I slutet använder du r, w и xför att ange vilka behörigheter du vill ställa in.

När du ändrar behörigheter i relativt läge kan du hoppa över "till"-delen för att lägga till eller ta bort behörigheten för alla objekt. Till exempel, det här kommandot lägger till exekveringsbehörighet för alla användare:

chmod +x somefile

När du arbetar i relativt läge kan du också använda mer komplexa kommandon. Till exempel lägger det här kommandot till skrivbehörighet till en grupp och tar bort läsbehörighet för andra:

chmod g+w,o-r somefile

När du använder chmod -R o+rx /data du ställer in exekveringsbehörighet för alla kataloger såväl som filer i /data-katalogen. Använd chmod -R o+ rX /data.

Versaler X säkerställer att filer inte får exekveringsbehörighet om inte filen redan har angett exekveringsbehörighet för vissa objekt. Detta gör X till ett smartare sätt att hantera exekveringsbehörigheter; detta kommer att undvika att ställa in denna behörighet på filer där det inte krävs.

Utökade rättigheter

Utöver de grundläggande behörigheterna du just läst om, har Linux även en uppsättning avancerade behörigheter. Det här är inte de behörigheter du ställer in som standard, men ibland ger de ett användbart tillägg. I det här avsnittet får du lära dig vad de är och hur du ställer in dem.

Förstå SUID, GUID och Sticky Bit Extended Permissions

Det finns tre avancerade behörigheter. Den första av dessa är behörigheten att ställa in en användaridentifierare (SUID). I vissa speciella fall kan du tillämpa denna behörighet på körbara filer. Som standard kör en användare som kör en körbar fil med sina egna behörigheter.

För vanliga användare innebär detta vanligtvis att användningen av programmet är begränsad. Men i vissa fall behöver användaren speciella behörigheter, bara för att utföra en specifik uppgift.

Tänk till exempel på en situation där en användare behöver ändra sitt lösenord. För att göra detta måste användaren skriva sitt nya lösenord till filen /etc/shadow. Den här filen är dock inte skrivbar av icke-rootanvändare:

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

SUID-behörigheten erbjuder en lösning på detta problem. Verktyget /usr/bin/passwd använder denna behörighet som standard. Detta innebär att när användaren byter lösenord blir användaren tillfälligt root, vilket gör att han kan skriva till filen /etc/shadow. Du kan se SUID-behörigheten med ls-l как s i en position där du normalt förväntar dig att se x för anpassade behörigheter:

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

SUID-behörigheten kan se användbar ut (och i vissa fall är den det), men den är samtidigt potentiellt farlig. Om det inte tillämpas korrekt kan du av misstag ge bort root-behörigheter. Därför rekommenderar jag att du endast använder den med största försiktighet.

De flesta administratörer kommer aldrig att behöva använda det; du kommer bara att se det i vissa filer där operativsystemet ska ställa in det som standard.

Den andra särskilda behörigheten är gruppidentifieraren (SGID). Detta tillstånd har två effekter. När den appliceras på en körbar fil ger den användaren som kör filen behörigheterna för filens gruppägare. Så SGID kan göra mer eller mindre samma sak som SUID. SGID används dock praktiskt taget inte för detta ändamål.

Som med SUID-behörighet tillämpas SGID på vissa systemfiler som standardinställning.

När det tillämpas på en katalog kan SGID:t vara användbart eftersom du kan använda det för att ställa in standardgruppägaren för filer och underkataloger som skapats i den katalogen. Som standard, när en användare skapar en fil, är deras effektiva primära grupp inställd som gruppägare för den filen.

Detta är inte alltid särskilt användbart, särskilt eftersom Red Hat/CentOS-användare har sin primära grupp inställd på en grupp med samma namn som användaren, och som användaren är den enda medlemmen av. Som standard kommer filerna som användaren skapar att delas i bulk.

Föreställ dig en situation där användarna linda och lori arbetar med redovisning och är medlemmar i en grupp konto. Som standard är dessa användare medlemmar i en privat grupp där de är den enda medlemmen. Båda användarna är dock medlemmar i kontogruppen, men också som en sekundär gruppparameter.

Standardsituationen är att när någon av dessa användare skapar en fil blir den primära gruppen ägare. Därför kan linda som standard inte komma åt filer skapade av lori, och vice versa. Men om du skapar en delad gruppkatalog (säg /groups/account) och säkerställer att SGID-behörigheten tillämpas på den katalogen och att gruppkontot är inställt som gruppägare för den katalogen, kommer alla filer som skapats i den katalogen och alla av dess underkataloger får även gruppkontot som gruppägare som standard.

Av denna anledning är SGID-tillståndet en mycket användbar behörighet att sätta på offentliga gruppkataloger.

SGID-behörighet visas i utdata ls-l как s på den position där du normalt skulle få tillstånd att köra en grupp:

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

Den tredje av de särskilda behörigheterna är sticky biten. Denna behörighet är användbar för att skydda filer från oavsiktlig radering i en miljö där flera användare har skrivåtkomst till samma katalog. Om en sticky bit används kan en användare bara ta bort en fil om de är användarens ägare till filen eller katalogen som innehåller filen. Av denna anledning används den som standardbehörighet för /tmp-katalogen och kan också vara användbar för publika gruppkataloger.

Utan den klibbiga biten, om användaren kan skapa filer i en katalog, kan de också ta bort filer från den katalogen. I en offentlig gruppmiljö kan detta vara irriterande. Föreställ dig användarna linda och lori, som båda har skrivbehörighet till /data/kontokatalogen och får dessa behörigheter genom att vara medlemmar i kontogruppen. Därför kan linda ta bort filer skapade av lori och vice versa.

När du använder den sticky biten kan användaren bara ta bort filer om något av följande villkor är sant:

  • Användaren är ägaren till filen;
  • Användaren är ägaren till katalogen där filen finns.

När du använder ls-l, kan du se den klibbiga biten som t i den position där du normalt skulle se körningstillstånd för andra:

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

Tillämpa utökade rättigheter

För att applicera SUID, SGID och sticky bit kan du också använda chmod. SUID har ett numeriskt värde på 4, SGID har ett numeriskt värde på 2 och sticky bit har ett numeriskt värde på 1.

Om du vill tillämpa dessa behörigheter måste du lägga till ett fyrsiffrigt argument till chmod, vars första siffra hänvisar till särskilda behörigheter. Följande rad kommer till exempel att lägga till SGID-behörighet till katalogen och ställa in rwx för användare och rx för grupp och andra:

chmod 2755 /somedir

Detta är ganska opraktiskt om du behöver se de aktuella behörigheterna som är inställda innan du arbetar med chmod i absolut läge. (Du riskerar att skriva över behörigheter om du inte gör det.) Därför rekommenderar jag att du kör i relativt läge om du behöver använda någon av de speciella behörigheterna:

  1. För SUID-användning chmod u+s.
  2. För SGID-användning chmod g+s.
  3. För klibbig användning chmod +t, följt av namnet på filen eller katalogen som du vill ange behörigheter för.

Tabellen sammanfattar allt du behöver veta om att hantera speciella behörigheter.

Behörigheter i Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Exempel på arbete med särskilda rättigheter

I det här exemplet använder du speciella behörigheter för att göra det lättare för gruppmedlemmar att dela filer i den delade gruppkatalogen. Du tilldelar ID-biten till set-grupp-ID såväl som sticky-biten, och du ser att när de väl är inställda läggs funktioner till för att göra det lättare för gruppmedlemmar att arbeta tillsammans.

  1. Öppna en terminal där du är lindas användare. Du kan skapa en användare med kommandot användaradd linda, lägg till lösenord passwd Linda.
  2. Skapa /data-katalogen i roten och /data/sales-underkatalogen med kommandot mkdir -p /data/försäljning. Kör cd /data/försäljningför att gå till försäljningskatalogen. Komplett röra linda1 и röra linda2för att skapa två tomma filer som ägs av linda.
  3. Kör su-lisa för att byta nuvarande användare till användaren lisa, som också är medlem i säljgruppen.
  4. Kör cd /data/försäljning och kör från den katalogen ls-l. Du kommer att se två filer som skapades av linda-användaren och som tillhör linda-gruppen. Kör rm -f linda*. Detta tar bort båda filerna.
  5. Kör tryck på lisa1 и tryck på lisa2för att skapa två filer som ägs av användaren lisa.
  6. Kör su- för att höja dina privilegier till root.
  7. Kör chmod g+s,o+t /data/försäljningför att ställa in gruppidentifieringsbiten (GUID) såväl som sticky biten i den delade gruppkatalogen.
  8. Kör su-linda. Gör sedan röra linda3 и röra linda4. Du bör nu se att de två filerna du skapade ägs av säljgruppen, som är gruppägaren till katalogen /data/sales.
  9. Kör rm -rf lisa*. Den sticky biten förhindrar att dessa filer raderas på uppdrag av linda-användaren, eftersom du inte är ägaren till dessa filer. Observera att om linda-användaren är ägare till /data/sales-katalogen, kan de ta bort dessa filer ändå!

ACL-hantering (setfacl, getfacl) i Linux

Även om de avancerade behörigheterna som diskuteras ovan lägger till användbar funktionalitet till hur Linux hanterar behörigheter, tillåter det dig inte att ge behörigheter till mer än en användare eller en grupp på en enda fil.

Åtkomstkontrollistor erbjuder denna funktion. Dessutom tillåter de administratörer att ställa in standardbehörigheter på ett komplext sätt, där de angivna behörigheterna kan variera från katalog till katalog.

Förstå ACL

Även om ACL-undersystemet lägger till stor funktionalitet till din server, har det en nackdel: inte alla verktyg stöder det. Därför kan du förlora dina ACL-inställningar när du kopierar eller flyttar filer, och din säkerhetskopieringsprogram kan misslyckas med att säkerhetskopiera dina ACL-inställningar.

Tar-verktyget stöder inte ACL. För att säkerställa att ACL-inställningarna inte går förlorade när du skapar en säkerhetskopia, använd stjärna istället för tjära. stjärna fungerar med samma alternativ som tjära; det lägger bara till stöd för ACL-inställningar.

Du kan också säkerhetskopiera ACL med getfacl, som kan återställas med kommandot setfacl. För att skapa en säkerhetskopia, använd getfacl -R /katalog > fil.acls. För att återställa inställningar från en säkerhetskopia, använd setfacl --restore=fil.acl.

Brist på stöd från vissa verktyg borde inte vara ett problem. ACL:er tillämpas ofta på kataloger som en strukturell åtgärd snarare än på enskilda filer.
Därför kommer det inte att finnas många av dem, utan bara ett fåtal, applicerade på smarta platser i filsystemet. Därför är det relativt enkelt att återställa de ursprungliga ACL:erna du arbetade med, även om din säkerhetskopieringsprogram inte stöder dem.

Förbereder filsystemet för ACL:er

Innan du börjar arbeta med ACL:er kan du behöva förbereda ditt filsystem för att stödja ACL. Eftersom filsystemets metadata behöver utökas finns det inte alltid standardstöd för ACL i filsystemet. Om du får meddelandet "operation not supported" när du ställer in ACL:er för ett filsystem, kanske ditt filsystem inte stöder ACL:er.

För att fixa detta måste du lägga till alternativet acl fäste i /etc/fstab så att filsystemet är monterat med ACL-stöd som standard.

Ändra och visa ACL-inställningar med setfacl och getfacl

För att ställa in en ACL behöver du kommandot setfacl. För att se de aktuella ACL-inställningarna behöver du getfacl. Team ls-l visar inga befintliga ACL:er; det visar bara ett + efter behörighetslistan, vilket indikerar att ACL:erna gäller för filen också.

Innan du ställer in ACL:er är det alltid en bra idé att visa aktuella ACL-inställningar med getfacl. I exemplet nedan kan du se de aktuella behörigheterna, som visas med ls-l, och även som visas med getfacl. Om du tittar noga noga kommer du att se att informationen som visas är exakt densamma.

[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 ett resultat av att utföra kommandot getfacl nedan kan du se att behörigheterna visas för tre olika objekt: användare, grupp och andra. Låt oss nu lägga till en ACL för att ge läs- och körbehörigheter även till säljgruppen. kommando för detta setfacl -mg:sales:rx /dir. I det här laget -m indikerar att de aktuella ACL-inställningarna måste ändras. Efter det g:försäljning:rx säger till kommandot att ställa in läs-kör ACL (rx) för grupp (g) försäljning. Nedan kan du se hur kommandot ser ut, samt utdata från getfacl-kommandot efter att ha ändrat de aktuella ACL-inställningarna.

[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 när du förstår hur man ställer in en grupp-ACL är det lätt att förstå ACL för användare och andra användare. Till exempel kommandot setfacl -mu:linda:rwx /data ger tillstånd till användaren linda i /data-katalogen utan att göra honom till ägare eller ändra tilldelningen av den nuvarande ägaren.

Team setfacl har många funktioner och alternativ. Ett alternativ är särskilt viktigt, parametern -R. Om det används gör alternativet ACL inställd för alla filer och underkataloger som för närvarande finns i katalogen där du ställer in ACL. Det rekommenderas att du alltid använder det här alternativet när du ändrar ACL för befintliga kataloger.

Arbeta med standard ACL

En av fördelarna med att använda ACL:er är att du kan ge behörigheter till flera användare eller grupper i en katalog. En annan fördel är att du kan aktivera nedärvning genom att arbeta med standard ACL.

Genom att ställa in standard ACL bestämmer du vilka behörigheter som kommer att ställas in för alla nya objekt som skapas i katalogen. Var medveten om att standard ACL inte ändrar behörigheter för befintliga filer och underkataloger. För att ändra dem måste du lägga till en normal ACL också!

Detta är viktigt att veta. Om du vill använda en ACL för att konfigurera flera användare eller grupper för att komma åt samma katalog måste du ställa in ACL två gånger. Första användning setfacl -R -mför att ändra ACL för de aktuella filerna. Använd sedan setfacl-md:att ta hand om alla nya element som också kommer att skapas.

För att ställa in standard ACL behöver du bara lägga till alternativet d efter alternativ -m (ordning spelar roll!). Så använd setfacl -md:g:försäljning:rx /dataom du vill att gruppförsäljning ska läsa och köra vad som helst som skapas i /data-katalogen.

När du använder standard-ACL kan det också vara användbart att ställa in ACL för andra. Detta är vanligtvis inte så meningsfullt eftersom du också kan ändra behörigheterna för andra som använder chmod. Men vad man inte kan göra med chmod, är att ange de rättigheter som måste beviljas andra användare för varje ny fil som någonsin skapas. Om du vill hindra andra från att få några tillstånd på något som skapas i /data till exempel använd setfacl -md:o::- /data.

ACL:er och normala behörigheter är inte alltid väl integrerade. Problem kan uppstå om du använder en standard ACL på en katalog, sedan läggs objekt till i den katalogen och sedan försöker ändra de normala behörigheterna. Ändringar som gäller normala behörigheter kommer inte att återspeglas väl i ACL-översikten. För att undvika problem, ställ in normala behörigheter först, ställ sedan in standard ACL:erna (och försök att inte ändra dem igen efter det).

Exempel på hantering av förhöjda rättigheter med hjälp av ACL

I det här exemplet fortsätter du med katalogerna /data/account och /data/sales som du skapade tidigare. I de tidigare exemplen har du sett till att säljgruppen har behörigheter på /data/försäljning och att kontogruppen har behörigheter på /data/konto.

Se först till att kontogruppen får läsbehörigheter i katalogen /data/sales och att säljgruppen får läsbehörigheter i katalogen /data/account.

Du ställer sedan in standard ACL:er för att se till att alla nya filer har rätt behörigheter för alla nya objekt.

  1. Öppna en terminal.
  2. Kör setfacl -mg:konto:rx /data/försäljning и setfacl -mg:försäljning:rx /data/konto.
  3. Kör getfaclför att se till att behörigheterna var inställda som du ville.
  4. Kör setfacl -md:g:account:rwx,g:sales:rx /data/salesför att ställa in standard-ACL för försäljningskatalogen.
  5. Lägg till en standard ACL för /data/account-katalogen med hjälp av setfacl -md:g:sales:rwx,g:account:rx /data/account.
  6. Kontrollera att ACL-inställningarna är aktiva genom att lägga till en ny fil i /data/sales. Komplett tryck på /data/försäljning/nyfil och gör getfacl /data/sales/newfile för att kontrollera aktuella behörigheter.

Ställer in standardbehörigheter med umask

Ovan har du lärt dig hur du arbetar med standard-ACL. Om du inte använder en ACL finns det ett skalalternativ som bestämmer vilka standardbehörigheter du får: umask (omvänd mask). I det här avsnittet kommer du att lära dig hur du ändrar standardbehörigheterna med umask.

Du kanske har märkt att när du skapar en ny fil ställs vissa standardbehörigheter in. Dessa behörigheter bestäms av inställningen umask. Denna skalinställning gäller för alla användare vid inloggning. I parameter umask ett numeriskt värde används, vilket subtraheras från de maximala behörigheter som automatiskt kan ställas in för filen; den maximala inställningen för filer är 666 och för kataloger är 777.

Vissa undantag gäller dock från denna regel. Du kan hitta en fullständig översikt över inställningar umask i tabellen nedan.

Av de siffror som används i umask, som i fallet med numeriska argument för kommandot chmod, den första siffran hänvisar till användarens behörigheter, den andra siffran hänvisar till gruppens behörigheter och den sista hänvisar till standardbehörigheterna för andra. Menande umask standardvärdet 022 ger 644 för alla nya filer och 755 för alla nya kataloger som skapats på din server.

Fullständig översikt över alla numeriska värden umask och deras resultat i tabellen nedan.

Behörigheter i Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Ett enkelt sätt att se hur umask-inställningen fungerar är följande: börja med filens standardbehörigheter inställda på 666 och subtrahera umasken för att få effektiva behörigheter. Gör samma sak för katalogen och dess standardbehörigheter 777.

Det finns två sätt att ändra umask-inställningen: för alla användare och för enskilda användare. Om du vill ställa in umask för alla användare måste du se till att umask-inställningen tas med i beräkningen när du startar skalmiljöfiler, som specificerats i /etc/profile. Det korrekta tillvägagångssättet är att skapa ett skalskript som heter umask.sh i katalogen /etc/profile.d och ange den umask du vill använda i det skalskriptet. Om umasken ändras i den här filen, tillämpas den på alla användare efter att ha loggat in på servern.

Ett alternativ till att ställa in umask via /etc/profile och relaterade filer, där det gäller för alla användare som loggar in, är att ändra umask-inställningarna i en fil som heter .profile som skapas i varje användares hemkatalog.

Inställningarna som tillämpas i den här filen gäller endast för den enskilda användaren; Därför är detta en bra metod om du behöver mer detaljer. Jag gillar personligen den här funktionen för att ändra standard umask för root-användaren till 027 medan normala användare kör med standard umask av 022.

Arbeta med utökade användarattribut

Detta är det sista avsnittet om Linux-behörigheter.

När man arbetar med behörigheter finns det alltid en relation mellan ett användar- eller gruppobjekt och de behörigheter som användar- eller gruppobjekt har på en fil eller katalog. En alternativ metod för att skydda filer på en Linux-server är att arbeta med attribut.
Attribut gör sitt jobb oavsett om användaren kommer åt filen.

Precis som med ACL:er kan filattribut behöva aktiveras. montera.

Detta är ett alternativ user_xattr. Om du får meddelandet "operation not supported" när du arbetar med utökade användarattribut, var noga med att ställa in parametern montera i /etc/fstab.

Många attribut är dokumenterade. Vissa attribut är tillgängliga men inte implementerade ännu. Använd dem inte; de kommer inte att ge dig något.

Nedan är de mest användbara attributen du kan använda:

A Detta attribut säkerställer att filens filåtkomsttid inte ändras.
Vanligtvis, varje gång en fil öppnas, måste filens åtkomsttid registreras i filens metadata. Detta påverkar prestandan negativt; så för filer som används regelbundet, attributet A kan användas för att inaktivera denna funktion.

a Detta attribut låter dig lägga till men inte ta bort en fil.

c Om du använder ett filsystem som stöder komprimering på volymnivå, säkerställer detta filattribut att filen komprimeras första gången komprimeringsmekanismen aktiveras.

D Det här attributet säkerställer att ändringar av filer skrivs till disken omedelbart istället för att cachelagras först. Detta är ett användbart attribut på viktiga databasfiler för att se till att de inte försvinner mellan filcachen och hårddisken.

d Detta attribut säkerställer att filen inte kommer att sparas i säkerhetskopior där dumpningsverktyget används.

I Det här attributet möjliggör indexering för katalogen där det är aktiverat. Detta ger snabbare filåtkomst för primitiva filsystem som Ext3, som inte använder en B-träddatabas för snabb filåtkomst.

i Detta attribut gör filen oföränderlig. Därför kan inga ändringar göras i filen, vilket är användbart för filer som behöver extra skydd.

j Detta attribut säkerställer att filen på ett ext3-filsystem först skrivs till journalen och sedan till datablock på hårddisken.

s Skriv över blocken där filen sparades till noll efter att filen tagits bort. Detta säkerställer att filen inte kan återställas när den väl har tagits bort.

u Detta attribut lagrar information om raderingen. Detta gör att du kan utveckla ett verktyg som arbetar med denna information för att rädda raderade filer.

Om du vill använda attributen kan du använda kommandot prat. Använd till exempel chattr +s någon filatt tillämpa attribut på någon fil. Behöver du ta bort ett attribut? Använd sedan chattr -s någon fil, och den kommer att raderas. För att få en överblick över alla attribut som för närvarande tillämpas, använd kommandot lsattr.

Sammanfattning

I den här artikeln lärde du dig hur du arbetar med behörigheter. Du läser om de tre grundläggande behörigheterna, avancerade behörigheter och hur man tillämpar ACL på ett filsystem. Du lärde dig också hur du använder alternativet umask för att tillämpa standardbehörigheter. I slutet av den här artikeln lärde du dig hur du använder användarutvidgade attribut för att tillämpa ett ytterligare lager av filsystemsäkerhet.

Om du gillade den här översättningen, skriv om den i kommentarerna. Det kommer att finnas mer motivation att göra användbara översättningar.

Rättade några stavfel och grammatiska fel i artikeln. Minskade några skrymmande stycken till mindre för bättre läsbarhet.

Istället för "Endast någon med administrativa rättigheter till katalogen kan ansöka om exekveringsbehörighet." fixerad till "Endast någon med skrivbehörighet på katalogen kan tillämpa exekveringsbehörighet.", vilket skulle vara mer korrekt.

Tack för kommentarerna berez.

Ersatt:
Om du inte är ägaren till användaren kommer skalet att kontrollera om du är medlem i en grupp, även känd som filens grupp.

På:
Om du inte är ägaren till filen kommer skalet att kontrollera om du är medlem i en grupp som har behörigheter för filen. Om du är medlem i den här gruppen kommer du åt filen med de behörigheter som gruppen har angett, och skalet kommer att sluta kontrollera.

tack för din kommentar CryptoPirate

Källa: will.com

Lägg en kommentar