Permissões de arquivo padrão para o usuário do php www-data

8

Eu tenho um php instalado na minha máquina Ubuntu. A raiz da web é /var/www

Eu configurei as permissões para esta pasta da seguinte forma:

  

sudo chown -R ftpuser: www-data / var / www

ftpuser é o usuário que eu configurei para que eu possa fazer o ftp para / var / www a partir de outra máquina na rede. www-data é o usuário que o php usa. Eu verifiquei novamente usando whoami do php.

Sempre que eu faço o upload de um novo arquivo para a máquina, o grupo não tem permissões para o arquivo. Então, quando eu tento acessá-lo no meu navegador via machine-name/new-file.php me disseram permissão negada e eu tenho que ir e chmod o novo arquivo.

Eu estou querendo saber se existe uma maneira que eu possa usar como padrão o usuário / grupo www-data para ter permissões de acesso a novos arquivos, então eu não tenho que manter o chmod a cada novo arquivo?

    
por JD Isaacks 17.01.2011 / 17:27

3 respostas

6

Você pode usar o ACL. Para configurar o ACL para o Ubuntu 10.10, primeiro monte os sistemas de arquivos com a opção acl em / etc / fstab.

sudo vim /etc/fstab

UUID = padrões xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx / ext4, acl 0 1

sudo mount -o remount,acl /

Em seguida, crie um grupo ao qual um usuário possa pertencer para essa finalidade.

sudo groupadd developers
sudo usermod -a -G developers $username

O usuário precisa sair e entrar novamente para se tornar um membro do grupo de desenvolvedores.

Claro, não faça isso se você tiver conteúdo no diretório / var / www que você deseja, mas apenas para ilustrar a configuração para começar:

sudo rm -rf /var/www
sudo mkdir -p /var/www/public
sudo chown -R root.developers /var/www/public
sudo chmod 0775 /var/www/public
sudo chmod g+s /var/www/public
sudo setfacl -d -m u::rwx,g::rwx,o::r-x /var/www/public

Em seguida, substitua as referências a "/ var / www" por "/ var / www / public" em um arquivo de configuração e recarregue.

sudo vim /etc/apache2/sites-enabled/000-default
sudo /etc/init.d/apache2 reload

Se quiséssemos restringir a exclusão e renomeação de todos, exceto do usuário que criou o arquivo:

sudo chmod +t /var/www/public

Dessa forma, se quisermos criar diretórios para estruturas que existam fora do A raiz do documento do Apache ou talvez criar diretórios graváveis pelo servidor, ainda é fácil.

Diretório de registros graváveis do Apache:

sudo mkdir /var/www/logs
sudo chgrp www-data /var/www/logs
sudo chmod 0770 /var/www/logs

Diretório da biblioteca legível por Apache:

sudo mkdir /var/www/lib
sudo chgrp www-data /var/www/lib
sudo chmod 0750 /var/www/lib
    
por user8290 17.01.2011 / 18:37
4

Tenho certeza de que você já classificou isso, então isso é para qualquer pessoa com um pedido semelhante

execute o comando "change ownership" na sua pasta webroot:

sudo chown manny -R www

Isso fará com que você seja o proprietário e substitua "manny" pelo seu nome de usuário, permitindo que você escreva / leia dentro da pasta www

    
por Manny 20.04.2014 / 22:41
1

Se o seu servidor não conseguir ler os arquivos, é muito provável que as permissões de new-file.php sejam algo como 600 (leia e escreva para o proprietário). Procure por um umask configuração em seu aplicativo FTP e verifique se é algo como 007.

Se o seu aplicativo da Web precisar chmodar os arquivos (ou outras operações que só podem ser feitas pelo proprietário do arquivo), você precisará de uma outra abordagem. Se você estiver usando o Apache, considere usar o itk MPM . Com esse módulo, você pode fazer com que o Apache execute / abra os arquivos usando o mesmo usuário que "ftpuser". Se você precisar de mais informações sobre este assunto, adicione um comentário.

    
por Lekensteyn 17.01.2011 / 18:06