Principy bitů režimu ve službě Azure NetApp Files
Přístupová oprávnění k souborům v systému souborů NFS omezují, co můžou uživatelé a skupiny dělat po připojení svazku NAS. Bity režimu jsou klíčovou funkcí oprávnění souborů NFS ve službě Azure NetApp Files.
Bity režimu systému souborů NFS
Bitová oprávnění režimu v systému souborů NFS poskytují základní oprávnění pro soubory a složky pomocí standardní číselné reprezentace řízení přístupu. Bity režimu lze použít s NFSv3 nebo NFSv4.1, ale bity režimu jsou standardní možností pro zabezpečení NFSv3, jak je definováno v RFC-1813. Následující tabulka ukazuje, jak tyto číselné hodnoty odpovídají ovládacím prvkům přístupu.
Bitová čísla režimu |
---|
1 – provedení (x) |
2 – zápis (w) |
3 – zápis/spuštění (wx) |
4 – čtení (r) |
5 – čtení/spuštění (rx) |
6 – čtení/zápis (rw) |
7 – čtení/zápis/execute (rwx) |
Číselné hodnoty se použijí na různé segmenty řízení přístupu: vlastník, skupina a všichni ostatní, což znamená, že pro základní NFSv3 nejsou zavedené žádné podrobné řízení přístupu uživatelů. Následující obrázek ukazuje příklad, jak může být řízení přístupu bitového režimu vytvořené pro použití s objektem NFSv3.
Azure NetApp Files nepodporuje seznamy ACL POSIX. Podrobné seznamy ACL jsou tedy možné pouze u NFSv3 při použití svazku stylu zabezpečení NTFS s platnými systém UNIX na mapování názvů Systému Windows prostřednictvím názvové služby, jako je například Active Directory LDAP. Alternativně můžete použít NFSv4.1 se službami Azure NetApp Files a seznamy ACL NFSv4.1.
Následující tabulka porovnává členitost oprávnění mezi bity režimu NFSv3 a seznamy ACL NFSv4.x.
Bity režimu NFSv3 | Seznamy ACL NFSv4.x |
---|---|
|
|
Další informace najdete v tématu Vysvětlení seznamů řízení přístupu NFSv4.x.
Rychlé bity, setuid a setgid
Při použití bitů režimu s připojením NFS je vlastnictví souborů a složek založené na uid
gid
uživateli, který soubory a složky vytvořil. Když se navíc proces spustí, spustí se jako uživatel, který ho spustil, a proto by měl odpovídající oprávnění. Při speciálních oprávněních (například setuid
, setgid
sticky bit) je možné toto chování řídit.
Setuid
Bit setuid
je určen "s" v části provádění části vlastníka oprávnění. Bit setuid
umožňuje spustitelný soubor spustitelný soubor jako vlastníka souboru, a ne jako uživatel, který se pokouší soubor spustit. Aplikace má setuid
například /bin/passwd
ve výchozím nastavení povolený bit, proto se aplikace spustí jako kořen, když se uživatel pokusí změnit heslo.
# ls -la /bin/passwd
-rwsr-xr-x 1 root root 68208 Nov 29 2022 /bin/passwd
setuid
Pokud se bit odebere, funkce změny hesla nebude fungovat správně.
# 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
Po obnovení bitu setuid
se aplikace passwd spustí jako vlastník (root) a funguje správně, ale pouze pro uživatele, který spouští příkaz 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 nemá žádný vliv na adresáře.
Setgid
Bit setgid
lze použít v souborech i adresářích.
S adresáři lze setgid použít jako způsob, jak dědit skupinu vlastníka pro soubory a složky vytvořené pod nadřazeným adresářem s bitovou sadou. Podobně jako setuid
, spustitelný bit se změní na "s" nebo "S".
Poznámka:
Velká "S" znamená, že spustitelný bit nebyl nastaven, například pokud oprávnění k adresáři jsou "6" nebo "rw".
Příklad:
# 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
U souborů se setgid chová podobně setuid
jako – spustitelné soubory se spouštějí pomocí oprávnění skupiny vlastníka skupiny. Pokud je uživatel ve skupině vlastníka, znamená to, že uživatel má přístup ke spuštění spustitelného souboru při nastavení setgid. Pokud nejsou ve skupině, nezískají přístup. Pokud například správce chce omezit, kteří uživatelé můžou příkaz spustit mkdir
na klientovi, můžou použít setgid.
/bin/mkdir
Za normálních okolností má oprávnění 755 s kořenovým vlastnictvím. To znamená, že každý může běžet mkdir
na klientovi.
# ls -la /bin/mkdir
-rwxr-xr-x 1 root root 88408 Sep 5 2019 /bin/mkdir
Chcete-li změnit chování tak, aby omezilo, kteří uživatelé mohou spustit mkdir
příkaz, změňte skupinu, která vlastní mkdir
aplikaci, změňte oprávnění na /bin/mkdir
750 a pak přidejte bit setgid do 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
V důsledku toho aplikace běží s oprávněními pro group1
. Pokud uživatel není členem group1
, uživatel nemá přístup ke spuštění mkdir
.
User1
je členem group1
, ale user2
není:
# id user1
uid=1001(user1) gid=1001(group1) groups=1001(group1)
# id user2
uid=1002(user2) gid=2002(group2) groups=2002(group2)
Po této změně může běžet mkdir
, user1
ale user2
nemůže, protože user2
není v 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
Rychlý bit
Bit sticky se používá jenom pro adresáře a při použití určuje, které soubory lze v tomto adresáři upravovat bez ohledu na jejich oprávnění bitového režimu. Pokud je nastavený rychlý bit, můžou soubory upravovat jenom vlastníci souborů (a root), a to i v případě, že se oprávnění k souborům zobrazují jako 777.
V následujícím příkladu se adresář "sticky" nachází ve svazku Azure NetApp Fils a má široká otevřená oprávnění, ale rychlý bit je nastavený.
# mkdir sticky
# chmod 777 sticky
# chmod o+t sticky
# ls -la | grep sticky
drwxrwxrwt 2 root root 4096 Oct 11 19:24 sticky
Uvnitř složky jsou soubory vlastněné různými uživateli. Všechny mají 777 oprávnění.
# 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
Za normálních okolností by každý mohl tyto soubory upravit nebo odstranit. Vzhledem k tomu, že nadřazená složka má nastavenou rychlou bitovou sadu, můžou v souborech provádět změny jenom vlastníci souborů.
Uživatel1 například nemůže upravit ani odstranit 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
Naopak nelze upravovat ani odstraňovatuser1-file
, user2
protože soubor nevlastní a bit sticky je nastavený v nadřazeném adresáři.
# 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
Kořenové soubory ale stále můžou odebrat.
# rm UNIX-file
Pokud chcete změnit schopnost kořenového adresáře upravovat soubory, musíte root zamačkat na jiného uživatele prostřednictvím pravidla zásad exportu služby Azure NetApp Files. Další informace naleznete v tématu root squashing.
Umask
V operacích NFS je možné oprávnění řídit prostřednictvím bitů režimu, které využívají číselné atributy k určení přístupu k souborům a složkám. Tyto bity režimu určují atributy čtení, zápisu, spouštění a speciálních atributů. Číselně jsou oprávnění reprezentována takto:
- Execute = 1
- Čtení = 2
- Zápis = 4
Celková oprávnění jsou určena sčítáním nebo odečtením kombinace předchozích oprávnění. Příklad:
- 4 + 2 + 1 = 7 (může dělat vše)
- 4 + 2 = 6 (čtení/zápis)
Další informace najdete v nápovědě k oprávněním systém UNIX.
Umask je funkce, která správci umožňuje omezit úroveň oprávnění povolených pro klienta. Ve výchozím nastavení je umask pro většinu klientů nastaven na 0022. 0022 znamená, že soubory vytvořené z daného klienta jsou přiřazeny umask. umask se odečte od základních oprávnění objektu. Pokud má svazek oprávnění 0777 a je připojený pomocí systému souborů NFS k klientovi s umaskem 0022, objekty zapsané z klienta do tohoto svazku mají přístup 0755 (0777 – 0022).
# umask
0022
# umask -S
u=rwx,g=rx,o=rx
Mnoho operačních systémů ale neumožňuje vytváření souborů s oprávněními ke spuštění, ale umožňují složkám mít správná oprávnění. Soubory vytvořené pomocí umask 0022 proto můžou skončit s oprávněními 0644. Následující příklad používá 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