Informatie over modus-bits in Azure NetApp Files
Machtigingen voor bestandstoegang in NFS beperken wat gebruikers en groepen kunnen doen zodra een NAS-volume is gekoppeld. Modus-bits zijn een belangrijke functie van NFS-bestandsmachtigingen in Azure NetApp Files.
NFS-modus bits
Modus-bitsmachtigingen in NFS bieden basismachtigingen voor bestanden en mappen, met behulp van een standaard numerieke weergave van toegangsbeheer. Modus bits kunnen worden gebruikt met NFSv3 of NFSv4.1, maar modus bits zijn de standaardoptie voor het beveiligen van NFSv3 zoals gedefinieerd in RFC-1813. In de volgende tabel ziet u hoe deze numerieke waarden overeenkomen met besturingselementen voor toegang.
Modus-bits numeriek |
---|
1 – uitvoeren (x) |
2 – schrijven (w) |
3 – schrijven/uitvoeren (wx) |
4 – lezen (r) |
5 – lezen/uitvoeren (rx) |
6 – lezen/schrijven (rw) |
7 – lezen/schrijven/uitvoeren (rwx) |
Numerieke waarden worden toegepast op verschillende segmenten van een toegangsbeheer: eigenaar, groep en iedereen, wat betekent dat er geen gedetailleerde besturingselementen voor gebruikerstoegang aanwezig zijn voor basic NFSv3. In de volgende afbeelding ziet u een voorbeeld van hoe een modus-bits toegangsbeheer kan worden samengesteld voor gebruik met een NFSv3-object.
Azure NetApp Files biedt geen ondersteuning voor POSIX-ACL's. Gedetailleerde ACL's zijn dus alleen mogelijk met NFSv3 wanneer u een NTFS-beveiligingsstijlvolume met geldige UNIX-naar-Windows-naamtoewijzingen gebruikt via een naamservice zoals Active Directory LDAP. U kunt ook NFSv4.1 gebruiken met Azure NetApp Files en NFSv4.1 ACL's.
De volgende tabel vergelijkt de machtiginggranulariteit tussen NFSv3-modus-bits en NFSv4.x ACL's.
NFSv3-modus bits | NFSv4.x ACL's |
---|---|
|
|
Zie NFSv4.x-toegangsbeheerlijsten begrijpen voor meer informatie.
Plak bits, setuid en setgid
Wanneer u modus-bits met NFS-koppelingen gebruikt, is het eigendom van bestanden en mappen gebaseerd op de uid
en gid
van de gebruiker die de bestanden en mappen heeft gemaakt. Wanneer een proces wordt uitgevoerd, wordt het uitgevoerd als de gebruiker die het proces heeft gestart, en heeft het dus de bijbehorende machtigingen. Met speciale machtigingen (zoals setuid
, setgid
plakbit) kan dit gedrag worden beheerd.
Setuid
De setuid
bit wordt aangewezen door een 's' in het uitvoergedeelte van de eigenaar-bit van een machtiging. Met de setuid
bit kan een uitvoerbaar bestand worden uitgevoerd als de eigenaar van het bestand in plaats van als de gebruiker die het bestand probeert uit te voeren. De /bin/passwd
toepassing heeft bijvoorbeeld standaard de setuid
bit ingeschakeld, waardoor de toepassing wordt uitgevoerd als hoofdmap wanneer een gebruiker probeert zijn wachtwoord te wijzigen.
# ls -la /bin/passwd
-rwsr-xr-x 1 root root 68208 Nov 29 2022 /bin/passwd
Als de setuid
bit wordt verwijderd, werkt de functionaliteit voor wachtwoordwijziging niet goed.
# 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
Wanneer de setuid
bit wordt hersteld, wordt de passwd-toepassing uitgevoerd als de eigenaar (root) en werkt deze goed, maar alleen voor de gebruiker die de passwd-opdracht uitvoert.
# 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 heeft geen effect op mappen.
Setgid
De setgid
bit kan worden gebruikt voor zowel bestanden als mappen.
Met mappen kan setgid worden gebruikt als een manier om de eigenaarsgroep over te nemen voor bestanden en mappen die onder de bovenliggende map zijn gemaakt met de bitset. De uitvoerbare bit wordt bijvoorbeeld setuid
gewijzigd in een 's' of 'S'.
Notitie
Hoofdletter 'S' betekent dat de uitvoerbare bit niet is ingesteld, bijvoorbeeld als de machtigingen voor de map '6' of 'rw' zijn.
Voorbeeld:
# 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
Voor bestanden gedraagt setgid zich op dezelfde manier als setuid
uitvoerbare bestanden die worden uitgevoerd met behulp van de groepsmachtigingen van de groepseigenaar. Als een gebruiker zich in de eigenaarsgroep bevindt, heeft de gebruiker toegang om het uitvoerbare bestand uit te voeren wanneer setgid is ingesteld. Als ze zich niet in de groep bevinden, krijgen ze geen toegang. Als een beheerder bijvoorbeeld wil beperken welke gebruikers de mkdir
opdracht op een client kunnen uitvoeren, kunnen ze setgid gebruiken.
Normaal gesproken /bin/mkdir
heeft u 755 machtigingen met hoofdeigendom. Dit betekent dat iedereen op een client kan worden uitgevoerd mkdir
.
# ls -la /bin/mkdir
-rwxr-xr-x 1 root root 88408 Sep 5 2019 /bin/mkdir
Als u het gedrag wilt wijzigen om te beperken welke gebruikers de mkdir
opdracht kunnen uitvoeren, wijzigt u de groep die eigenaar is van de mkdir
toepassing, wijzigt u de machtigingen voor /bin/mkdir
750 en voegt u vervolgens de setgid-bit toe aan 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
Als gevolg hiervan wordt de toepassing uitgevoerd met machtigingen voor group1
. Als de gebruiker geen lid is van group1
, krijgt de gebruiker geen toegang om uit te voeren mkdir
.
User1
is lid van group1
, maar user2
niet:
# id user1
uid=1001(user1) gid=1001(group1) groups=1001(group1)
# id user2
uid=1002(user2) gid=2002(group2) groups=2002(group2)
Na deze wijziging kan deze worden uitgevoerd, user1
maar user2
niet omdat user2
het niet in group1
mkdir
staat is.
# 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
Plakbit
De plak-bit wordt alleen gebruikt voor mappen en, wanneer gebruikt, bepaalt welke bestanden in die map kunnen worden gewijzigd, ongeacht hun modus bitmachtigingen. Wanneer een plak-bit is ingesteld, kunnen alleen bestandseigenaren (en root) bestanden wijzigen, zelfs als bestandsmachtigingen worden weergegeven als '777'.
In het volgende voorbeeld bevindt de map 'plakkerig' zich in een Azure NetApp Fils-volume en heeft brede open machtigingen, maar de plak-bit is ingesteld.
# mkdir sticky
# chmod 777 sticky
# chmod o+t sticky
# ls -la | grep sticky
drwxrwxrwt 2 root root 4096 Oct 11 19:24 sticky
In de map bevinden zich bestanden die eigendom zijn van verschillende gebruikers. Ze hebben allemaal 777 machtigingen.
# 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
Normaal gesproken zou iedereen deze bestanden kunnen wijzigen of verwijderen. Maar omdat de bovenliggende map een plak-bits set heeft, kunnen alleen de bestandseigenaren wijzigingen aanbrengen in de bestanden.
Gebruiker1 kan bijvoorbeeld niet wijzigen of verwijderen 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
Omgekeerd kan het bestand niet worden gewijzigd of verwijderduser1-file
, user2
omdat ze geen eigenaar zijn van het bestand en de plak-bit is ingesteld op de bovenliggende map.
# 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
Root kan de bestanden echter nog steeds verwijderen.
# rm UNIX-file
Als u de mogelijkheid van root wilt wijzigen om bestanden te wijzigen, moet u rooten naar een andere gebruiker via een Azure NetApp Files-exportbeleidsregel. Zie root squashing voor meer informatie.
Umask
In NFS-bewerkingen kunnen machtigingen worden beheerd via modus-bits, die gebruikmaken van numerieke kenmerken om de toegang tot bestanden en mappen te bepalen. Deze modus-bits bepalen lees-, schrijf-, uitvoer- en speciale kenmerken. Numeriek worden machtigingen weergegeven als:
- Execute = 1
- Lezen = 2
- Schrijven = 4
Totaal aantal machtigingen wordt bepaald door een combinatie van de voorgaande op te tellen of af te trekken. Voorbeeld:
- 4 + 2 + 1 = 7 (kan alles doen)
- 4 + 2 = 6 (lezen/schrijven)
Zie de Help voor UNIX-machtigingen voor meer informatie.
Umask is een functionaliteit waarmee een beheerder het machtigingsniveau voor een client kan beperken. De umask voor de meeste clients is standaard ingesteld op 0022. 0022 betekent dat bestanden die zijn gemaakt op basis van die client, die umask zijn toegewezen. De umask wordt afgetrokken van de basismachtigingen van het object. Als een volume 0777 machtigingen heeft en wordt gekoppeld met NFS aan een client met een umask van 0022, hebben objecten die van de client naar dat volume zijn geschreven 0755-toegang (0777 – 0022).
# umask
0022
# umask -S
u=rwx,g=rx,o=rx
Veel besturingssystemen staan echter niet toe dat bestanden worden gemaakt met uitvoermachtigingen, maar ze staan wel toe dat mappen over de juiste machtigingen beschikken. Bestanden die zijn gemaakt met een umask van 0022, kunnen dus eindigen met machtigingen van 0644. In het volgende voorbeeld wordt RHEL 6.5 gebruikt:
# 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