
Eu tenho um programa que está fazendo algumas coisas. Ele está sendo executado pelo usuário A.
Uma pequena parte disso é transferir um arquivo para um diretório na casa do usuário B. A transferência é feita por uma chamada de API da linguagem em que está escrita e não por uma chamada de sistema de um comando shell.
Agora vejo várias maneiras de fazer essa transferência.
- Execute o programa como root.
- Coloque A e B no mesmo grupo e ajuste a propriedade do diretório
- sudo o programa
- faça a mudança com uma chamada de sistema e sudo isso
- coloque o arquivo localmente em A e faça a transferência externamente (terceirizar o problema)
- ACL o diretório de B
- ...
Acho que o requisito é comum, pois executar um programa via root é de mau gosto. Qual seria a maneira mais comum de lidar com isso?
EDITAR
O programa de A gera o arquivo. B deve ser capaz de lê-lo e excluí-lo.
Responder1
Se for importante não ver os outros arquivos do usuário A, crie um diretório comum separado onde ambos os usuários tenham direitos de leitura e gravação e coloquem os arquivos lá.
Ou você pode copiar/mover o arquivo assim que ele for criado com inotifywatch e chown para B, aqui está um exemplo, coloque-o no cron
Copie os arquivos automaticamente para o destino assim que forem criados