GNU/Linux >> Znalost Linux >  >> Linux

Jak umask ovlivňuje ACL?

Našel jsem tento příklad s názvem:ACL a MASK v linuxu. V tomto článku jsou ukázány následující příklady, které podle mého názoru pomáhají pochopit, jak ACL a umask vzájemně komunikovat.

Pozadí

Když je soubor vytvořen v systému Linux, výchozí oprávnění 0666 se použijí, zatímco při vytvoření adresáře se použijí výchozí oprávnění 0777 jsou použity.

příklad 1 – soubor

Předpokládejme, že nastavíme umask na 077 a dotkneme se souboru. Můžeme použít strace abyste viděli, co se vlastně děje, když to uděláme:

$ umask 077; strace -eopen touch testfile 2>&1 | tail -1; ls -l testfile
open("testfile", O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK, 0666) = 3
-rw-------. 1 root root 0 Sep 4 15:25 testfile

V tomto příkladu vidíme, že systémové volání open() je vytvořeno s oprávněními 0666, ale když umask 077 je poté aplikováno jádrem, jsou odebrána následující oprávnění (---rwxrwx ) a zbývá nám rw------- aka 0600.

příklad - 2 adresář

Stejný koncept lze aplikovat na adresáře, s tím rozdílem, že namísto výchozích oprávnění 0666 jsou to 0777.

$ umask 022; strace -emkdir mkdir testdir; ls -ld testdir
mkdir("testdir", 0777)                  = 0
drwxr-xr-x 2 saml saml 4096 Jul  9 10:55 testdir

Tentokrát používáme mkdir příkaz. mkdir příkaz pak zavolal systémové volání mkdir() . Ve výše uvedeném příkladu vidíme, že mkdir příkaz s názvem mkdir() systémové volání s výchozími oprávněními 0777 (rwxrwxrwx ). Tentokrát s umask 022 následující oprávnění jsou odebrána (----w--w- ), takže nám zbývá 0755 (rwxr-xr-x ) při vytvoření adresářů.

příklad 3 (použití výchozího ACL)

Nyní vytvoříme adresář a předvedeme, co se stane, když se na něj použije výchozí ACL spolu se souborem v něm.

$ mkdir acldir
$ sudo strace -s 128 -fvTttto luv setfacl -m d:u:nginx:rwx,u:nginx:rwx acldir

$ getfacl --all-effective acldir
# file: acldir
# owner: saml
# group: saml
user::rwx
user:nginx:rwx          #effective:rwx
group::r-x          #effective:r-x
mask::rwx
other::r-x
default:user::rwx
default:user:nginx:rwx      #effective:rwx
default:group::r-x      #effective:r-x
default:mask::rwx
default:other::r-x

Nyní vytvoříme soubor aclfile :

$ strace -s 128 -fvTttto luvly touch acldir/aclfile

# view the results of this command in the log file "luvly"
$ less luvly

Nyní získejte oprávnění k nově vytvořenému souboru:

$ getfacl --all-effective acldir/aclfile 
# file: acldir/aclfile
# owner: saml
# group: saml
user::rw-
user:nginx:rwx          #effective:rw-
group::r-x          #effective:r--
mask::rw-
other::r--

Všimněte si masky, mask::rw- . Proč to není mask::rwx stejně jako když byl adresář vytvořen?

Zkontrolujte luvly log, abyste viděli, jaká výchozí oprávnění byla použita pro vytvoření souboru:

$ less luvly |grep open |tail -1
10006 1373382808.176797 open("acldir/aclfile", O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK, 0666) = 3 <0.000060>

Tady je to trochu matoucí. S maskou nastavenou na rwx když byl adresář vytvořen, očekávali byste stejné chování pro vytvoření souboru, ale takto to nefunguje. Je to proto, že jádro volá open() fungovat s výchozími oprávněními 0666 .

Shrnutí

  • Soubory nezískají oprávnění ke spuštění (maskovací nebo účinné). Nezáleží na tom, kterou metodu použijeme:ACL, umask nebo maska ​​&ACL.
  • Adresáře mohou získat oprávnění ke spuštění, ale záleží na tom, jak je nastaveno maskovací pole.
  • Jediný způsob, jak nastavit oprávnění ke spuštění pro soubor, který má oprávnění ACL, je ručně nastavit pomocí chmod .

Odkazy

  • manuálovou stránku acl

z bezpečnostních důvodů operační systém linux neumožňuje automatické vytvoření souboru s prováděcím bitem. To má zabránit kybernetickým útočníkům zapisovat programy do takových souborů a spouštět je, pokud získají přístup k vašemu serveru. Je to jen bezpečnostní opatření. Po vytvoření souborů pomocí nástroje chmod

budete navždy muset ručně nastavit bit spuštění u souborů
Linux
  1. Jak změnit oprávnění k souborům na disku Fat32?

  2. Jak změnit oprávnění k souboru v cPanel File Manager

  3. Přesouvání souboru, když se používá – jak to funguje?

  1. Pochopení toho, jak Umask řídí počáteční oprávnění k souborům / adresářům v Linuxu

  2. Jak se oprávnění k souboru vztahují na symbolické odkazy?

  3. Jak ACL vypočítá efektivní oprávnění k souboru?

  1. Jak správně nastavit oprávnění souboru Laravel

  2. Jak rm funguje? Co dělá rm?

  3. Jak grep \nv souboru