Chown / permissões do Unix para www-data e usuário

2

Eu tenho um usuário, 'joe', para quem eu gostaria de conceder permissões (para /var/www/html/ ) para que eu possa usar ftp (com vsftpd)

Então, eu corro este comando:

sudo chown -R joe /var/www/html/

E isso vai bem, agora eu posso ler, escrever, apagar arquivos etc através do ftp.
No entanto, agora qualquer página no meu site retorna um erro 403 Proibido.

Isto é porque eu dei 'joe' propriedade desses diretórios, então para tornar meu site acessível novamente, eu corro:

sudo chown -R www-data /var/www/html/

Mas isso significa que 'joe' não pode acessar esses arquivos, com ftp.

Existe alguma maneira que eu possa ter a capacidade de ler e escrever arquivos, enquanto ao mesmo tempo permitir o acesso a www-data aos arquivos para que minhas páginas não sejam proibidas?

Eu tentei criar um grupo:

sudo addgroup users
sudo add user joe users
sudo add user www-data users

Mas eu não sei como chover para um grupo inteiro, só sei por exemplo:

sudo chown -R joe:users /var/www/html

No entanto, isso apresenta o mesmo problema.

Estou usando o Ubuntu 14.04 x64 com o apache2, e joe tem privilégios de root ( ALL=(ALL:ALL) ALL )

    
por joe_young 15.08.2015 / 22:32

2 respostas

2

Se você observar as permissões em diretórios e arquivos, verá a conta que os possui e também o grupo ao qual eles pertencem. Por exemplo:

$ ls -ld /var/www/html
drwxr-xr-x. 2 joe joe 23 Mar 12 11:08 /var/www/html

No exemplo acima, a conta joe é dona do diretório e pertence ao grupo joe; o grupo é o segundo "joe" na linha. O grupo pode conter apenas uma conta, joe, mas eu poderia adicionar outras contas ao grupo. Eu poderia criar um grupo chamado users e associar o diretório a esse grupo como você fez. Você está usando o comando chown , mas também há um comando chgrp para alterar o grupo. Você pode usar esse comando para atribuir arquivos e diretórios a um grupo ou também pode alterar o grupo como fez com chown user:group . Por exemplo, você pode usar o comando abaixo se houver um grupo de dados www no sistema (você pode ver os grupos e seus membros emitindo o comando cat /etc/group ):

sudo chgrp www-data /var/www/html

Então, posso ver algo como o seguinte:

# ls -ld /var/www/html
drwxr-xr-x. 2 joe www-data 23 Mar 12 11:08 /var/www/html

Ou, se preferir, você pode fazer com que o grupo para o diretório seja o novo grupo users que você criou como fez com o comando chown -R joe:users .

Quando emiti o comando ls -ld para examinar as permissões no diretório, vi o seguinte:

drwxr-xr-x

O "d" me diz que é um diretório. Os próximos 3 caracteres me dizem que as permissões para o proprietário são de leitura, gravação e execução. Os próximos 3 caracteres revelam as permissões para o grupo, que no exemplo acima são lidos e executados. Eu poderia conceder ao grupo permissão de gravação com o comando abaixo:

chmod g+w /var/www/html

Você também pode alterar as permissões recursivamente no diretório acima usando o -R ou --recursive opção.

Se você ajustar as permissões de grupo de forma adequada, pode conseguir o que você deseja fazer, de modo que se o Apache estiver rodando como www-data e www-data tiver as permissões de grupo apropriadas no diretório e os arquivos e subdiretórios dentro dele, o Apache será capaz de ler e gravar arquivos como neded . Parece que você já definiu o proprietário e o grupo para uma configuração que funcionará, portanto, é provável que você só precise definir as permissões para o grupo users com o comando chmod .

    
por 15.08.2015 / 23:33
2

Eu acho que você pode tentar:

setfacl -R -m u:joe:rw /var/www/html

Você pode testar o resultado fazendo:

getfacl /var/www/html

Você deve ver algo semelhante a:

# file: var/www/html
# owner: root
# group: root
user::rwx
user:joe:rw-
group::r-x
mask::rwx
other::r-x
    
por 17.08.2015 / 14:41