Tutoriel Linux

Vytvořit adresář v Linuxu s správnými oprávněními

Débutant4 min de lecture

Adresář vytvořený na špatném místě nebo s příliš otevřenými právy často způsobuje problémy později. Příkaz mkdir stačí k tomu, aby začal, ale nenahradí kontrolu vlastníka, skupiny a oprávnění.

Pro osobní adresář ho vytvořte ve svém uživatelském adresáři. Pro sdílený adresář nebo adresář používaný službou nejprve identifikujte účet, který do něj musí zapisovat. Příkaz chmod 777 někdy zakrývá skutečný problém s vlastníkem a umožňuje všem místním účtům upravovat obsah.

Vytvořte adresář na správném místě

Ze současného adresáře vytvoří následující příkaz jediný adresář:

mkdir zálohy

S absolutní cestou přesně víte, kde bude adresář vytvořen. Přidejte -p, pokud mohou chybět nadřazené adresáře:

mkdir -p ~/projekty/web-test/logy

Bez -p se mkdir zastaví, pokud ~/projekty/web-test neexistuje. Tato volba také zabraňuje chybě, pokud poslední adresář již existuje. Nepřetváří chybnou cestu na správnou: zkontrolujte ji pomocí pwd, než spustíte příkaz.

Chcete-li připravit prostor, který má patřit vašemu účtu, zůstaňte ve svém osobním adresáři. Vyhnete se tak sudo, tedy adresáři vytvořenému pod uživatelským účtem root, který váš uživatel již nebude moci vyplnit:

mkdir -p ~/archivy/2026
stat -c '%A %U:%G %n' ~/archivy ~/archivy/2026

Vyberte vhodná práva podle použití

Adresář vyžaduje právo x pro překročení. U adresáře r umožňuje vypsat názvy a w umožňuje přidávat, přejmenovávat nebo odstraňovat položky. Oprávnění, která se skutečně uplatňují, také závisí na vašem umask.

Pro soukromý adresář ho vytvořte s explicitním režimem:

mkdir -m 700 ~/soukromé-archivy
stat -c '%A %a %U:%G %n' ~/soukromé-archivy

Režim 700 ponechává přístup vlastníkovi a zavírá adresář ostatním uživatelům. Pro adresář, do kterého má pracovní skupina číst a zapisovat, zvolte spíše známou skupinu a režim 2770:

sudo install -d -o alice -g web-team -m 2770 /srv/web-team
stat -c '%A %a %U:%G %n' /srv/web-team

Číslo 2 na začátku aktivuje bit setgid adresáře. Nové soubory a podadresáře pak dědí skupinu web-team. Toto řešení zabraňuje otevření zápisu pro všechny účty na serveru. Zkontrolujte, že očekávaní členové skutečně jsou v této skupině pomocí id uživatelské_jméno.

mkdir -m 777 vytvoří adresář, který může měnit kdokoliv, a pak může umask ještě snížit tento režim. Nepoužívejte ho k nápravě Permission denied. Raději si přečtěte plnou cestu, jejího vlastníka a práva každého nadřazeného adresáře:

namei -l /srv/web-team
ls -ld /srv /srv/web-team
id

Ověřte před tím, než adresář svěříte službě

Služba spuštěná pod www-data, postgres nebo dedikovaným účtem nemusí nutně vidět stejná práva jako vaše relace. Poraďte se s jejím uživatelským účtem, než cokoli změníte. Pro systemd vám tento příkaz poskytne účty nastavené jednotkou:

systemctl show moje-sluzba 
  -p User -p Group -p DynamicUser

Poté vytvořte adresář s očekávaným vlastníkem a otestujte soubor z tohoto účtu. Na testovací stanici:

sudo install -d -o www-data -g www-data -m 750 /var/lib/moje-sluzba
sudo -u www-data touch /var/lib/moje-sluzba/test-pisani
ls -l /var/lib/moje-sluzba/test-pisani
sudo rm /var/lib/moje-sluzba/test-pisani

Tato kontrola vám říká, zda účet služby skutečně může zapisovat. Pokud selže, nepřidávejte náhodně práva. Nejprve zkontrolujte vlastníka, skupinu, případné ACL pomocí getfacl a práva nadřazených adresářů.

  • Používejte mkdir -p pro cestu, jejíž rodiče mohou chybět.
  • Používejte stat nebo ls -ld těsně po vytvoření.
  • Pro sdílený adresář nastavte vlastníka, skupinu a režim před spuštěním služby.
  • Rezervujte chmod pro cílenou opravu, poté co jste identifikovali blokovaný účet.

Průvodce o setfacl pod Linuxem pomůže, když jeden uživatel potřebuje dodatečný přístup. Pokud musíte měnit oprávnění ve stávající struktuře, použijte raději proceduru věnovanou chmod rekurzivně: změna všech souborů a adresářů se stejným režimem snadno poruší práva vykonávání adresářů.

Manuálová stránka mkdir(1) podrobně popisuje možnosti a mkdir(2) vysvětluje účinek umask a dědění skupiny. Mějte tyto dva body na paměti před vytvořením adresáře používaného službou.

Administrátor Linux ukládající modrý adresář do serverového racku s otevřeným zámkem
Vlastník, skupina a oprávnění adresáře musí odpovídat jeho použití.
sudo apt update && sudo apt upgrade