Sdílet prostřednictvím


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
  • Nastavení ID uživatele při spuštění (setuid)
  • Nastavení ID skupiny při spuštění (setgid)
  • Uložit prohozený text (rychlý bit)
  • Oprávnění ke čtení pro vlastníka
  • Oprávnění k zápisu pro vlastníka
  • Spouštět oprávnění pro vlastníka souboru; nebo vyhledat (hledat) oprávnění vlastníka v adresáři
  • Oprávnění ke čtení pro skupinu
  • Oprávnění k zápisu pro skupinu
  • Spouštět oprávnění pro skupinu v souboru; nebo vyhledat (hledat) oprávnění pro skupinu v adresáři
  • Oprávnění ke čtení pro ostatní
  • Oprávnění k zápisu pro ostatní
  • Spouštět oprávnění pro ostatní v souboru; nebo vyhledat (hledat) oprávnění pro ostatní uživatele v adresáři
  • Typy ACE (povolit, odepřít nebo audit)
  • Příznaky dědičnosti:
  • directory-inherit
  • dědění souboru
  • no-propagate-inherit
  • pouze dědění
  • Oprávnění:
  • read-data (soubory) / list-directory (adresáře)
  • write-data (soubory) / create-file (adresáře)
  • append-data (soubory) / create-podadresář (adresáře)
  • execute (files) / change-directory (adresáře)
  • Odstranit
  • delete-child
  • read-attributes
  • write-attributes
  • read-named-attributes
  • write-named-attributes
  • read-ACL
  • write-ACL
  • vlastník zápisu
  • Synchronizace

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, setgidsticky 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ě setuidjako – 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

Další kroky