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 |
---|---|
|
|
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 gid
på uid
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/passwd
setuid
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 setuid
som – 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 group1
få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