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.