Dela via


Förstå lägesbitar i Azure NetApp Files

Filåtkomstbehörigheter i NFS begränsar vad användare och grupper kan göra när en NAS-volym har monterats. Lägesbitar är en viktig funktion i NFS-filbehörigheter i Azure NetApp Files.

NFS-lägesbitar

Lägesbitbehörigheter i NFS ger grundläggande behörigheter för filer och mappar med hjälp av en standard numerisk representation av åtkomstkontroller. Lägesbitar kan användas med NFSv3 eller NFSv4.1, men lägesbitar är standardalternativet för att skydda NFSv3 enligt definitionen i RFC-1813. Följande tabell visar hur dessa numeriska värden motsvarar åtkomstkontroller.

Läge, bit numeriskt
1 – kör (x)
2 – skriva (w)
3 – skriva/köra (wx)
4 – läs (r)
5 – läsa/köra (rx)
6 – läsa/skriva (rw)
7 – läsa/skriva/köra (rwx)

Numeriska värden tillämpas på olika segment i en åtkomstkontroll: ägare, grupp och alla andra, vilket innebär att det inte finns några detaljerade användaråtkomstkontroller för grundläggande NFSv3. Följande bild visar ett exempel på hur en bitåtkomstkontroll för läge kan konstrueras för användning med ett NFSv3-objekt.

.

Azure NetApp Files stöder inte POSIX-ACL:er. Därför är detaljerade ACL:er endast möjliga med NFSv3 när du använder en NTFS-säkerhetsformatvolym med giltiga UNIX-till Windows-namnmappningar via en namntjänst, till exempel Active Directory LDAP. Alternativt kan du använda NFSv4.1 med Azure NetApp Files och NFSv4.1-ACL:er.

I följande tabell jämförs behörighetskornigheten mellan NFSv3-lägesbitar och NFSv4.x-ACL:er.

NFSv3-lägesbitar NFSv4.x ACL:er
  • Ange användar-ID vid körning (setuid)
  • Ange grupp-ID vid körning (setgid)
  • Spara växlad text (fäst)
  • Läsbehörighet för ägare
  • Skrivbehörighet för ägare
  • Kör behörighet för ägare på en fil. eller slå upp (sök) behörighet för ägare i katalogen
  • Läsbehörighet för grupp
  • Skrivbehörighet för grupp
  • Kör behörighet för grupp på en fil. eller slå upp (sök) behörighet för grupp i katalogen
  • Läsbehörighet för andra
  • Skrivbehörighet för andra
  • Kör behörighet för andra i en fil. eller slå upp (sök) behörighet för andra i katalogen
  • ACE-typer (Tillåt/Neka/Granska)
  • Arvsflaggor:
  • directory-inherit
  • file-inherit
  • no-propagate-inherit
  • ärv endast
  • Behörigheter:
  • read-data (filer) /list-directory (kataloger)
  • write-data (filer) /create-file (kataloger)
  • append-data (filer) /create-subdirectory (kataloger)
  • execute (files) /change-directory (kataloger)
  • Ta bort
  • delete-child
  • read-attributes
  • write-attributes
  • read-named-attributes
  • write-named-attributes
  • read-ACL
  • write-ACL
  • write-owner
  • Synkronisera

Mer information finns i Förstå åtkomstkontrollistor för NFSv4.x.

Sticky bitar, setuid och setgid

När du använder lägesbitar med NFS-monteringar baseras ägarskapet för filer och mappar på och giduid den användare som skapade filerna och mapparna. När en process körs körs den dessutom som den användare som startade den och därmed skulle ha motsvarande behörigheter. Med särskilda behörigheter (till exempel setuid, setgid, sticky bit) kan det här beteendet styras.

Setuid

Biten setuid anges av ett "s" i körningsdelen av ägardelen av en behörighet. Biten setuid gör att en körbar fil kan köras som ägare av filen i stället för som användaren som försöker köra filen. Programmet har till exempel biten /bin/passwdsetuid aktiverad som standard, därför körs programmet som rot när en användare försöker ändra sitt lösenord.

