GNU/Linux >> Znalost Linux >  >> Linux

Jak vynutit uživatelské/skupinové vlastnictví souborů na sdílení Samba

Zeptejte se

Máte diskový adresář sdílený mezi klienty Linux a Microsoft Windows. K tomuto sdílenému adresáři potřebuje přístup více uživatelů, ale když jsou soubory vytvořeny nebo upraveny z klientů Linuxu, použijí se oprávnění souborů Linux, což klientům Windows ztíží nebo znemožní přístup k těmto souborům.

Tyto diskové prostředky byste chtěli sdílet homogenním způsobem.

Řešení

V závislosti na vaší celkové strategii údržby lze použít jednu z následujících technik.

1. Vynucení vlastnictví uživatele nebo skupiny

V souboru /etc/samba/smb.conf můžete použít direktivu:

force user = [user]
force group = [group]

To přepíše normální atributy vlastnictví souboru pro přístup k souborům nebo adresářům. Ve výchozím nastavení se použijí platné přihlašovací údaje uživatele. Pomocí jedné (nebo obou) výše uvedených direktiv lze přidružené pověření vynutit na konkrétní hodnotu. Všechny přístupy k souborům tedy budou provedeny, jako by proces přístupu běžel se zadaným pověřením.

Pokud má směrnice tvar:

force group = +[group]

pak pouze uživatelům Linuxu, kteří jsou již členy [skupina], se po dobu trvání přístupu změní primární skupina na [skupina]. Uživatelé Linuxu, kteří ještě nejsou členy [group], nejsou touto direktivou ovlivněni.

2. Použijte oprávnění k přístupu k adresáři

Zvažte adresář /tmp:je to zápisník, který umožňuje více uživatelům vytvářet, upravovat nebo mazat soubory. Aby uživatel A nemohl smazat soubor vlastněný uživatelem B, má adresář nastaven lepivý bit:

$ ls -ld /tmp
drwxrwxrwt 14 root root 360 Mar 19 08:25 /tmp

Všimněte si t příznak oprávnění:označuje „lepící ” bit je nastaven pro adresář. Každý uživatel může vytvářet soubory v tomto adresáři, ale pouze vlastnící uživatel může položku odstranit; bez lepivého bitu by kdokoli mohl smazat jakýkoli soubor, protože adresář má světová oprávnění ke čtení/zápisu/spouštění.

1. Jedním ze způsobů, jak tento problém obejít, je nechat sdílený adresář SAMBA vlastnit uživatel SAMBA:

# /bin/mkdir [/path/to/SAMBA/share]
# /bin/chown -R [user]:[group] -R [/path/to/SAMBA/share]

2. Dále zapněte bit setgid pro adresář, aby se přihlašovací údaje skupiny libovolné položky adresáře shodovaly s přihlašovacími údaji skupiny tohoto adresáře:

# /bin/chmod g+s [/path/to/SAMBA/share]
# /bin/ls -ld [/path/to/SAMBA/share]
drwxrws--- 1 [user] [group] 0 Mar 19 09:07 [/path/to/SAMBA/share]

3. Nyní vytvořte soubor v [/path/to/SAMBA/share] jako uživatel root. Soubor bude vlastnit root, ale jeho skupina bude skupina [group]:

# /bin/mkdir /example
# /bin/chown root:oracle /example
# /bin/chmod g+s /example
# /bin/ls -ld /example
drwxr-sr-x 2 root oracle 4096 Mar 19 10:03 /example

4. Nakonec vytvořte soubor v /example jako uživatel root:

# id
uid=0(root) gid=0(root) groups=0(root)
# touch /example/file
# ls -ld /example /example/file
drwxrws--- 2 root oracle 4096 Mar 19 10:09 /example
-rw-r--r-- 1 root oracle    0 Mar 19 10:09 /example/file

Všimněte si, že ačkoli přihlašovací údaje použité k vytvoření souboru byly root:root, přístupové údaje uložené pro soubor byly root:oracle; vlastnictví skupiny bylo automaticky nastaveno na skupinu v adresáři.

Poznámka

Výše popsaná metoda setgid také funguje, pokud je místo toho použit bit setuid. V kroku chmod proveďte místo toho toto:

# chmod u+s [/path/to/SAMBA/share]

Můžete také přepsat vlastnictví souboru i členství ve skupině takto:

# chmod u+s,g+s [/path/to/SAMBA/share]

Ačkoli je to fascinující schopnost, může mít omezenou využitelnost.

3. Použijte seznamy řízení přístupu (ACL)

Seznamy řízení přístupu neboli ACL jsou funkce souborového systému, kde je navíc k běžným oprávněním vlastníka/skupiny/jiných souborů Linuxu uložena další sada atributů souborů. Použití ACL umožňuje velmi jemnou kontrolu nad přesným typem přístupu, který má být udělen danému typu přístupu.

Implementace systému souborů SAMBA v systému Linux podporuje seznamy řízení přístupu, ale tato funkce musí být explicitně povolena prostřednictvím atributu acl mount. Tuto funkci je možné aktivovat dynamicky jako:

# mount -o remount,acl [/path/to/samba/mount/point]

Předpokládejme například, že máme sdílenou složku /samba/office/, kde povolujeme libovolnému uživateli zapisovat soubor, ale pověření skupiny by mělo být nuceno k office. Mohli bychom použít příkaz:

# mount -o remount,acl /group
# setfacl -R -d -m u::rwx,g:office:rwx,o::r-x /samba/office
# /bin/getfacl /samba/office
# file: samba/office/
# owner: root
# group: office
user::rwx
group::rwx
other::rwx
default:user::rwx
default:group:office:rwx
default:mask::rwx
default:other::r-x

Když vytváříme tento ACL pro adresář, vztahuje se na jeho obsažené soubory a podadresáře.


Linux
  1. Linux chmod and chown – Jak změnit oprávnění a vlastnictví souborů v Linuxu

  2. Jak přidat uživatele do skupiny v Linuxu

  3. Jak povolit oprávnění k souborům Unix na sdílení Samba s Smb 2.0+?

  1. Jak používat příkaz chown ke změně vlastnictví v Linuxu

  2. Jak vytvořit Samba Share na Ubuntu 20.04

  3. Jak udělit uživateli bez oprávnění root k souborům zařízení

  1. Jak obnovit výchozí skupinové/uživatelské vlastnictví všech souborů pod /var?

  2. Jak vynutit skupinové vlastnictví na Samba Share?

  3. Jak fungují oprávnění k souborům pro uživatele root?