Como dar propriedade ao root sem ser root? (necessário para o Apache)

2

Eu tenho um script PHP que cria uma pasta no meu servidor. Esta pasta deve ser acessada via Apache, e os usuários podem visualizá-la online.

Agora, se eu criar esta pasta sendo root, tudo funciona como deveria, posso ver o html / php quando estiver no site.

Se eu criar esta pasta enquanto estiver sendo o usuário Apache (ou executando meu script), posso criar a pasta, colocar todos os arquivos dentro, mas quando chegar na minha página, ele exibe:

You don't have permission to access / on this server.

Agora eu não sei muito sobre o Apache, mas para mim a solução mais fácil é dar a propriedade da minha pasta para root. Eu tento digitar:

chown root:root /blabla/myfolder

e escreve:

chown: changing ownership of 'myfolder/': Operation not permitted

Por que isso?

Obrigado

    
por xtrimsky 05.12.2011 / 05:57

2 respostas

1

Você não precisa alterar o proprietário e o grupo para raiz na pasta, nem você pode. Você pode, no entanto, conceder permissões de leitura no grupo e em outras com:

chmod go+r foldername

Exemplo:

yvaine:~ rilindo$ ls -la | grep test
drw-------    2 rilindo  staff        68 Dec  5 01:10 test
yvaine:~ rilindo$ chmod go+r test
yvaine:~ rilindo$ ls -la | grep test
drw-r--r--    2 rilindo  staff        68 Dec  5 01:10 test

No entanto, se for uma pasta vazia, é possível que a navegação no diretório esteja desabilitada no Apache por padrão. Nesse caso, você pode adicionar ou modificar algum lugar na sua sub-rotina:

Options +Indexes

Observe que geralmente é uma prática recomendada desativar a pesquisa no diretório, a menos que haja uma boa razão para isso.

    
por 05.12.2011 / 07:11
3

Outros parecem estar respondendo à sua pergunta implícita de "como eu corrijo isso?", e fazendo um bom trabalho, então eu pensei em responder sua pergunta sobre "por que isso acontece?".

A rejeição de um arquivo por meio do chown, ou seja, chowning para outro usuário, é proibida para todos os usuários não-root por boas razões. Considere a seguinte sequência:

cp /bin/bash ~/naughty

Agora você tem uma cópia do bash no seu diretório inicial. Você é dono disso. Não é grande coisa.

chmod 4755 ~/naughty

Agora você tem uma cópia do bash que pode ser executada por qualquer pessoa, e qualquer um que a execute se tornará você, porque você definiu o bit SUID no binário e você possui o arquivo. Não tão bom.

chown root:root ~/naughty

Parabéns, você acabou de enraizar seu sistema; você tem uma cópia do shell que é SUID para root e pode ser executado por qualquer pessoa.

Existem outras razões pelas quais o poder de rejeitar um arquivo é ruim, por exemplo, ele mexe com as cotas de disco se qualquer um pode criar um arquivo grande e depois entregá-lo a outro usuário. Mas o motivo principal é o acima, e a única maneira de tapar esse buraco (sem se livrar do SUID, que é uma idéia adorável, mas difícil de fazer) é dizer que ninguém que não seja root pode fornecer um arquivo para outro usuário. .

    
por 05.12.2011 / 08:14