Executando uma instância de Tela de um programa como não raiz

1

Eu tenho um servidor dedicado (Ubuntu 12.04, sem GUI) configurado para iniciar uma instância do McMyAdmin e anexá-lo a uma instância de tela toda vez que eu reiniciar o hardware. Eu tenho o comando salvo no crontab do root como:

@reboot cd /var/MC_SVR && screen -dmS McMyAdmin ./MCMA2_Linux_x86_64

O problema é que, no entanto, eu tenho um usuário configurado especificamente para acesso FTP aos arquivos do servidor, para que eu não tenha sempre que usar o SSH na máquina. Como o servidor está sendo iniciado como um processo raiz, todos os arquivos que ele cria são, obviamente, configurados com root como o proprietário.

Então eu coloquei todos os arquivos e os configurei para ftpuser . Agora estou preso ao tentar iniciar o processo como ftpuser. Eu tentei fazer o seguinte, mas sem sucesso:

cd /var/MC_SVR && su ftpuser - -c 'screen -dmS McMyAdmin ./MCMA2_Linux_x86_64'

Eu tento isso no terminal e não recebo nenhum erro ou nada (na verdade eu nunca obtenho nada a menos que seja um erro de sintaxe do su), mas não há nenhuma instância de tela para acessar e então posso assumir que o servidor nunca inicia.

Então, o que estou fazendo de errado? Ou eu simplesmente não estou acessando a instância da tela corretamente, uma vez que ela (supostamente) deve ser lançada por outro usuário?

    
por user288467 04.06.2014 / 20:55

1 resposta

0

Um dos problemas mais comuns com o cron é que ele é executado com um mínimo de shell e variáveis ambientais mínimas. Por isso, é melhor sempre usar o caminho completo para programas, binários, bibliotecas ou arquivos.

Além disso, embora você possa usar su, sudo é, IMO, uma ferramenta melhor. Especifique o usuário com o sinalizador -u.

Então, colocando tudo,

sudo -u ftpuser "screen -dmS /var/MC_SVR/McMyAdmin /var/MC_SVR/MCMA2_Linux_x86_64"
    
por Panther 05.06.2014 / 16:51