it-swarm-eu.dev

Existuje způsob, jak zabránit vymazání určitých souborů z uživatelského adresáře?

Řekněme, že uživatel má Directory1 a obsahuje File1 File2 CantBeDeletedFile Jak to udělat, aby uživatel nikdy nesmíte smazat CantBeDeletedFile ?

Kdybych změnil vlastnictví Directory1 a odstranil oprávnění pro zápis, uživatelé by nemohli smazat žádný soubor. Také by nemohli přidávat nové soubory atd.

Chci jen nastavit některé soubory, které by nikdy nebyly smazány.

Podrobnější popis.

Vytvářím uživatelské profily. Vytvářím soubory pro spouštění aplikací v jejich Desktop. Chci tedy nastavit některé soubory spouštěče (.desktop) a přimět je, aby je uživatel mohl spustit pouze a nemohli přejmenovat ani odstranit, prostě spustit.

Aktuálně, pokud uživatel vlastní adresář, který obsahuje libovolný soubor. Může smazat.

Pokud neexistuje obecný způsob pro všechny * nix, je to Linux a ext4 FS.

44
bakytn

(Nelíbí se mi, že narušuji domov uživatelů, myslím, že by jim mělo být dovoleno dělat, co s nimi mají doma ... ale stejně ...)

To by mělo fungovat na Linuxu (alespoň). Předpokládám, že user je již členem skupiny user. Řešením je změna vlastnictví Directory1 a nastavte lepkavý bit do adresáře:

chown root:user Directory1
chmod 1775 Directory1

Pak použijte:

chown root Directory1/CantBeDeletedFile

Nyní, user nebude moci tento soubor odstranit kvůli lepkavému kousku¹. user je stále schopen přidat/odebrat své vlastní soubory v Directory1. Ale všimněte si, že nebudou moci smazat Directory1 protože to nebude nikdy vyprázdněno.

-
1. Když je lepicí bit povolen v adresáři, uživatelé (jiní než vlastník) mohou odstranit pouze své vlastní soubory z adresáře. Používá se u adresářů jako /tmp jehož oprávnění jsou 1777 = rwxrwxrwt.

42

Udělejte soubor neměnným atributem i.

chattr +i file.desktop

viz man chattr Pro více informací.

64
Keith

Nemyslím si, že existuje způsob, jak zabránit smazání jednotlivého souboru s oprávněními pro unixové soubory, ale mohu myslet na řešení: napsat démona, který jej nahradí, když bude odstraněn. inotify-tools je pro tuto věc ideální, pokud jste v systému Linux.

Odstraněnou položku můžete nahradit několika způsoby: zkopírujte novou na místě nebo uložte skutečný soubor na bezpečném místě a zkopírujte odkaz do adresáře uživatele. Pro odkaz můžete použít symbolický odkaz nebo pevný odkaz. Začal bych se symbolickým odkazem, ale některé (velmi málo) programy nereagují se správným odkazem. Pokud zjistíte, že uživatel narazí na program jako je tento, použijte místo toho pevný odkaz.

2
Shawn J. Goff

Jednoduchý

chmod -i filename

bude tento soubor „chránit“ před vymazáním.

rm filename
rm: remove write-protected regular file 'filename'?

Stále ji můžete smazat, ale alespoň si musíte být jisti, co děláte.

0
fiatjaf