A maioria dos sistemas unix previne que os usuários forneçam arquivos, ou seja, os usuários podem executar somente chown
se tiverem os privilégios de usuário e grupo de destino. Como usar chown
requer a propriedade do arquivo ou ser root (os usuários nunca podem se apropriar dos arquivos de outros usuários), somente root pode executar chown
para alterar o proprietário de um arquivo para outro usuário.
O motivo dessa restrição é que distribuir um arquivo para outro usuário pode permitir que coisas ruins aconteçam em situações incomuns, mas ainda assim importantes. Por exemplo:
- Se um sistema tiver cotas de disco habilitadas, Alice poderia criar um arquivo gravável do mundo em um diretório acessível somente por ela (para que ninguém mais pudesse acessar esse arquivo gravável) e executar
chown
para criar esse arquivo possuído por outro usuário Bill. O arquivo, então, contaria na cota de disco de Bill, embora apenas Alice possa usar o arquivo. - Se Alice distribuir um arquivo para Bill, não há nenhum rastro de que Bill não tenha criado esse arquivo. Isso pode ser um problema se o arquivo contiver dados ilegais ou comprometedores.
- Alguns programas exigem que o 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). Isso geralmente não é um projeto seguro, porque mesmo que Bill tenha criado um arquivo contendo instruções sintaticamente corretas, ele pode não ter planejado executá-las nesse momento específico. No entanto, permitir que Alice crie um arquivo com conteúdo arbitrário e tome como entrada de Bill só pode piorar as coisas.