Az Azure NetApp Files módbitjeinek ismertetése
Az NFS fájlhozzáférés-engedélyei korlátozzák, hogy a felhasználók és csoportok mit tehetnek a NAS-kötet csatlakoztatása után. A módbitek az Azure NetApp Files NFS-fájlengedélyeinek kulcsfontosságú funkciói.
NFS mód bitjei
Az NFS módbitengedélyei alapszintű engedélyeket biztosítanak a fájlokhoz és mappákhoz a hozzáférés-vezérlők szabványos numerikus ábrázolása használatával. A módbitek NFSv3 vagy NFSv4.1 esetén is használhatók, de a módbitek az RFC-1813-ban meghatározott NFSv3 biztonságossá tételének szabványos módjai. Az alábbi táblázat bemutatja, hogy ezek a numerikus értékek hogyan felelnek meg a hozzáférési vezérlőknek.
Módbit numerikus |
---|
1 – végrehajtás (x) |
2 – írás (w) |
3 – írás/végrehajtás (wx) |
4 – olvasás (r) |
5 – olvasás/végrehajtás (rx) |
6 – olvasás/írás (rw) |
7 – olvasás/írás/végrehajtás (rwx) |
A rendszer numerikus értékeket alkalmaz a hozzáférés-vezérlés különböző szegmenseire: tulajdonosra, csoportra és mindenki másra, ami azt jelenti, hogy nincsenek részletes felhasználói hozzáférés-vezérlők az alapszintű NFSv3-hoz. Az alábbi képen egy példa látható arra, hogyan hozható létre módbites hozzáférés-vezérlés NFSv3 objektummal való használatra.
Az Azure NetApp Files nem támogatja a POSIX ACL-eket. Így az NFSv3 csak akkor lehetséges részletes ACL-ekkel, ha érvényes UNIX- és Windows-névleképezéseket tartalmazó NTFS biztonsági stílusú kötetet használ egy névszolgáltatáson, például az Active Directory LDAP-n keresztül. Alternatív megoldásként használhatja az NFSv4.1-et az Azure NetApp Files és az NFSv4.1 ACL-ek használatával.
Az alábbi táblázat összehasonlítja az NFSv3 módú bitek és az NFSv4.x ACL-ek engedélyeinek részletességét.
NFSv3 módú bitek | NFSv4.x ACL-ek |
---|---|
|
|
További információ: Az NFSv4.x hozzáférés-vezérlési listák ismertetése.
Ragadós bitek, setuid és setgid
Ha módbiteket használ NFS-csatlakoztatásokkal, a fájlok és mappák tulajdonjoga a uid
fájlokat és mappákat létrehozó felhasználótól gid
és felhasználótól függ. Emellett amikor egy folyamat fut, az a felhasználóként fut, aki elindítja, és így rendelkezik a megfelelő engedélyekkel. Speciális engedélyekkel (például setuid
, setgid
ragadós bittel) ez a viselkedés szabályozható.
Setuid
A setuid
bitet egy "s" jelöli ki az engedély tulajdonosi bitjének végrehajtási részében. A setuid
bit lehetővé teszi a végrehajtható fájlok futtatását a fájl tulajdonosaként, nem pedig a fájlt végrehajtó felhasználóként. Az alkalmazás például /bin/passwd
alapértelmezés szerint engedélyezve van, setuid
ezért az alkalmazás gyökérként fut, amikor egy felhasználó megpróbálja módosítani a jelszavát.
# ls -la /bin/passwd
-rwsr-xr-x 1 root root 68208 Nov 29 2022 /bin/passwd
Ha a setuid
bit el lett távolítva, a jelszómódosítási funkció nem fog megfelelően működni.
# 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
setuid
A bit visszaállításakor a passwd alkalmazás tulajdonosként (gyökérként) fut, és megfelelően működik, de csak a passwd parancsot futtató felhasználó számára.
# 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
A Setuid nincs hatással a könyvtárakra.
Setgid
A setgid
bit fájlokon és könyvtárakon egyaránt használható.
Könyvtárak esetén a setgid használatával örökölheti a szülőkönyvtár alatt létrehozott fájlok és mappák tulajdonoscsoportját a bitkészlettel. A végrehajtható bit például setuid
"s" vagy "S" értékre módosul.
Feljegyzés
Az "S" nagybetű azt jelenti, hogy a végrehajtható bit nincs beállítva, például ha a könyvtár engedélyei "6" vagy "rw".
Példa:
# 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ájlok esetében a setgid ugyanúgy viselkedik, mint setuid
– a végrehajtható fájlok a csoporttulajdonos csoportengedélyei alapján futnak. Ha egy felhasználó a tulajdonoscsoportban van, az említett felhasználónak hozzáférése van a végrehajtható fájl futtatásához a setgid beállításakor. Ha nincsenek a csoportban, nem kapnak hozzáférést. Ha például egy rendszergazda korlátozni szeretné, hogy mely felhasználók futtathatják a parancsot egy ügyfélen, használhatják a mkdir
setgid parancsot.
Általában 755 jogosultsággal rendelkezik, /bin/mkdir
fő tulajdonjoggal. Ez azt jelenti, hogy bárki futtathat mkdir
egy ügyfelet.
# ls -la /bin/mkdir
-rwxr-xr-x 1 root root 88408 Sep 5 2019 /bin/mkdir
Ha úgy szeretné módosítani a viselkedést, hogy korlátozza, hogy mely felhasználók futtathatják a mkdir
parancsot, módosítsa az alkalmazás tulajdonoscsoportját mkdir
, módosítsa az engedélyeket 750-re /bin/mkdir
, majd adja hozzá a setgid bitet 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
Ennek eredményeképpen az alkalmazás a következő engedélyekkel group1
fut: . Ha a felhasználó nem tagja group1
, a felhasználó nem kap hozzáférést a futtatáshoz mkdir
.
User1
group1
tagja, de user2
nem:
# id user1
uid=1001(user1) gid=1001(group1) groups=1001(group1)
# id user2
uid=1002(user2) gid=2002(group2) groups=2002(group2)
A módosítás után futtatható, user1
de user2
azóta nem user2
group1
.mkdir
# 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
Ragadós bit
A ragadós bit csak könyvtárakhoz használható, és használat esetén szabályozza, hogy mely fájlok módosíthatók az adott könyvtárban a módbit-engedélyektől függetlenül. Ha be van állítva egy ragadós bit, csak a fájltulajdonosok (és a gyökér) módosíthatják a fájlokat, még akkor is, ha a fájlengedélyek "777" néven jelennek meg.
A következő példában a "ragadós" könyvtár egy Azure NetApp Fils-kötetben található, és széles körű nyitott engedélyekkel rendelkezik, de a ragadós bit be van állítva.
# mkdir sticky
# chmod 777 sticky
# chmod o+t sticky
# ls -la | grep sticky
drwxrwxrwt 2 root root 4096 Oct 11 19:24 sticky
A mappában különböző felhasználók által birtokolt fájlok találhatók. Mindegyiknek 777 engedélye van.
# 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
Általában bárki módosíthatja vagy törölheti ezeket a fájlokat. Mivel azonban a szülőmappa ragacsos bitkészlettel rendelkezik, csak a fájltulajdonosok módosíthatják a fájlokat.
Az 1. felhasználó például nem módosíthatja és nem törölheti user2-file
a következőt:
# 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
Ezzel szemben nem módosítható és nem törölhetőuser1-file
, mivel nem rendelkeznek a fájl tulajdonosával, user2
és a ragadós bit be van állítva a szülőkönyvtárban.
# 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
A gyökér azonban továbbra is eltávolíthatja a fájlokat.
# rm UNIX-file
Ha módosítani szeretné a gyökérfájlokat a fájlok módosításához, egy másik felhasználóhoz kell a rootot egy Azure NetApp Files exportálási szabályzatszabály alapján módosítania. További információkért lásd a gyökér összenyomását.
Umask
Az NFS-műveletekben az engedélyek módbitekkel vezérelhetők, amelyek numerikus attribútumokkal határozzák meg a fájl- és mappahozzáférést. Ezek a módbitek határozzák meg az olvasási, írási, végrehajtási és speciális attribútumokat. Numerikusan az engedélyek a következőképpen jelennek meg:
- Végrehajtás = 1
- Olvasás = 2
- Írás = 4
A teljes engedélyek az előzőek kombinációjának hozzáadásával vagy kivonásával határozhatók meg. Példa:
- 4 + 2 + 1 = 7 (mindenre képes)
- 4 + 2 = 6 (olvasás/írás)
További információ: UNIX-engedélyek súgója.
Az Umask egy olyan funkció, amellyel a rendszergazda korlátozhatja az ügyfél számára engedélyezett engedélyek szintjét. Alapértelmezés szerint a legtöbb ügyfél umask értéke 0022. A 0022 azt jelenti, hogy az ügyfélből létrehozott fájlok az adott umaszkhoz vannak rendelve. A rendszer kivonja az umaszkot az objektum alapengedélyeiből. Ha egy kötet 0777 engedélyekkel rendelkezik, és NFS használatával van csatlakoztatva egy 0022 umaszkot tartalmazó ügyfélhez, az ügyféltől a kötethez írt objektumok 0755 hozzáféréssel rendelkeznek (0777 – 0022).
# umask
0022
# umask -S
u=rwx,g=rx,o=rx
Sok operációs rendszer azonban nem engedélyezi a fájlok végrehajtási engedélyekkel való létrehozását, de lehetővé teszik a mappák számára a megfelelő engedélyekkel való létrehozását. Így a 0022 umaszkgal létrehozott fájlok 0644 engedélyekkel végződhetnek. Az alábbi példa az RHEL 6.5-öt használja:
# 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