관리자 참고 사항: 이 문제는 sudo 경로가 su와 다른 이유와 관련이 없습니다. cron에서 실행되는 bash 스크립트의 환경 변수는 사용자에 대해 sudo 또는 su로 설정된 환경 변수에서 상속된 것으로 보이지 않기 때문입니다. (그러나 이후의 모든 내용을 참조하십시오.)
sudo su를 실행하고 경로를 표시하면 내 경로에 /usr/local/bin이 있습니다. 시스템 전체에서 사용할 수 있도록 여러 사용자 정의 응용 프로그램을 이 폴더에 배치했습니다. etc/sudoers에서 /usr/local/bin은 secure_path에 있습니다.
하지만
cron 작업을 통해 루트로 실행되는 bash 스크립트를 실행할 때 /usr/local/bin은 분명히 경로에 남아 있지 않습니다. 왜냐하면 거기에 설치된 응용 프로그램을 실행하려고 할 때 /etc in/에 있음에도 불구하고 명령을 찾을 수 없기 때문입니다. sudoers.
이러한 애플리케이션에 대한 루트 액세스 권한을 얻으려면 어떻게 해야 합니까?
우분투16.10
답변1
보시다시피 작업 환경은 cron
호출 셸의 환경과 다릅니다. 그러나 cron 테이블에서 변수를 설정할 수 있습니다.su -
sudo -s
sudo /path/to/executable
PATH="$PATH:/usr/local/bin"
0 0 * * * /path/to/run-me-at-midnight-with-path-changes.sh