# ls -la /bin/passwd 
-rwsr-xr-x 1 root root 68208 Nov 29  2022 /bin/passwd

Om biten setuid tas bort fungerar inte funktionen för lösenordsändring korrekt.

# ls -la /bin/passwd
-rwxr-xr-x 1 root root 68208 Nov 29  2022 /bin/passwd
user2@parisi-ubuntu:/mnt$ passwd
Changing password for user2.
Current password: 
New password: 
Retype new password: 
passwd: Authentication token manipulation error
passwd: password unchanged

När biten setuid återställs körs passwd-programmet som ägare (rot) och fungerar korrekt, men bara för användaren som kör kommandot passwd.

# chmod u+s /bin/passwd
# ls -la /bin/passwd
-rwsr-xr-x 1 root root 68208 Nov 29  2022 /bin/passwd
# su user2
user2@parisi-ubuntu:/mnt$ passwd user1
passwd: You may not view or modify password information for user1.
user2@parisi-ubuntu:/mnt$ passwd
Changing password for user2.
Current password: 
New password: 
Retype new password: 
passwd: password updated successfully

Setuid har ingen effekt på kataloger.

Setgid

Biten setgid kan användas på både filer och kataloger.

Med kataloger kan setgid användas som ett sätt att ärva ägargruppen för filer och mappar som skapats under den överordnade katalogen med bituppsättningen. Precis som setuidändras den körbara biten till ett "s" eller ett "S".

Kommentar

Versalt "S" innebär att den körbara biten inte har angetts, till exempel om behörigheterna i katalogen är "6" eller "rw".

Till exempel:

# chmod g+s testdir
# ls -la | grep testdir
drwxrwSrw-  2 user1 group1     4096 Oct 11 16:34 testdir
# who
root     ttyS0        2023-10-11 16:28
# touch testdir/file
# ls -la testdir
total 8
drwxrwSrw- 2 user1 group1 4096 Oct 11 17:09 .
drwxrwxrwx 5 root  root   4096 Oct 11 16:37 ..
-rw-r--r-- 1 root  group1    0 Oct 11 17:09 file

För filer fungerar setgid på samma sätt setuidsom – körbara filer körs med gruppbehörigheter för gruppägaren. Om en användare finns i ägargruppen har användaren åtkomst till att köra den körbara filen när setgid har angetts. Om de inte är med i gruppen får de inte åtkomst. Om en administratör till exempel vill begränsa vilka användare som kan köra mkdir kommandot på en klient kan de använda setgid.

Normalt /bin/mkdir har 755 behörigheter med rotägarskap. Det innebär att vem som helst kan köras mkdir på en klient.

# ls -la /bin/mkdir 
-rwxr-xr-x 1 root root 88408 Sep  5  2019 /bin/mkdir

Om du vill ändra beteendet för att begränsa vilka användare som kan köra mkdir kommandot ändrar du den grupp som äger mkdir programmet, ändrar behörigheterna för /bin/mkdir till 750 och lägger sedan till setgid-biten i mkdir.

# chgrp group1 /bin/mkdir
# chmod g+s /bin/mkdir
# chmod 750 /bin/mkdir
# ls -la /bin/mkdir
-rwxr-s--- 1 root group1 88408 Sep  5  2019 /bin/mkdir

Därför körs programmet med behörigheter för group1. Om användaren inte är medlem i group1får användaren inte åtkomst till att köra mkdir.

User1 är medlem i group1, men user2 är inte:

# id user1
uid=1001(user1) gid=1001(group1) groups=1001(group1)
# id user2
uid=1002(user2) gid=2002(group2) groups=2002(group2)

Efter den här ändringen user1 kan du köra mkdir, men user2 kan inte eftersom user2 inte finns i group1.

# su user1
$ mkdir test
$ ls -la | grep test
drwxr-xr-x  2 user1 group1     4096 Oct 11 18:48 test

# su user2
$ mkdir user2-test
bash: /usr/bin/mkdir: Permission denied

Sticky bit

