sudo 명령을 사용하여 크론 작업을 실행하는 방법


118

sudo 명령 이 필요한 cron 작업 을 실행할 수 있습니까?

처럼:

 sudo rm somefile

Sayem Siam에 오신 것을 환영합니다 . 이 질문에 대한 답변 askubuntu.com/questions/2368/how-do-i-setup-cron-job을보십시오 . 나는 당신의 질문은 여기 AU에 전에 물어되었다고 생각으로
stephenmyall

1
암호가 필요한 sudo를 실행하려고하는데 어떻게 cron 파일에서 암호를 부여 할 수
있습니까?

3
@sayemsiam 당신은 sudo를 넣을 필요가 없으며 루트 crontab을 편집하십시오.
Braiam

이 답변을 참조하십시오 .
sampablokuper

답변:


240

나는 이것이 얼마나 나쁜 생각인지는 알지 못할 것이다. 간단히 말해, sudocrontab 에서 실행 하려면 암호를 일반 텍스트로 저장해야합니다.

나쁜 생각입니다.


다음은 cron을 통해 관리 작업을 실행하는 기본 방법입니다. 루트의 crontab을 수정하는 경우 crontab에 실제로 쓸 필요가 없으므로 sudo.

루트 크론 탭 사용

다음 명령을 실행하십시오.

sudo crontab -e

root의 crontab 이 열립니다 . 어쨌든 sudo호출되므로이 컨텍스트에서 명령을 실행할 필요는 없습니다 root.

따라서 루트의 crontab에 다음을 추가하면됩니다.

@hourly rm somefile

당신은 지금, 만약 절대적으로 안전하고 암호와 위험을 감수 할, 다음은 당신의 자신의 crontab에서 명령을 실행하고 메시지가 표시되면 암호를 자동으로 입력 sudo.

다시 말하지만 이것은 권장되지 않습니다 .


자신의 crontab에서 다음과 같이 명령을 작성하십시오.

@hourly echo "password" | sudo -S rm somefile

여기서 명백한 단점은 누구나 crontab에 액세스하면 암호를 일반 텍스트로 읽을 수 있다는 것입니다.

이러면 안됩니다.


1
다행 이네요! 방치 된 보안 구멍에주의하십시오. 나중에 다시 찾아올 수도 있습니다.
SirCharlo

1
@SirCharlo 왜 root시스템 전체 crontab 대신에 사용자 crontab을 사용 /etc/crontab합니까?
Eliah Kagan

1
@ 엘리야 왜 안돼?
SirCharlo

2
이 답변 sudoers은 암호 요구 사항이없는 sudo 그룹과 같이 파일 에서 사용할 수있는 미묘한 부분에 대해 광택이 있기 때문에 마크가 누락되었습니다 .
brent

큰 도움을 주셔서 감사합니다.
Nasser Mansouri

33

cron 디렉토리 ( /etc/cron.*) 중 하나에서 스크립트를 넣는 경우 루트로 실행중인 sudo를 사용할 필요가 없습니다.

crontab을 사용하는 경우 루트의 crontab을 사용하려고합니다. 루트로 실행되며 sudo가 필요하지 않습니다.

sudo crontab -e

1
또한 /etc/cron.hourly/something에 명령을 배치합니다. 이것이이 디렉토리의 목적입니다.
존 S Gruber

3
아니요. /etc/cron.SOMETHING/SCRIPT에 넣을 수는 있지만 둘 다하지는 않습니다. crontab을 사용하면 일이 얼마나 자주 / 언제 실행되는지에 대해 조금 더 많은 힘을 가지지 만 둘 다 대략 동일한 기능을 제공합니다.
tgm4883

1
나는 그것을 대안으로 의미한다는 것을 분명히 했어야했다. 감사.
존 S Gruber

3

터미널에서 다음 명령을 실행

sudo visudo

파일 끝에 다음 줄을 추가했습니다.

vidyadhar  ALL= NOPASSWD: /bin/rm

위의 예에서 vidyadhar는 사용자 이름이며 vidyadhar를 통해 rm 명령을 실행중인 경우 비밀번호를 묻지 않습니다.


17
흠 .. 그런 다음 sudo rm -rf 'slash'( 해당 명령을 실행하지 마십시오 )와 같은 악의적 인 명령 은 해당 사용자로부터 실행되며 암호가 필요하지 않습니다.
SirCharlo

나중에 알아 당신의 접근 방식은 좋습니다. 그러나 특정 서비스를 중지 / 시작할 수있는 다른 사용자에게 권한을 부여하기 위해 위의 접근 방식을 사용하고 있습니다.
Vidyadhar

24
이것은 매우 나쁜 생각입니다. 이러지 마십시오.
bkanuka

2
아마도 vidyadhar ALL= NOPASSWD: /bin/rm somefile더 안전 할 것입니다.
Wernfried Domscheit

이것은 끔찍한 생각입니다. 당신은 준 담요는 sudo 권한을 RM에. 대신, rm 또는 해당 스크립트의 다른 사람을 포함하여 스크립트에 sudo 권한을 부여하고 실행 가능하게 한 다음 해당 스크립트에 sudo 권한을 부여하십시오. <username> ALL=(ALL) NOPASSWD: /home/<username>/bin/<script>훨씬 안전합니다.
RJ
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.