Мне нужно обновить crontab моего веб-пользователя (пользователя, который запускает все веб-сайты). В моем crontab я использую сценарий оболочки с командами, которые должны использовать "sudo".
Сценарий хорошо выполняется, но я получаю сообщения об ошибках, несколько примеров ниже:
mv: cannot move 'cms/configs/database.json' to './database.json': Permission denied
mv: cannot move 'cms/configs/options.json' to './options.json': Permission denied
mv: cannot move 'cms/configs/analytics.json' to './analytics.json': Permission denied
mv: cannot move 'cms/sql/patchs.json' to './patchs.json': Permission denied
mv: cannot move 'cms/public/uploads' to './uploads': Permission denied
mv: cannot move 'cms/node_modules' to './node_modules': Permission denied
И я помещаю объявление crontab, используя: sudo crontab -u mywebuser -e
Если я выполняю сценарий без crontab с использованием «sudo myscript.sh», все работает как ожидалось.
해당 사용자가 실행하는 시스템 작업 파일을 설치합니다. 예를 들어 사용자가 crontab
명령을 사용하는 대신 /etc/cron.d/web
.
5 4 * * * mywebuser /opt/thing/myscript.sh
당신의 crond가 이것을 지원한다고 가정하면 Vixie가 지원합니다.
장점은 crond는 이제 귀하가 아닌 올바른 사용자가되는 책임이 있습니다. 즉, sudo
가 작동하도록 구성 및 환경을 정의 할 필요가 없습니다.
원하는 시간, 사용자 및 스크립트로 대체하십시오. 그리고 파일에이 사용자가 관리 할 수있는 올바른 권한이 있는지 확인하십시오.
sudo myscript.sh
( sudo -u username
로 정의 된 대체 사용자가 없음)은 기본적으로 스크립트를 루트로 실행합니다.
sudo crontab -u mywebuser -e
반면에 cron 작업을 설정합니다. 루트가 아니라 사용자 "mywebuser"의 훨씬 더 제한된 권한으로 실행하려면 ...
이 사용자는 루트 사용자와 같은 다른 사용자가 소유 한 파일을 수정할 수 없습니다 ....
파일 및 디렉토리 소유권 및 권한 수정