Somente o proprietário de um arquivo pode alterar suas permissões
Como jackweirdy comentou, apenas o proprietário de um arquivo (ou root
) pode alterar as permissões do arquivo. Ser um membro de um grupo que tenha algum tipo de acesso ao arquivo não lhe dá a capacidade de alterar as permissões do arquivo.
A idéia é que um arquivo é de propriedade de um usuário (seja esse usuário representa uma pessoa real ou não), e esse usuário é quem decide quem obtém acesso ao arquivo. Permissões para acesso por usuários (que não são o proprietário) no grupo-proprietário do arquivo são controladas pelo usuário que possui o arquivo. Se alguém no proprietário do grupo do arquivo pudesse alterar as permissões do arquivo, esse modelo de segurança seria quebrado.
Por exemplo, considere estas permissões, como na sua situação específica:
-rw-rw-r--
O proprietário pode ler e gravar o arquivo, mas não pode executá-lo. Os usuários do proprietário do grupo, além do proprietário do arquivo, também podem ler e gravar o arquivo, mas não executá-lo. Outros só podem ler o arquivo.
Suponha que www-data
(ou alguém com a capacidade de executar comandos como www-data
ou root
) defina essas permissões com a intenção de impedir que outros usuários do proprietário do grupo executem o arquivo. Se outros usuários do proprietário do grupo pudessem alterar as permissões, eles poderiam ser executados:
chmod g+x file-a.png
E então eles ganhariam a capacidade de executar o arquivo. Tal habilidade tornaria as permissões de grupo inúteis.
Por outro lado, a razão para as permissões de usuário, mesmo que o usuário seja o proprietário do arquivo, não é para restringir o proprietário a fazer nada com o arquivo, mas para proteger o usuário de fazer coisas com o arquivo que ele usa. t quer para fazer. Por exemplo, arquivos que não são programas, ou que podem ser programas, mas que acabam de ser obtidos de uma fonte não confiável, como a Internet, tendem a ter o bit de execução definido como 0, mesmo para o proprietário, em benefício próprio. Nesse caso, é útil e necessário que o proprietário possa alterar isso.
Um problema separado em permitir que membros do proprietário do grupo (que não são o proprietário) alterem as permissões é que essa é uma habilidade separada que não é contabilizada por r
, w
ou x
. Mesmo que o grupo tenha lido, escrito e executado, as permissões não significariam necessariamente que deveriam ser capazes de alterar as permissões. (Por exemplo, suponha que você tenha um arquivo em que o proprietário não seja membro do proprietário do grupo. Se os membros do proprietário do grupo puderem alterar as permissões, poderão privar o proprietário das permissões. O proprietário pode alterar isso de volta. .mas isso ainda quebraria todas as tarefas automatizadas que o usuário tinha programado para usar o arquivo.)
Permitindo que as pessoas se tornem proprietárias
Quando um arquivo pertence a um usuário como www-data
, que não representa nenhuma pessoa real, convém permitir que algumas pessoas executem ações como esse usuário. sudo
não facilita apenas permitir que usuários selecionados executem comandos como root
. Também facilita permitir que usuários selecionados executem o comando como outros usuários especificados. Você pode configurar tudo para que todos no grupo www-data
tenham a capacidade de executar comandos como o usuário www-data
, incluindo a alteração de permissões em arquivos de propriedade de www-data
. (Certifique-se de entender as implicações disso. Dependendo de como o sistema está configurado, os usuários em www-data
podem agendar tarefas para serem executadas como www-data
e poderão fazer qualquer coisa em qualquer arquivo propriedade de www-data
e para qualquer processo executado como www-data
.
Consulte man sudoers
para obter informações sobre como configurar isso. Se você decidir que quer fazer isso e tiver problemas, poderá postar uma pergunta diferente sobre isso.
Permitindo que não-proprietários alterem as permissões do arquivo?
Acho que é possível permitir que alguns usuários que não possuem um arquivo alterem algumas ou todas as permissões do arquivo, usando Listas de controle de acesso . Eu mal usei o ACL no Ubuntu. Se você estiver interessado em fazer isso, talvez queira postar outra pergunta perguntando se é possível e, em caso afirmativo, como fazê-lo.