Execute o script do usuário como root em aplicativos de inicialização

2

Acabei de criar um script (bloqueio de log) para registrar eventos de tela de bloqueio / desbloqueio (derivados de este post ) :

#! /bin/bash
dbus-monitor --session "type='signal',interface='org.gnome.ScreenSaver'" | ( while true; do read X; if echo $X | grep "boolean true" &> /dev/null; then echo 'date' "screen locked"; elif echo $X | grep "boolean false" &> /dev/null; then echo 'date' "screen unlocked"; fi done )

Eu queria ter um daemon de inicialização executando logscreenlock > /var/log/screenlock.log . Agora, para escrever em / var / log, eu preciso de permissões de root (sou um sudoer). Então, eu precisaria de sudo logscreenlock > /var/log/screenlock.log , mas tenho dois problemas com isso:

  1. logscreenlock é de propriedade do meu usuário e eu gostaria de mantê-lo assim, mas mesmo depois de chmod a+x logscreenlock , eu recebo permissão negada se eu tentar sudo ./logscreenlock . Eu tentei usermod -a -G <myusergroup> root , mas sem sorte. Como posso superar isso?
  2. Como posso sudo nos aplicativos de inicialização? Isso me solicitará uma senha imediatamente?

EDIT: Eu descobri mais tarde que a razão pela qual eu não podia executar logscreenlock como root era que este script está em um sistema de arquivos remoto onde a raiz da minha máquina não é autenticada.

    
por ricab 11.09.2013 / 13:36

2 respostas

1

Assumindo que seu nome de usuário e grupo são ricab , você tentou sudo chgrp ricab /var/log/screenlock.log e sudo chmod g+rw /var/log/screenlock.log ? Você deve então poder ler e escrever screenlock.log usando sua conta.

    
por 11.09.2013 / 13:48
0

É normal que você não possa escrever em /var/log como usuário não-root. Chamar sudo não é uma boa solução. Não eleve as permissões, a menos que elas sejam realmente necessárias para algo. Escreva o arquivo de log no seu diretório pessoal.

logscreenlock >~/.screenlock.log
    
por 12.09.2013 / 02:07