GNU/Linux >> Znalost Linux >  >> Linux

Facl Ignoruje oprávnění „x“, ale pouze u souborů?

Když používám setfacl ke správě toho, jaká oprávnění by měly mít podřízené soubory / adresáře, z nějakého důvodu mají soubory všechna oprávnění kromě spouštěcího (“x”) jednoho.

[email protected]:/opt/lampp/htdocs/project$ getfacl .
# file: .
# owner: someuser
# group: webs
# flags: -s-
user::rwx
group::rwx
other::rwx
default:user::rwx
default:group::rwx
default:other::rwx

[email protected]:/opt/lampp/htdocs/project$ touch file
[email protected]:/opt/lampp/htdocs/project$ mkdir dir
[email protected]:/opt/lampp/htdocs/project$ ls -l
total 4
drwxrwsrwx+ 2 someuser webs 4096 paź 31 13:35 dir
-rw-rw-rw-  1 someuser webs    0 paź 31 13:35 file

Myslel jsem, že to má něco společného s umask, ale jeho různé změny nikdy nepřinesou očekávaný výsledek, pokud mi něco neunikne.

Jak to lze opravit?

Přijatá odpověď:

Odpověď Hauke ​​Laging se snaží říci:

    Jakýkoli program, který vytváří soubor nebo adresář, určuje režim (oprávnění)
    , který má daný soubor mít.
    Toto je téměř vždy napevno zakódováno v programu C
    (nebo v jakémkoli jiném použitém jazyce)
    a téměř nikdy není přímo přístupné uživateli.
    Poté umask a výchozí ACL může vypnout bity oprávnění,
    ale nepřidávat je.

    Váš problém je, že zatímco mkdir určuje režim 777 (rwxrwxrwx ),
    téměř všechny programy, které vytvářejí soubory, specifikují 666 (rw-rw-rw- ).
    To zahrnuje touch , shell
    (pro přesměrování I/O; např. program > file ),
    editory (vi , vim , emacs , atd...), dd , split , a tak dále.
    Proto nezískáte oprávnění rwxrwxrwx na prostý soubor
    ihned po vytvoření (kterýmkoli z těchto programů),
    bez ohledu na to, co děláte s ACL;
    musíte vytvořit soubor a poté chmod to.

    Z tohoto pravidla existuje několik výjimek:

    • cp a související programy (např. cpio , tar , atd.)
      které zkopírují nebo jinak znovu vytvoří soubor,
      což (pokusí se) nastaví nový soubor do stejného režimu
      jako původní soubor.
    • Kompilátory, které vytvářejí binární spustitelné soubory, určují režim 777
      (alespoň, pokud je kompilace úspěšná),
      takže uživatel bude skutečně schopen spustit program, který právě zkompiloval.

Linux
  1. Porovnat adresáře, ale ne obsah souborů?

  2. Grep Word v souboru a pak zkopírujte soubor?

  3. Vypsáno jádro, ale soubor jádra není v aktuálním adresáři?

  1. diff pro výstup pouze názvů souborů

  2. Udělte oprávnění ke spuštění adresářům, ale ne souborům

  3. Na zařízení nezbývá místo, ale oddíl je zaplněn pouze z poloviny a jsou k dispozici inody

  1. Přesunout soubor, ale pouze pokud je zavřený

  2. Povolit všem uživatelům vytvářet soubory v adresáři, ale mazat může pouze vlastník

  3. Grep v obrovském souboru protokolu (>14 GB) pouze posledních x GB?