GNU/Linux >> Znalost Linux >  >> Linux

Nedokážete vysvětlit chování ACL?

Takže toto je situace:
dostal server pro webové vývojáře. Vývojářů je mnoho. Všichni developers + PHP + Apache patří do www skupina. Existuje adresář pro vývoj – development .

Cílem je, aby byl každý soubor ve development adresář má 755 oprávnění a kdykoli jakýkoli vývojář vytvoří, upraví soubor ve development adresář, soubory budou mít stále 755 .

Přečetl jsem si tedy řadu acl tutoriály, návody a návody, ale stále nemohu dosáhnout požadovaného výsledku.

  1. můj disk je připojen pomocí acl
  2. Mám chown -R www:www development
  3. přidali chmod g+s development
  4. Nastavil jsem číslo acl pravidla pro development adresář a dostal jsem toto:

    $ getfacl development
    # file: development
    # owner: www
    # group: www
    # flags: -s-
    user::rwx
    user:www:rwx
    group::rwx
    group:www:rwx
    mask::rwx
    other::r-x
    default:user::rwx
    default:user:www:rwx
    default:group::rwx
    default:group:www:rwx
    default:mask::rwx
    default:other::r-x
    
    p.s. I know its messy, was doing a number of tests
    
  5. Podle mé představy o ACL , pokud by adresář měl taková pravidla, můj úkol by měl být splněn, ale když se pokusím vytvořit soubor ve development dir, dostanu:

    -rw-rw-r--+ 1 www     www      0 Nov 21 09:14 newfile
    

Nerozumím tomu, proč vytváří rw- místo rwx .

Je to pravděpodobně něco jednoduchého, co mi uniklo, nebo nějaký obecný koncept, kterému nerozumím.

Přijatá odpověď:

Vaše výchozí seznamy ACL nahrazují umask, který neurčuje výchozí oprávnění, ale maximální oprávnění k vytváření nových souborů. V tomto případě rwxrwxr-x .

Poté vaše aplikace zavolá open nebo creat s oprávněními, která chce. Téměř všechny aplikace budou vyžadovat rw-rw-rw- pro soubory.

Můžete to vidět spuštěním strace , např.

$ strace -e trace=file touch newfile
...
open("newfile", O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK, 0666) = 3

(0666 je stejný jako rw-rw-rw- .)

Tato dvě oprávnění jsou kombinována pomocí bitového součinu AND a poskytují rw-rw-r-- .

  rwxrwxr-x     # default ACL
  rw-rw-rw-     # permission requested (e.g. by touch, vim, etc.)
& _________
  rw-rw-r--     # effective permissions

Další vysvětlení najdete v POSIX Access Control Lists — „Výchozí příklad ACL“.

Skutečná otázka tedy zní:proč potřebujete, aby byly soubory spustitelné?


Linux
  1. Najít soubory, které uživatel nemůže číst?

  2. Může být skript spustitelný, ale nečitelný?

  3. Operace není podporována pomocí Setfacl?

  1. Nelze nainstalovat Wine na Ubuntu Studio 19.10?

  2. setfacl:příkaz nenalezen

  3. Jak mohu zkontrolovat, zda soubor existuje, a provést příkaz, pokud ne?

  1. Může read(2) vrátit nulu, když není na EOF?

  2. Jak mohu zkontrolovat, zda je PostgreSQL nainstalován nebo ne prostřednictvím skriptu Linux?

  3. Jak v Linuxu nastavím soubor trvale jen pro čtení, aby jej ani root nemohl upravovat?