Samba a práva souborů

Samba a práva souborů
« kdy: 07. 09. 2023, 00:00:06 »
Ahoj,
snad to dobře popíšu.
Mám sever (Debian) kde je nainstalovaná Samba.
Na Linuxu jsou nějaké data v /home/datauzivatele/
souborJanaJedna.txt
souborJanaDva.txt

souborEvaJedna.txt
souborEvaDva.txt

Existují tři uživatelé windows10 (Jana, Eva, Honza)
V smb.conf

Kód: [Vybrat]
#======================= Share Definitions =======================

[datauzivatele]
browseable = no
path = /home/datauzivatele
read only = no
guest ok = no
valid users = @Jana,@Eva,@Honza

Jak nastavit práva u souborů aby
Jana viděla jen soubory (souborJanaJedna.txt a souborJanaDva.txt)
Eva viděla jen soubory (souborEvaJedna.txt a souborEvaDva.txt)
Honza viděl vše
Poznámka: vidět znamená číst, zapisovat, spouštět.

Správně bych to uměl vyřešit - vytvořit /home/Jana a /home/Eva a nastavit práva na ty adresáře.
Nicméně jde o specifický případ a takto rozdělit nejde. Soubory jsou všechny na jednom místě.

Dívám se na
https://wiki.samba.org/index.php/Setting_up_Samba_as_a_Standalone_Server
https://www.samba.org/samba/docs/current/man-html/smb.conf.5.html#READONLY

Prosím o nasměrování.
Děkuji.
« Poslední změna: 07. 09. 2023, 06:29:22 od Petr Krčmář »


Re:Samba a práva souborů
« Odpověď #1 kdy: 07. 09. 2023, 08:01:43 »
Nastavis to pomocou extended access list(aka access control list) - setfacl, getfacl.
Vlastnik priecinka bude napriklad Honza a subory pre Evu a Janu osobitne osetris pomocou setfacl. Nezabudni na x pravo pre priecinok pre Eva a Jana.
Ak chces docielit aby Eva absolutne nevidela Janine subory, ktore su v rovnakom priecinku tak o takom sposobe neviem akym by sa to dalo.
« Poslední změna: 07. 09. 2023, 08:05:39 od snuff1987 »

jjrsk

  • *****
  • 711
    • Zobrazit profil
Re:Samba a práva souborů
« Odpověď #2 kdy: 07. 09. 2023, 08:35:35 »
A pokud chces aby to i fungovalo, tak to nastavis z tech windows. Protoze kdyz to budes nastavovat z tuxi radky, tak se ti tam sice nastavi stejna prava, ale v jinem poradi, a widle to vyhodnoti jako bug a fungovat to nebude.

Tzn musis se k ty sambe pripoji z win jako nekdo kdo je opravnen nastavovat opravneni. Pricemz nastavovat prava na jednotlivy soubory je to neuchylnejsi co muzes udelat.

RDa

  • *****
  • 2 902
    • Zobrazit profil
    • E-mail
Re:Samba a práva souborů
« Odpověď #3 kdy: 07. 09. 2023, 14:53:42 »
Sel bych na to skrze spravne nastavene user/groups v linuxu, jako:

E je Eu:Eg
J je Ju:Jg
H je Hu:(Hg,Eg,Jg) - skrze group prava dosahne na vse

Pak je treba nastavit v sambe create mask nebo jak se to jmenuje.

Bohuzel viditelnost timto nevyresis - a minimalne top level slozky budou viditelne.



Druha varianta je, aby E a J meli vlastni homedir, nezavisle shares - a oba tyhle shares mel dostupny i H.

Re:Samba a práva souborů
« Odpověď #4 kdy: 08. 09. 2023, 02:34:46 »
Díky za nasměrování. Vyzkouším.
Souhlasím, že je to špatně a nejraději bych to rozhodil každému do složky zvlášť.


Re:Samba a práva souborů
« Odpověď #5 kdy: 08. 09. 2023, 11:47:57 »
O tomhle jsem svého času dost dumal - měl jsem konkrétní zadání a snažil jsem se ho splnit v konfiguraci Samby. Zkusím shrnout pár poznatků.

Samba (CIFS) navenek podporuje windowsí systém práv, a snaží se ho vespod napasovat na Linux/UNIX/POSIX "práva souborů" (rwx) a POSIX ACL. Mapuje práva z Windowsího světa na Linuxový svět a snaží se, jak umí. Pro mne osobně systém práv pod Windows je dost zvěrstvo na pochopení sám o sobě - a pokud pochopíte pokročilé taje na straně Windows, a následně se k témuž pokusíte přimět Sambu, aby to pro Vás zařídila nad linuxovým filesystémem, možná se dost podivíte a není vyloučeno, že nad složitějším požadavkem hodíte flintu do žita :-)

Nicméně, Vaše zadání není nijak složité, a zřejmě se to dá zařídit několika způsoby (něco mi říká, že dvěma až třemi).

(Odstředivá poznámka: zdá se, že pokud mountujete CIFS z Linuxu, mohla by Samba propouštět POSIX ACL nastojato.)

Začal bych třeba globální opšnou security = user - pakliže nejste už o kus dál :-)

