A maioria dos sistemas unix impede que os usuários “entreguem” arquivos, ou seja, os usuários só podem executar chown
se tiverem os privilégios de usuário e grupo de destino. Como o uso chown
requer a propriedade do arquivo ou a raiz (os usuários nunca podem se apropriar dos arquivos de outros usuários), somente o root pode executar chown
para alterar o proprietário de um arquivo para outro usuário.
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) 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.