Posso permitir que os usuários chmodem um arquivo que não pertence a eles?


17

Gostaria de permitir que os usuários chmodem um arquivo pertencente à raiz ou algum usuário que não seja ele próprio. Eu chmod'ed o arquivo para 777 e recebo "operação não permitida". Eu adicionei o usuário ao grupo do arquivo e obtive o mesmo. Por que um usuário não pode chmod um arquivo ao qual tem acesso de gravação?


1
Por essa lógica, por que não apenas executar tudo como root? Se qualquer usuário pode alterar qualquer modo, você basicamente destruir todo o modelo de permissões Unix ...
— Chris Baixo

1
O que você quer fazer? talvez você deva dar uma olhada em sudo: linux.die.net/man/8/sudo & linux.die.net/man/5/sudoers
— xx4h 15/13

O arquivo tem permissões 777, um usuário pode "arquivo mv file.old; cat file.old> file" e agora eles são os donos do arquivo e podem chmod. Por que eles não podem "chmod 777 file"?
— Ashleysmithgpu

5
Não, eles só podem fazer isso se tiverem permissão de gravação no diretório. Se o usuário tiver o direito de alterar as permissões de um arquivo que não possui, configurando o modo 04777 e copiando / usr / bin / env para ele, ele poderá executar qualquer comando como esse usuário.
— Stéphane Chazelas

@StephaneChazelas Esse é um argumento estranho, porque o kernel pode facilmente decidir (e aceita!) Permitir a não-proprietários essas alterações sem ficar vinculado por essa decisão de permitir-lhes todos os tipos de alterações. Afinal, o SUID é redefinido mesmo quando um não proprietário grava o arquivo.
— Hauke ​​Laging

Respostas:


8

Por que um usuário não pode chmod um arquivo ao qual tem acesso de gravação?

Para os direitos normais de acesso, essa é uma decisão de design. Você precisa de richacls : WRITE_ACLe talvez WRITE_OWNER.


1
E você deve avisar que os richacls geralmente não estão disponíveis.
— sendmoreinfo

@sendmoreinfo O artigo da Wikipedia diz isso e, obviamente, deve ser lido, pois minha resposta não explica o que os richacls são e como são usados. É ridículo considerar uma resposta correta "não útil" devido a isso. Especialmente porque não há alternativa equivalente. Da próxima vez, faça uma edição se achar que essas informações são necessárias.
— Hauke ​​Laging

Eu vejo, é uma decisão de design, obrigado
— ashleysmithgpu

2
Você obviamente usou o recurso, então explique você mesmo, com suas próprias palavras.
— sendmoreinfo

10

As permissões Unix são projetadas para serem simples. Você precisa da permissão de leitura para ler um arquivo, da permissão de gravação para gravar em um arquivo e da permissão de execução para executar um arquivo. Você precisa possuir um arquivo para modificar seus metadados¹.

Permitir que um usuário que possa ler um arquivo conceda permissão de leitura a outros, ou permita que um usuário que possa gravar um arquivo conceda permissão de gravação a outros, não alteraria muito o modelo de segurança. Isso ocorre porque as permissões unix são discricionárias: um usuário que pode ler um arquivo pode expor seu conteúdo a outros usuários, mesmo que esses outros usuários não possam ler o arquivo (e da mesma forma para escrever, o usuário poderia atuar como proxy e escrever em nome de outras pessoas).

Por outro lado, permitir que um usuário conceda permissão que não possui violaria completamente o sistema de permissão: o usuário poderia conceder todas as permissões a si próprio.

É muito raro precisar alterar as permissões de um arquivo que você não possui. Normalmente, você deve providenciar para que o arquivo tenha as permissões corretas assim que for criado. Se você realmente precisar disso, poderá conceder ao usuário sudo chmoddireitos para um modo específico e um arquivo específico (por exemplo joe: ALL = (ALL) chmod g+r /path/to/file).

¹ Exceto pelos tempos de acesso e modificação, que são específicos porque a leitura ou gravação no arquivo também os define.


No meu caso de uso, existe um processo da web (por www-data) e um processo cli (por mim), que deseja definir permissões em um arquivo. Eu me adicionei ao grupo www-data, mas isso não é suficiente.
— Donquixote

Mesmo mudando de proprietário / grupo para mim: www-data não ajuda. (Eu não ter projetado o mecanismo que tenta definir as permissões, não tenho controle sobre ele)
— Donquixote
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.