Esvaziando um diretório pertencente a outro usuário semanalmente

4

Eu tenho um diretório temporário configurado onde os usuários podem colocar os arquivos que precisam enviar para outros usuários via HTTP. O proprietário deste diretório é um usuário SFTP e não pode executar tarefas agendadas.

Eu tenho um usuário do shell que pode executar trabalhos agendados, mas não tem permissão para editar arquivos no diretório do usuário do SFTP.

Eu tenho um usuário administrador que pode acessar o diretório do usuário do SFTP ao usar o sudo, mas não consigo (leia-se: eu realmente prefiro não) executar tarefas do cron.

Então, aqui está o enigma. Como faço para que uma tarefa do cron noturna seja executada como um usuário do shell para excluir arquivos com mais de uma semana no diretório do usuário do SFTP, com os privilégios do usuário admin?

    
por Ed Marty 21.09.2012 / 23:48

1 resposta

4

Edite o arquivo /etc/sudoers (use visudo !) e inclua uma entrada que permita ao usuário do shell ter privilégios suficientes para executar um comando específico, sem precisar digitar uma senha. Se você usar um script, certifique-se de que o script não possa ser editado por ninguém além do root.

Em /etc/sudoers , em que shelluser é o nome de usuário do shell:

shelluser ALL=NOPASSWD: /usr/bin/clean-up-sftp-temp-directory

Em um script /usr/bin/clean-up-sftp-temp-directory , você pode colocar algo como:

#!/bin/sh
rm -f /home/sftpuser/will-be-deleted/*

Depois de tornar o script executável, você poderá chamar sudo clean-up-sftp-temp-directory e adicioná-lo ao crontab do usuário do shell.

    
por 22.09.2012 / 05:56