Não vou entender o quanto isso é uma má idéia; Simplificando, a execução sudono crontab requer que sua senha seja armazenada em algum lugar em texto sem formatação.
É uma má idéia.
A seguir, é o método preferido para executar tarefas administrativas por meio do cron. Como você realmente não precisa escrever sudono crontab, se estiver modificando o crontab do root.
Use o crontab do root
Execute o seguinte comando:
sudo crontab -e
Isso abre o rootcrontab. sudonão é necessário executar seu comando nesse contexto, pois ele será invocado da mesma rootforma.
Portanto, você simplesmente anexaria o seguinte ao crontab do root.
@hourly rm somefile
Agora, se você absolutamente deseja ser inseguro e correr riscos com sua senha, o seguinte executará seu comando a partir do seu próprio crontab e inserirá sua senha automaticamente quando solicitado sudo.
Novamente, isso não é recomendado .
No seu próprio crontab, escreva seu comando da seguinte maneira:
@hourly echo "password" | sudo -S rm somefile
A desvantagem óbvia aqui é que, se alguém acessar seu crontab, sua senha será legível em texto sem formatação.
Eu também colocaria o comando em /etc/cron.hourly/something. É para isso que servem esses diretórios.
John S Gruber
3
Não. Você pode colocá-lo em /etc/cron.SOMETHING/SCRIPT, mas eu não faria os dois. Ambos dariam aproximadamente a mesma função, embora, usando o crontab, você tenha um pouco mais de poder com que frequência / quando as coisas acontecem.
precisa saber é o seguinte
1
Eu deveria ter deixado claro que eu quis dizer isso como uma alternativa. Obrigado.
John S Gruber
3
Execute o seguinte comando no terminal
sudo visudo
Adicionada a seguinte linha ao final do arquivo:
vidyadhar ALL= NOPASSWD: /bin/rm
No exemplo acima, vidyadhar é o nome de usuário e não solicitará a senha se você estiver executando o comando rm através do vidyadhar.
Hmm .. Então, qualquer comando malicioso, como sudo rm -rf 'slash'( não execute esse comando ), executado a partir desse usuário, não exigiria senha. Não sei, parece inseguro, não?
SirCharlo
Ya eu sei disso. Sua abordagem é boa. Mas estou usando a abordagem acima para conceder direitos a outros usuários para interromper / iniciar determinados serviços.
Vidyadhar
24
Essa é uma ideia extremamente ruim. Por favor, não faça isso.
bkanuka
2
Talvez vidyadhar ALL= NOPASSWD: /bin/rm somefilefosse mais seguro.
Wernfried Domscheit
Esta é uma péssima ideia. Você deu permissões sudo gerais para a rm. Em vez disso, dê permissões sudo a um script que seu comando, incluindo rm ou outros nesse script, torne-o executável e, em seguida, dê permissões sudo para esse script. <username> ALL=(ALL) NOPASSWD: /home/<username>/bin/<script>, o que seria muito mais seguro.
Respostas:
Não vou entender o quanto isso é uma má idéia; Simplificando, a execução
sudo
no crontab requer que sua senha seja armazenada em algum lugar em texto sem formatação.É uma má idéia.
A seguir, é o método preferido para executar tarefas administrativas por meio do cron. Como você realmente não precisa escrever
sudo
no crontab, se estiver modificando o crontab do root.Use o crontab do root
Execute o seguinte comando:
Isso abre o
root
crontab.sudo
não é necessário executar seu comando nesse contexto, pois ele será invocado da mesmaroot
forma.Portanto, você simplesmente anexaria o seguinte ao crontab do root.
Agora, se você absolutamente deseja ser inseguro e correr riscos com sua senha, o seguinte executará seu comando a partir do seu próprio crontab e inserirá sua senha automaticamente quando solicitado
sudo
.Novamente, isso não é recomendado .
No seu próprio crontab, escreva seu comando da seguinte maneira:
A desvantagem óbvia aqui é que, se alguém acessar seu crontab, sua senha será legível em texto sem formatação.
Você não deveria fazer isso.
fonte
root
o crontab do usuário em vez do crontab em todo o sistema/etc/crontab
?sudoers
arquivo, como grupos sudo sem necessidade de senha.Se você estiver colocando o script em um dos diretórios cron (
/etc/cron.*
), não precisará usar o sudo, pois ele está sendo executado como root.Se você estiver usando o crontab, precisará usar o crontab do root. Isso o executará como root e também não precisará do sudo.
fonte
Execute o seguinte comando no terminal
Adicionada a seguinte linha ao final do arquivo:
No exemplo acima, vidyadhar é o nome de usuário e não solicitará a senha se você estiver executando o comando rm através do vidyadhar.
fonte
sudo rm -rf 'slash'
( não execute esse comando ), executado a partir desse usuário, não exigiria senha. Não sei, parece inseguro, não?vidyadhar ALL= NOPASSWD: /bin/rm somefile
fosse mais seguro.<username> ALL=(ALL) NOPASSWD: /home/<username>/bin/<script>
, o que seria muito mais seguro.