Den klibbiga biten används endast för kataloger och styr, när den används, vilka filer som kan ändras i den katalogen oavsett deras lägesbitbehörigheter. När en fästbit har angetts kan endast filägare (och rot) ändra filer, även om filbehörigheter visas som "777".

I följande exempel finns katalogen "sticky" i en Azure NetApp Fils-volym och har vidöppna behörigheter, men den klibbiga biten har angetts.

# mkdir sticky
# chmod 777 sticky
# chmod o+t sticky
# ls -la | grep sticky
drwxrwxrwt  2 root  root       4096 Oct 11 19:24 sticky

I mappen finns filer som ägs av olika användare. Alla har 777 behörigheter.

# ls -la
total 8
drwxrwxrwt 2 root     root   4096 Oct 11 19:29 .
drwxrwxrwx 8 root     root   4096 Oct 11 19:24 ..
-rwxr-xr-x 1 user2    group1    0 Oct 11 19:29 4913
-rwxrwxrwx 1 UNIXuser group1   40 Oct 11 19:28 UNIX-file
-rwxrwxrwx 1 user1    group1   33 Oct 11 19:27 user1-file
-rwxrwxrwx 1 user2    group1   34 Oct 11 19:27 user2-file

Normalt skulle vem som helst kunna ändra eller ta bort dessa filer. Men eftersom den överordnade mappen har en fast bituppsättning kan bara filägarna göra ändringar i filerna.

User1 kan till exempel inte ändra eller ta bort user2-file:

# su user1
$ vi user2-file
Only user2 can modify this file.
Hi
~
"user2-file"
"user2-file" E212: Can't open file for writing
$ rm user2-file 
rm: can't remove 'user2-file': Operation not permitted

user2 Det går däremot inte att ändra eller ta bort user1-file eftersom de inte äger filen och den fästiga biten har angetts i den överordnade katalogen.

# su user2
$ vi user1-file
Only user1 can modify this file.
Hi
~
"user1-file"
"user1-file" E212: Can't open file for writing
$ rm user1-file 
rm: can't remove 'user1-file': Operation not permitted

Roten kan dock fortfarande ta bort filerna.

# rm UNIX-file 

Om du vill ändra möjligheten för roten att ändra filer måste du krossa roten till en annan användare via en exportprincipregel för Azure NetApp Files. Mer information finns i rot squashing.

Umask

I NFS-åtgärder kan behörigheter styras via lägesbitar, som använder numeriska attribut för att fastställa fil- och mappåtkomst. Dessa lägesbitar bestämmer läs-, skriv-, körnings- och specialattribut. Numeriskt representeras behörigheter som:

  • Kör = 1
  • Läs = 2
  • Skriv = 4

Totalt antal behörigheter bestäms genom att lägga till eller subtrahera en kombination av föregående. Till exempel:

  • 4 + 2 + 1 = 7 (kan göra allt)
  • 4 + 2 = 6 (läs/skriv)

Mer information finns i HJÄLP om UNIX-behörigheter.

Umask är en funktion som gör det möjligt för en administratör att begränsa behörighetsnivån för en klient. Som standard är umask för de flesta klienter inställt på 0022. 0022 innebär att filer som skapats från klienten tilldelas den umasken. Umasken subtraheras från objektets basbehörigheter. Om en volym har 0777-behörigheter och monteras med hjälp av NFS till en klient med en umask på 0022, har objekt som skrivits från klienten till volymen 0755-åtkomst (0777–0022).

# umask
0022
# umask -S
u=rwx,g=rx,o=rx 

Många operativsystem tillåter dock inte att filer skapas med körningsbehörigheter, men de tillåter att mappar har rätt behörigheter. Därför kan filer som skapats med en umask på 0022 sluta med behörigheter på 0644. I följande exempel används RHEL 6.5:

# umask
0022
# cd /cdot
# mkdir umask_dir
# ls -la | grep umask_dir
drwxr-xr-x.  2 root     root         4096 Apr 23 14:39 umask_dir

# touch umask_file
# ls -la | grep umask_file
-rw-r--r--.  1 root     root            0 Apr 23 14:39 umask_file

Nästa steg