Eu não tinha certeza se esta pergunta pertence aqui ou no SO . Posso movê-lo para lá, se necessário.
Em qualquer configuração decente do Apache, o Apache será executado como seu próprio ID; www-data
por exemplo. E esse ID não terá permissões para listar e arquivos CRUD como outras contas do sistema operacional. Isso é por design de segurança.
Eu quero poder, de alguma forma, ter uma lista do Apache ou arquivos CRUD como outra conta do sistema operacional. Por exemplo, listar arquivos no diretório inicial da conta ou criar um novo arquivo de texto no diretório inicial da conta.
Eu sei que uma solução é usar permissões de grupo de arquivo/pasta, mas não posso fazer isso porque não posso mexer com propriedade ou permissões de arquivo/pasta.
Eu olhei para suEXEC , suPHP e php-fpm , mas nenhum deles funcionará porque eles executarão scripts como o proprietário do script. No meu caso, estou executando comandos como cp
ou mv
como um número arbitrário de contas do sistema operacional. A única maneira de usar essas ferramentas é ter um script para cada conta do sistema operacional. Ou ter um script de propriedade, root
mas isso não parece seguro.
Então eu comecei a pensar sudo
. Eu poderia dar www-data
sudo
privilégios como as contas do sistema operacional.
Exemplo de uma entrada no sudoers
arquivo:
www-data ALL = (osAccount1) NOPASSWD: /bin/ls, /bin/mv
www-data ALL = (osAccount2) NOPASSWD: /bin/ls, /bin/mv
Mas isso só cheira a risco. Eu não consigo identificar como ou por que – é apenas uma sensação feia.
Existe alguma maneira de fazer o que eu quero?
As tradicionais permissões de arquivo User-Group-Other (
chmod
chown
chgrp
) dificultam isso, mas você pode usar as Listas de controle de acesso para definir permissões muito mais granulares além dessas. O método varia um pouco por sistema de arquivos e versão, mas pense em (re)montar o sistema de arquivos com suporte e uso aclsetfacl
ousetrichacl
para definir ACLs adicionais para as permissões UGO existentes que concederão ao seu servidor web o acesso desejado.https://en.wikipedia.org/wiki/Access_control_list
https://www.systutorials.com/docs/linux/man/7-richacl/