ACL versus permissões de arquivo padrão - que são usadas ao acessar o arquivo?

4

ACLs e permissões de arquivo padrão parecem estar sincronizadas:

$ getfacl test.cpp
# file: test.cpp
# owner: scdmb
# group: scdmb
user::rw-
group::rw-
other::r--

$ ls -l test.cpp
-rw-rw-r-- 2 scdmb scdmb 173 Jan  1  1970 test.cpp

No entanto, como eu li, existem dois locais no inode para salvar as permissões de arquivo (campo i_mode) e esses atributos de arquivo estendidos onde as ACLs são colocadas. Então, quando eu acesso o arquivo, quais permissões de arquivo são usadas - padrão ou ACLs? Ou talvez seja a mesma coisa apresentada de maneiras diferentes?

    
por scdmb 24.04.2014 / 22:00

1 resposta

3

Da getfacl página de manual :

The output format of getfacl is as follows:

           1:  # file: somedir/
           2:  # owner: lisa
           3:  # group: staff
           4:  user::rwx
           5:  user:joe:rwx               #effective:r-x
           6:  group::rwx                 #effective:r-x
           7:  group:cool:r-x
           8:  mask:r-x
           9:  other:r-x
          10:  default:user::rwx
          11:  default:user:joe:rwx       #effective:r-x
          12:  default:group::r-x
          13:  default:mask:r-x
          14:  default:other:---

Lines 4, 6 and 9 correspond to the user, group and other fields of the file mode permission bits. These three are called the base ACL entries. Lines 5 and 7 are named user and named group entries. Line 8 is the effective rights mask. This entry limits the effective rights granted to all groups and to named users. (The file owner and others permis- sions are not affected by the effective rights mask; all other entries are.) Lines 10--14 display the default ACL associated with this direc- tory. Directories may have a default ACL. Regular files never have a default ACL.

O fato de a sua mostrar linhas apenas com :: e não <user|group|other>:<name>:<perms> indica que você não tem ACLs estendidas. Para este arquivo em particular, você está apenas usando getfacl como uma maneira sofisticada de obter as mesmas informações que mostraria em ls -la (o usuário / grupo / outros bits de permissão também conhecidos como "base ACL").

Quanto a quais permissões são usadas : a resposta curta é que depende da ordem das ACLs. Veja aqui e aqui para detalhes. Em geral, se uma negação vem em primeiro lugar na lista ACL, é impossível, mais tarde, dar a permissão de volta com uma permissão explícita. Negar sempre tem precedência.

Há um artigo ainda mais longo com mais referências aqui no Unix.SE.

    
por 24.04.2014 / 22:05