Co jsou základní oprávnění souboru Linux?
Linux, stejně jako UNIX, je systém pro více uživatelů a oprávnění k souborům jsou jedním ze způsobů, jak systém chrání před škodlivými manipulacemi. Jedním ze způsobů, jak získat vstup, když je vám odepřeno oprávnění, je su to root. Mějte na paměti, že kdokoli zná heslo uživatele root, má úplný přístup. Přepnutí na superuživatele však není vždy pohodlné nebo doporučené, protože je snadné dělat chyby a měnit důležité konfigurační soubory jako superuživatel. Všechny soubory a adresáře jsou „vlastněny“ osobou, která je vytvořila. Například ve výpisu:
-rw-rw-r-- 1 john sap 150 Mar 19 08:08 file1.txt
Soubor file1.txt patří nebo je vlastněn Johnem. To znamená, že můžete určit, kdo může soubor číst, zapisovat do souboru nebo (pokud se jedná o aplikaci namísto textového souboru), kdo může soubor spustit. Podobným způsobem můžete také řídit přístup k adresářům.
Čtení, zápis a spouštění jsou tři hlavní nastavení oprávnění. Protože jsou uživatelé při vytváření účtů umístěni do skupiny, můžete také určit, zda mohou určité skupiny číst, zapisovat nebo spouštět soubor. Pomocí výše uvedeného příkladu file1.txt můžete vidět, že je poskytnuto mnoho podrobností. Můžete vidět, kdo může číst (r) a zapisovat do (w) souboru, stejně jako kdo soubor vytvořil (john) a do které skupiny vlastník patří (sap). Pamatujte však, že ve výchozím nastavení je název vaší skupiny stejný jako vaše přihlašovací jméno.
Další informace napravo od skupiny zahrnují velikost souboru, datum a čas vytvoření souboru a název souboru. První sloupec zobrazuje aktuální oprávnění; má deset slotů. První slot představuje typ souboru. Zbývajících devět slotů jsou ve skutečnosti tři sady oprávnění pro tři různé kategorie uživatelů. Například:
-rw-rw-r--
Tyto tři sady jsou vlastníkem souboru, skupinou, do které soubor patří, a „ostatními“, což znamená všichni ostatní uživatelé.
- (rw-) (rw-) (r--) 1 john sap | | | | type owner group others
První položka, která určuje typ souboru, obvykle zobrazuje jednu z následujících možností:
- d — adresář
- – (pomlčka) — běžný soubor (spíše než adresář nebo odkaz)
- l — symbolický odkaz na jiný program nebo soubor jinde v systému
Za první položkou v každé z následujících tří sad uvidíte jednu z následujících:
- r — soubor lze číst
- w — do souboru lze zapisovat
- x — soubor lze spustit (pokud se jedná o program)
Když uvidíte pomlčku u vlastníka, skupiny nebo jiných, znamená to, že konkrétní oprávnění nebylo uděleno. Podívejte se znovu na první sloupec souboru file1.txt a identifikujte jeho oprávnění.
# ls -l file1.txt -rw-rw-r-- 1 john sap 150 Mar 19 08:08 file1.txt
Vlastník souboru (v tomto případě Jan) má oprávnění soubor číst a zapisovat do něj. Skupina, sap, má také oprávnění číst a zapisovat do file1.txt. Není to program, takže vlastník ani skupina nemají oprávnění jej spustit. Všichni ostatní uživatelé mohou soubor pouze číst.
Jak bity oprávnění souboru odpovídají hodnotám poskytnutým chmod?
Bity oprávnění aplikované na objekt systému souborů přímo odpovídají hodnotám, které lze zadat ve 4místném n-tici dodaném obslužnému programu chmod v následujícím příkazu:
chmod abcd [file system object]
Každá hodnota v sadě číslic abcd se skládá ze součtu hodnot 1 2 a 4. Sečtením těchto hodnot pro každou číslici lze vygenerovat hodnotu pro nastavení všech atributů objektu souboru:
- a – Tato číslice řídí nastavení speciálních atributů. hodnota 1 nastavuje bit setuid, hodnota 2 nastavuje bit setgid a hodnota 4 nastavuje bit sticky na objektu
- b , c a d – Tyto číslice řídí oprávnění ke čtení, zápisu a spouštění pro vlastníka souboru, primární skupinu vlastníků souborů a všechny ostatní uživatele. Hodnota 4 povolí oprávnění ke čtení, hodnota 2 povolí oprávnění k zápisu a hodnota 1 povolí oprávnění ke spuštění.
Příklady
Chcete-li nastavit soubor souboru tak, aby byl fixní, čitelný a zapisovatelný vlastníkem, čitelný pro jeho primární skupinu a nepřístupný všem ostatním:
# chmod 4610 filename
Chcete-li udělit všechna oprávnění všem v systému:
# chmod 0777 filename
Další informace o chmod najdete na manuálové stránce chmod.
Jak nastavit oprávnění k souborům a adresářům pomocí chown a chmod?
Použijte chown příkaz ke změně vlastníka a/nebo skupiny souboru. Syntaxe je jednoduchá. Stačí napsat chown, za ním uživatel, který má soubor vlastnit, pak volitelně dvojtečku („:“) a název skupiny. Vezměte prosím na vědomí, že jména uživatelů a/nebo skupin musí v systému existovat. Například:
# chown john:sap file1.txt
# ls -l file1.txt -rw-rw-r-- 1 john sap 150 Mar 19 08:08 file1.txt
vede k tomu, že uživatel john vlastní soubor. Vlastník skupiny souboru je také nastaven na john's group, což je sap.
Ke změně oprávnění použijte příkaz chmod. Tento příklad ukazuje, jak změnit oprávnění na soubor1.txt pomocí příkazu chmod. Pokud jste vlastníkem souboru nebo jste přihlášeni k účtu root, můžete změnit jakákoli oprávnění pro vlastníka, skupinu a další. Právě teď mohou vlastník a skupina číst a zapisovat do souboru. Kdokoli mimo skupinu může soubor pouze číst (r–).
POZOR :Pamatujte, že oprávnění k souborům jsou bezpečnostní funkcí. Kdykoli dovolíte komukoli jinému číst, zapisovat a spouštět soubory, zvyšujete riziko, že se soubory bude manipulováno, pozměněno nebo smazáno. Oprávnění ke čtení a zápisu byste zpravidla měli udělovat pouze těm, kteří je skutečně potřebují.Jak změnit oprávnění k souboru/adresáři pomocí zkrácené notace?
V následujícím příkladu chcete všem povolit zápis do souboru, aby jej mohli číst, zapisovat do něj poznámky a ukládat jej. To znamená, že budete muset změnit sekci „ostatní“ v oprávněních k souboru. Nejprve se podívejte do souboru. Na výzvu shellu byste napsali:
# ls -l file1.txt -rw-rw-r-- 1 john sap 150 Mar 19 08:08 file1.txt
Nyní byste napsali následující:
# chmod o+w file1.txt
Výše uvedený příkaz říká systému, že chcete ostatním udělit oprávnění k zápisu do souboru file1.txt. Chcete-li zkontrolovat výsledky, znovu vypište podrobnosti o souboru. Nyní soubor vypadá takto:
-rw-rw-rw- 1 john sap 150 Mar 19 08:08 file1.txt
Nyní může každý číst a zapisovat do souboru. Chcete-li odebrat oprávnění ke čtení a zápisu ze souboru 1.txt, použijte příkaz chmod k odebrání oprávnění ke čtení i zápisu.
# chmod go-rw file1.txt
Zadáním go-rw , říkáte systému, aby odstranil oprávnění ke čtení a zápisu pro skupinu a pro ostatní ze souboru file1.txt.
Výsledek bude vypadat takto:
-rw------- 1 john sap 150 Mar 19 08:08 file1.txt
Berte tato nastavení jako určitou zkratku, když chcete změnit oprávnění pomocí chmod, protože vše, co opravdu musíte udělat, je zapamatovat si několik symbolů a písmen pomocí příkazu chmod. Zde je seznam toho, co zkrácený text představuje:
Identity
u - the user who owns the file (that is, the owner) g - the group to which the user belongs o - others (not the owner or the owner's group) a - everyone or all (u, g, and o)
Oprávnění
r - read access w — write access x — execute access
Akce
+ — adds the permission - — removes the permission = — makes it the only permission
Zde je několik běžných příkladů nastavení, která lze použít s chmod:
g+w - adds write access for the group o-rwx - removes all permissions for others u+x - allows the file owner to execute the file a+rw - allows everyone to read and write to the file ug+r - allows the owner and group to read the file g=rx - allows only the group to read and execute (not write)
Jak odebrat všechna oprávnění všem uživatelům používajícím zkrácený zápis?
Chcete otestovat své dovednosti v oblasti oprávnění? Odeberte všechna oprávnění z file1.txt — pro všechny.
# chmod a-rwx file1.txt
Nyní se podívejte, zda můžete soubor přečíst příkazem cat file1.txt, který by měl vrátit následující:
cat: file1.txt: Permission denied
Odebráním všech oprávnění, včetně vašich vlastních, byl soubor úspěšně uzamčen. Ale protože soubor patří vám, můžete jeho oprávnění kdykoli změnit zpět pomocí následujícího příkazu:
# chmod u+rw file1.txt
Jak vypsat oprávnění k souborům v osmičkovém formátu?
Chcete-li zobrazit oprávnění souborů v osmičkovém formátu, použijte stat příkaz poskytovaný coreutils balík. Chcete-li získat osmičková oprávnění pro všechny soubory a adresáře v aktuálním pracovním adresáři, spusťte níže uvedený příkaz:
$ stat -c "%a %n" *
Chcete-li získat osmičková oprávnění obsahu v konkrétním adresáři, řekněte /usr/share, spusťte níže uvedený příkaz:
$ stat -c "%a %n" /usr/share/* 755 /usr/share/aclocal 755 /usr/share/alsa 755 /usr/share/anaconda 755 /usr/share/appdata ...
Chcete-li získat osmičková oprávnění pouze pro adresář, řekněte /usr/share, a nikoli obsah v něm, proveďte následující příkaz:
$ stat -c "%a %n" /usr/share/ 755 /usr/share/
Jak obnovit všechna oprávnění k souborům systému na výchozí hodnoty v případě, že se všechna oprávnění k souborům změnila na 777?
Omylem jste provedli následující příkaz.
# chmod -R 777 /
Existuje nějaký způsob, jak se vrátit zpět k původním oprávněním?
Provedením následujícího příkazu se vrátíte zpět k původním oprávněním.
# rpm -a --setperms
To ukáže některé chyby, ale je možné je zanedbat.
Jak kopírovat soubory se specifickým oprávněním přes síť?
Chcete-li dosáhnout kopírování souborů se specifickými oprávněními, lze použít nástroj rsync:
# rsync --chmod=u+rwx,g+rx,o+rx testfile [email protected]:/tmp/
Tím se zkopíruje testovací soubor do domovského adresáře uživatele a oprávnění ke zkopírovanému souboru budou 755.