Por que essas ACLs não estão funcionando?

0

Estou tentando definir ACLs para que o usuário e o grupo de novos arquivos e diretórios criados no diretório do servidor da Web sejam de propriedade do usuário www-data. Eu tenho exatamente a mesma ACL em outro servidor e eles funcionam bem.

andrew@sona:/srv/www$ getfacl .
# file: .
# owner: www-data
# group: www-data
user::rwx
group::rwx
group:www-data:rwx
mask::rwx
other::r-x
default:user::rwx
default:group::rwx
default:group:www-data:rwx
default:mask::rwx
default:other::r-x

andrew@sona:/srv/www$ mount | grep acl
/dev/xvda on / type ext3 (rw,noatime,errors=remount-ro,acl)
andrew@sona:/srv/www$ touch test.txt
andrew@sona:/srv/www$ ll
total 12
drwxrwxr-x+ 3 www-data www-data 4096 Sep  3 17:14 ./
drwxr-xr-x+ 3 root     root     4096 Sep  1 19:36 ../
-rw-rw-r--+ 1 andrew   andrew      0 Sep  3 17:14 test.txt

O servidor é o Ubuntu 12.04 LTS

Distributor ID: Ubuntu
Description:    Ubuntu 12.04.3 LTS
Release:    12.04
Codename:   precise
    
por Prydie 03.09.2013 / 19:18

1 resposta

3

As listas de controle de acesso (ACL) fornecem um mecanismo refinado para controlar o acesso a um arquivo / diretório. Eles não mudam nem definem a propriedade.

O valor default define qual ACL um novo arquivo criado dentro desse diretório deve "herdar". Estes parecem funcionar para /srv/www , porque o seu novo arquivo criado test.txt obtém alguma ACL (observe o + na listagem de diretório).

O essencial para atingir seu objetivo é dado na resposta do SF linkada por @Darius:

chmod ug+s /srv/www

que define o set-user-ID e set-group-ID bit. O manual de informações do coreutils explica este mecanismo:

27.5 Directories and the Set-User-ID and Set-Group-ID Bits

On most systems, if a directory's set-group-ID bit is set, newly created subfiles inherit the same group as the directory, and newly created subdirectories inherit the set-group-ID bit of the parent directory. On a few systems, a directory's set-user-ID bit has a similar effect on the ownership of new subfiles and the set-user-ID bits of new subdirectories. (...)

Por favor, note a restrição "em alguns sistemas" para o bit set-user-ID . De fato, nem no meu sistema Debian nem no meu openSuSE a herança do dono funciona, apenas o grupo é propagado. De acordo com Wikipedia , isso é verdadeiro para todos sistemas linux:

The setuid permission set on a directory is ignored on UNIX and Linux systems.[4] FreeBSD can be configured to interpret it analogously to setgid, namely, to force all files and sub-directories to be owned by the top directory owner.[5]

    
por 15.09.2013 / 20:17