Você pode fazer isso diretamente com o sudo. Quando comecei a pensar em como fazer isso, percebi rapidamente que o número de chowns que você precisaria especificar para n usuários seria n ^ 2 se você tentar mapeá-los diretamente. Mas você pode reduzir isso para 2n se você exigir que o usuário assuma a propriedade de cada arquivo antes de reatribuí-lo. Então, seu arquivo sudoers pode ser assim:
User_Alias CHOWNADMIN1 = jane
Cmnd_Alias CHOWNUSR1 = /bin/chown --from widget-dev jane *, /bin/chown --from jane widget-dev *
Cmnd_Alias CHOWNUSR2 = /bin/chown --from releng jane *, /bin/chown --from releng amy *
CHOWNADMIN1 ALL= NOPASSWD: CHOWNUSR1, CHOWNUSR2
Com essa configuração, Jane agora pode fazer um processo de duas etapas para alterar a propriedade:
chown --from widget-dev jane /tmp/foofile
chown --from jane releng /tmp/foofile
Observe que você deve restringir esta permissão com --from ou abrir a possibilidade de conceder ao usuário "jane" a permissão para apropriar-se de arquivos como / etc / shadow ou /root/.ssh/id_rsa (que poderia ser ruim).
Claro, agora você pode escrever um script muito simples para automatizar os chowns. Talvez algo como o seguinte, mas com alguma verificação de erros:
#!/bin/bash
FROM=$1
shift
TO=$1
shift
sudo chown --from $FROM $USER $*
sudo chown --from $USER $TO $*
E agora, Jane pode executar "rchown releng widget-dev / tmp / foofile" ou similar.