Portál AbcLinuxu, 12. května 2025 06:08

Dotaz: Problém s nastavením oprávnění na sdíleném adresáři

2.9.2008 13:12 Styryx | skóre: 3
Problém s nastavením oprávnění na sdíleném adresáři
Přečteno: 463×
Odpovědět | Admin
Chtěl bych na ext3 vytvořit sdílenou složku, ale nevím, jak nastavit oprávnění, aby to fungovalo tak, jak bych já chtěl:

1. Všichni uživatelé skupiny "users" můžou přidávat nový adresáře i soubory (v jakýkoliv úrovni).

2. Soubor může odstranit/měnit jenom konkrétní uživatel, kdo ho tam dal (nebo root, samozřejmě).

Takže věci který umím: - vyrobím ten sdílenej adresář, nastavím mu skupinu "users" a nastavím mu "Nastavit GID při spuštění" - tím zajistím, že všechny nově vytvořený položky budou mít jako skupinu "users" - oprávnění zápisu pro skupinu defaultně není nastavený (záleží na umask, která je 022), to můžu změnit buď změnou umask pro celej systém (což se mi moc vhodný nezdá) anebo líp pomocí "setfacl -m d:g:users:rw", takže mi funguje, že uživatelé můžou ve kterýkoliv podúrovni vyrobit adresář.

Ale nevím, jak zajistit, aby soubor mohl smazat pouze uživatel, kterej ho vytvořil - před chvílí jsem našel "Sticky bit", kterej jsem doteď nevěděl, co znamená, teď už vím, že pokud se nastaví na adresáři, tak soubor může smazat jenom uživatel, kterej ho vytvořil. Jenže problém je, že jak jsem teď zkusmo zjistil, se tenhle bit nedědí, a já bych potřeboval nějak zajistit, aby se dědil, tj. aby se automaticky nastavil na všech nově vytvořených podadresářích (tj. aby fungovalo omezení mazání nejenom v kořenovým adresáři, ale i ve všech nově vytvořených podadresářích). Jde to nějak udělat?

Další věc je to, že Sticky bit vyřeší jenom část problému, ještě bych potřeboval, aby soubory nešly měnit jiným uživatelem (tj. nově vytvořený adresáře aby měly pro skupinu rwx, a nově vytvořený soubory měly pro skupinu jenom r-(x)) - aby bylo odlišná maska pro adresáře a pro soubory. Jde to vůbec nějak udělat? (na vfat to pokud vím jde pomocí dmask a fmask, ale jde to nějak pro ext3? - protože tam se mi zdá, že nelze zajistit, aby maska rozlišovala adresáře a soubory)
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

2.9.2008 16:54 Styryx | skóre: 3
Rozbalit Rozbalit vše Re: Problém s nastavením oprávnění na sdíleném adresáři
Odpovědět | | Sbalit | Link | Blokovat | Admin
Tak ještě jsem hledal, jak to řešit nejlíp, chtěl jsem se vyhnout skriptům v cron nebo inotify, jak jsem našel v jiným vlákně ...

Nicméně pak jsem je i taky zkoušel, problém s těma řešeníma je v tom, že v současný situaci mám v tý sdílený složce už dost souborů, zkrátka jak rozjezd "inotifywait -r -e create xxx" tak i spuštění "chmod -R g+w xxx" trvá docela dlouho (inotify cca 3 minuty, chmod cca 7 minut), což se jeví jako nepoužitelný (pokud bych použil inotifywait, tak po zaznamenání změny a novým spuštění by všechny nový položky přidaný během dalších těch 3 min nebyly zachycený; při chmod spouštěným cronem každých 5 min by disk jel v nepřetržitě posléze i v několika současných vláknech).

Zatím jsem přišel na jednu možnost jak to řešit, a to použitím příkazu

find SdilenaSlozka -type d -exec chmod g+w {} \;

kterej, pokud se nepletu, by měl všem adresářům nastavit oprávnění write pro skupinu, ale důležitý hlavně je, že prochází jenom adresáře a ne soubory, takže je to ještě relativně rozumně rychlý (oproti 7 min. u chmod -R to trvá jenom nějakých 5 sekund) - a dělá to v podstatě přesně to, co potřebuju, tj. nastaví g+w jenom u adresářů, ale ne u souborů (takže uživatel nemůže měnit cizí soubory). Aby je nemoh ještě mazat a přejmenovávat (operace na adresáři), bude nejspíš ještě potřeba nastavit sticky bit (+t, nebo v jednom příkazu tam dát chmod 3775). A tohle spouštět cronem.

Úplně nejlepší by bylo, kdyby měl inotifywait nějakej parametr, aby sledoval jenom adresáře a ne soubory, pak by taky moh naběhnout rychlejc.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.