O fato de que user1 tem permissão para executar comandos como user2 via sudo não importa para as decisões de permissão de arquivo que são tomadas em um nível muito mais baixo, no kernel. Lá, chown
é reservado para root (o Linux também permite processos com o recurso CAP_CHOWN
, mas isso não ajuda, porque dar a um processo esse recurso equivale a indiretamente conceder privilégios de root).
Você pode escrever uma regra sudo, talvez com um pequeno script wrapper, que permita ao usuário1 chamar chown
nos arquivos que pertencem ao usuário2. O problema é que isso é inseguro porque haveria uma condição de corrida entre a verificação de propriedade no arquivo e a chamada para chown
: user1 (ou até mesmo um terceiro usuário, dependendo das permissões do diretório) poderia substituir outro arquivo entre a verificação e a ação.
Você pode escrever um pequeno programa que use a fchown
chamada do sistema : abra o arquivo, ligue para lstat
, verifique a propriedade atual e, se estiver tudo bem, ligue para fchown
. Não há risco de substituição de arquivo aqui, pois a verificação e a ação são realizadas no mesmo identificador de arquivo.