No seu arquivo /etc/sudoers
, você pode conceder permissões para um comando muito específico. Nos meus sudoers eu tenho o seguinte:
%student ALL = /bin/chgrp faculty *, /bin/chmod 2770 *
Isso é provavelmente muito geral para o que você quer. Você provavelmente quer algo mais como:
transferuser ALL = /bin/chown processuser:processgroup /path/to/files/*
Você não está dando carta branca - o usuário só pode emitir uma classe de comandos muito específica.
Você também pode conceder ao processuser essas permissões e incorporar os comandos em qualquer script que o processamento no receptor finalize.
Aqui está uma abordagem completamente diferente que não envolve o sudo. Você pode executar um cron job uma vez por minuto no computador de destino para verificar se há novos arquivos e usá-los conforme necessário.
No crontab do root:
* * * * * find /path/to/files/ -user transferuser -exec chown processuser:processgroup {} \;
Isso localizará todos os arquivos que atualmente pertencem a transferuser
e chown
e ignorarão todos os arquivos que já foram corrigidos. Como find
já é recursivo, você não precisa se preocupar com subdiretórios, eles serão tratados. A única questão é se uma vez por minuto é suficiente.