Usuários não privilegiados (não raiz) não podem chown
arquivar para outros nomes de usuário. Para usar chown
, um usuário deve ter os privilégios do usuário de destino. Em outras palavras, apenas root
pode dar um arquivo para outro usuário.
Como explicado aqui (obrigado @slhck):
Somente processos com um ID de usuário efetivo igual ao ID do usuário do arquivo ou com privilégios apropriados podem alterar a propriedade de um arquivo. Se _POSIX_CHOWN_RESTRICTED estiver em vigor para o caminho:
A alteração do ID do usuário é restrita a processos com privilégios apropriados.
É permitido alterar o ID do grupo para um processo com um ID do usuário efetivo igual ao ID do usuário do arquivo, mas sem privilégios apropriados, se e somente se o proprietário for igual ao ID do usuário do arquivo ou (uid_t) -1 e o grupo for igual ao ID do grupo efetivo do processo de chamada ou a um de seus IDs de grupo suplementares.
A lógica por trás disso tem sido muito bem explicado por @Gilles em esta resposta Unix e Linux:
O motivo dessa restrição é que a distribuição de um arquivo a outro usuário pode permitir que coisas ruins aconteçam em situações incomuns, mas ainda importantes. Por exemplo:
- Se um sistema tiver cotas de disco ativadas, Alice poderá criar um arquivo gravável em mundo em um diretório acessível apenas por ela (para que ninguém mais possa acessar esse arquivo gravável em mundo no diretório) e, em seguida, executar chown para tornar esse arquivo pertencente a outro usuário Bill. O arquivo será contado na cota de disco de Bill, embora apenas Alice possa usá-lo.
- Se Alice distribuir um arquivo para Bill, não há vestígios de que Bill não criou esse arquivo. Isso pode ser um problema se o arquivo contiver dados ilegais ou comprometedores.
- Alguns programas exigem que seu arquivo de entrada pertença a um usuário específico para autenticar uma solicitação (por exemplo, o arquivo contém algumas instruções que o programa executará em nome desse usuário). Geralmente, esse não é um design seguro, porque, mesmo que Bill tenha criado um arquivo contendo instruções sintaticamente corretas, ele pode não ter a intenção de executá-las nesse momento específico. No entanto, permitir que Alice crie um arquivo com conteúdo arbitrário e recebê-lo como entrada de Bill só pode piorar as coisas.