Jak už zmiňovali předřečníci, "kdo kam smí" lze řešit neohrabaně holýma rukama na podkladovém linuxovém filesystému na serveru, a ono to nějak funguje (záleží, jak jste šikovný) ale jednak potom musíte nastavovat práva jinudy (SSH), než přistupujete k souborům (CIFS), druhak můžete třeba narazit na skutečnost, že pokud nastavujete práva jednotlivým souborům, tak po server-side přesunu souboru z jednoho "home adresáře" do jiného zůstanou práva původní (soubor si je ponechá) = práva k souboru se nezmění přestěhováním do cizího "home adresáře".
Tento aspekt nebyl požadován ve Vašem zadání, zmiňuji ho k tématu na okraj jako možné úskalí, pokud by někdo toto řešil (třeba já jsem to v zadání měl - šlo o přesuny z pracovního adresáře do "dlouhodobého finálního archivu".)

Souhlasím s jjrsk, že pokud to má fungovat z Windows, je vhodné, nastavit práva přednostně z prostředí Windows skrz CIFS. V tom případě je šance, že si Samba ty práva namapuje tak, aby jí fungovaly (což se občas taky úplně nepovede, historicky v některých verzích Samby. Stalo se mi to, zkoušel jsem to debugovat, hodil jsem flintu do žita.)

Pokud tedy Vaše zadání uchopím nastojato jako dva-tři samostatné shary, rád bych zmínil ještě jednu možnost, jak nastavit práva "per share": vyprdnout se na práva na adresáře a soubory (se všemi divokostmi mapování ACL Windows->POSIX) a zařídit to ultra-hnusně-postaru v konfiguraci sharů v smb.conf :-)

Sám jste nakousl valid users (mimochodem lze také specifikovat invalid users) - tady bych rád upozornil na jednu nuanci: zavináč před jménem znamená ve skutečnosti odkaz na skupinu (z /etc/group, nebo z remote autentikace). Chcete-li specifikovat jednoho konkrétního uživatele, uveďte prostě jeho jméno bez zavináče. Ono Vám to se zavináčem funguje taky, nejspíš na té bázi, že dnešní linuxová distra by default vytvářejí pro uživatele také jeho vlastní skupinu v /etc/group se shodným jménem.

No a mezi uživateli uvedenými ve valid users můžete dále diferencovat pomocí opšen write list a read list . Takže je možné páchat třeba toto (neodpovídá Vašemu zadání):

Kód: [Vybrat]
#======================= Share Definitions =======================

[data-eva]
path = /samba/data-eva
read only = no
guest ok = no
write list = eva honza
read list = jana
valid users = jana eva honza

[data-jana]
path = /samba/data-jana
read only = no
guest ok = no
write list = jana honza
read list = eva
valid users = jana eva honza

Tzn. takto jde nastavit práva pro celý share. Následně může být šumák, pokud šoupete se soubory přímo na serveru, Sambě pod zadkem. Ano je to hnusně hrubé, ale jsou situace, kdy přesně toto chcete :-)

Jinak to Vaše zadání mi spíš velice připomíná standardní home adresáře, kde má každý user svůj píseček, kam mu nikdo jiný z běžných smrtelníků nemá co koukat. Jestli správně koukám, Samba tohle umí dokonce dvěma způsoby: "šablonový share" v smb.conf se jmenuje [homes] nebo [users] . Pro Windows je údajně vhodnější druhý způsob.

Netuším, jak s tímto zkombinovat explicitní valid users , read list a write list - možná to vůbec nejde.
Chcete-li dát konkrétnímu uživateli "superuserská práva", možná bych vyrobil samostatný share na nadřazený adresář, a tamtudy bych superusera pustil dál. Nebo skrz server-side posix ACL, kde bych mu dal osobní výjimku na ten nadřazený adresář (a povolit dědění, ale to už se dostáváme na tenký led, zda se to dědění zdědí při vytváření podadresářů z Windows skrz CIFS apod.) Osobně, vzhledem k tomu že užovkám do dat nelezu, a pravomoci delegovat nepotřebuji, pro vyjímečné situace mi stačí server-side přístup (ssh, mc atd.)
« Poslední změna: 08. 09. 2023, 11:50:34 od František Ryšánek »

Re:Samba a práva souborů
« Odpověď #6 kdy: 09. 09. 2023, 23:33:54 »
To: František Ryšánek

Kód: [Vybrat]
#======================= Share Definitions =======================

[data-eva]
path = /samba/data-eva
read only = no
guest ok = no
write list = eva honza
read list = jana
valid users = jana eva honza

[data-jana]
path = /samba/data-jana
read only = no
guest ok = no
write list = jana honza
read list = eva
valid users = jana eva honza

jo to by šlo akorát bych potřeboval path = /samba/datauzivatele/souborJanaJedna.txt
Potřebuji řešit na úrovní souboru, což je "kámen úrazu"

Bugsa

  • ***
  • 138
    • Zobrazit profil
    • E-mail
Re:Samba a práva souborů
« Odpověď #7 kdy: 10. 09. 2023, 08:45:57 »
Přes nastavení sdílení složky přímo ve Windows dosáhneš kýženého výsledku. Stačí Samba share přístupná pro všechny uživatele a v tom GUI to naklikáš.