Por que um usuário sem privilégios não pode alterar a propriedade do arquivo?

Por que um usuário sem privilégios não pode alterar a propriedade do arquivo?

De chown(2):

Somente um processo privilegiado (Linux: aquele com capacidade CAP_CHOWN) pode alterar o proprietário de um arquivo. O proprietário de um arquivo pode alterar o grupo do arquivo para qualquer grupo do qual esse proprietário seja membro. Um processo privilegiado (Linux: com CAP_CHOWN) pode alterar o grupo arbitrariamente.

Qual é o motivo desta restrição? Por que um usuário sem privilégios não pode alterar a propriedade de um arquivo que possui (ou seja, não/etc/shadow)?

$ touch blah
$ chown root:root blah
chown: changing ownership of `blah': Operation not permitted

Responder1

Ao permitir que os usuários "distribuam" arquivos, você entra em conflito com vários recursos do sistema operacional. Como:

Taking up another user's disk quota.
Impersonating another user (or even root) via setuid.
Having insufficient privileges to undo a mistaken chown.
Making it appear that someone else had created a given file.
Setting up cron jobs to run on other user's accounts.
And many more...

Responder2

É apenas uma escolha pessoal dos designers do Linux não permitir isso - todas as razões de pseudo-segurança,dado, são ilusórios, pois existem sistemas Unix que permitem isso.

Eu acho que essa funcionalidade se resumia ao fato de o comportamento do seu unix seguir ou não o 'System-V' (AT&T) ou o unix de Berkeley (BSD) ...

Quanto a outras questões de segurança mencionadas:

  • Representando outro usuário (ou mesmo root) via setuid.

    Não há problema: alterar o 'proprietário' limpa todos os bits 'setXid' (U/G)

  • Ter privilégios insuficientes para desfazer um chown errado

    Não é realmente um 'risco de segurança', MAS, pode estar em sistemas que permitem a mudança de usuário, você pode alterá-lo novamente se estiver em um diretório de sua propriedade, caso contrário: 'tenha cuidado'!

  • Fazendo parecer que outra pessoa criou um determinado arquivo.

    Ainda estaria em um diretório que pode ser gravado por você. Ou seja, você não pode movê-lo para o diretório inicial deles, a menos que o tenha aberto para gravação para o seu grupo ou para todos (ou especificamente para você, se ACLs estiverem disponíveis).

  • Configurando cron jobs para serem executados em contas de outros usuários.

    Novamente, não funcionaria - já que os crondirs são de propriedade do usuário e não estão configurados para seremlegívelpor outros usuários, muito menos gravável.

  • se alguém pudesse alterar a propriedade, qualquer pessoa poderia alterar as permissões para obter acesso a qualquer arquivo no sistema.

    Não: somente se o usuário for 'proprietário' do diretório que contém esse arquivo. Ou seja, posso fornecer um arquivo chamado 'passwd' ao root, mas não posso movê-lo para /etc/ a menos que tenha permissão de gravação para /etc/.

  • cotas

    Um ponto potencialmente válido -SEvocê usa cotas, mas parece que seria fácil detectar se você somasse o espaço em disco por home-dir; O único problema estaria em diretórios que podem ser gravados por vários usuários. Nesse caso, talvez seja o proprietário desse 'dir'. IstoPODERIAseja o caso daqueles sistemas que suportam 'doação' de arquivos, que você só pode fazer isso em diretórios que você 'possui', mas já faz MUITO tempo desde que estive em um sistema que permite isso, então eu não não me lembro das restrições exatas.

Parece que me lembro de haver alguma 'compensação' por permitir 'doar arquivos' ... por exemplo - em sistemas que permitiam isso, algo mais não era permitido que o Linux permite, mas não consigo lembrar o que estava errado mão...

Eu diria que a 'resposta' acima deve ser desmarcada como resposta, pois NÃO é a resposta real. É mais uma decisão de design - só não sei quais foram as compensações.

Pode haver questões de segurança não levantadas acima que seriam preocupações válidas, mas as acima não são válidas.

IMO, deveria ser um 'valor' configurável pelo sistema em "/ proc", mas de modo geral, acho que a maioria das pessoas não se importa muito.

Se houvesse uma grande necessidade disso, 'chown' poderia ser aprimorado em segurança e modificado para permitir isso e então configurado com setuid 'root' para permitir que ele implementasse tal política.

Responder3

Bem, se alguém pudesse alterar a propriedade, qualquer pessoa poderia alterar as permissões para obter acesso a qualquer arquivo no sistema. Isso é ruim não apenas do ponto de vista do malware (sem necessidade de sudo), mas do ponto de vista de um administrador de sistema. Se algum dos usuários puder alterar qualquer um dos arquivos, as permissões dos arquivos serão inúteis.

Responder4

Porque então o usuário pode escapar das cotas do sistema de arquivos. Se eu tiver uma cota de 100 MB e você tiver uma cota de 100 MB, posso fazer upload de 100 MB, chmod a+r, chown você e depois fazer upload de outros 100 MB.

informação relacionada