crontab은 사용자에게 열리지 않습니다

crontab은 사용자에게 열리지 않습니다

열려고 하면 crontab다음 출력이 표시됩니다.

ubuntu@macaroon:~$ crontab -l
crontabs/ubuntu/: fopen: 권한이 거부되었습니다.

그러나 sudo이것을 추가하면 잘 열리고 거기에서 작업하면 작동하지 않습니다.

ubuntu@macaroon:~$ sudo crontab -l
# Edit this file to introduce tasks to be run by cron.
# omitted such info
* * * * * /usr/bin/env python3 /home/ubuntu/main.py date >> ~/main_script_cronjob.log

이 기계에는 무엇이 빠졌나요? 이 동작을 수정하는 방법

다른 컴퓨터는 crontab일반 명령을 사용하면 잘 작동 하므로 sudo.

여기서 몇 가지 해결 방법을 수행해야 합니다.

sudo crontab -u 우분투 -e

그러면 crontab우분투 사용자에게는 올바르게 열립니다.

고쳐 쓰다:

자세한 내용은 추가 정보 crontab:

ubuntu@macaroon:~$ ls -l /usr/bin/crontab
-rwxrwxrwx 1 root crontab 39568 Mar 23  2022 /usr/bin/crontab
ubuntu@macaroon:~$ sudo namei -l /var/spool/cron/crontabs/ubuntu
f: /var/spool/cron/crontabs/ubuntu
drwxr-xr-x root   root    /
drwxr-xr-x root   root    var
drwxr-xr-x root   root    spool
drwxr-xr-x root   root    cron
drwx-wx--T root   crontab crontabs
-rw------- ubuntu root    ubuntu

Docker 컨테이너가 아닙니다. 물리적인 기계입니다.

답변1

명령이 crontab권한을 잃었습니다. 예를 들어 내 (Raspbian) 시스템의 권한에는 다음이 포함됩니다.설정crontab( s그룹 권한 비트):

-rwxr-sr-x 1 root crontab 30452 Feb 22  2021 /usr/bin/crontab

ls -l /usr/bin/crontab문제의 시스템에서 실행하고 결과를 질문에 추가하여 이를 확인할 수 있습니다. 누락된 setgid 비트를 수정하는 방법은 다음과 같습니다.

sudo chmod u=rwx,go=rx,g+s /usr/bin/crontab

(저는 기호 값을 선호합니다: User=rwx, Group,Others=rx, Group+setgid. 8진수도 사용할 수 있습니다 2755.)

또한 Docker에서 실행하려고 하면 일반적으로 기본적으로 권한이 제거되므로 알려주시기 바랍니다.

답변2

문제를 해결하려면 systemd-timer를 사용할 수 있습니다.

mkdir -p ~/.config/systemd/user

systemd 서비스 단위 파일:

cat <<EOF >  ~/.config/systemd/user/myservice.service
[Unit]
Description= description here

[Service]
Type=simple
ExecStart=/bin/bash -c '/usr/bin/python3 /home/ubuntu/main.py date >> ~/main_script_cronjob.log'

[Install]
WantedBy=default.target
EOF

시스템 타이머 단위 파일을 작성합니다.

cat <<EOF > ~/.config/systemd/user/myservice.timer
[Unit]
Description="Run service every 1 min"

[Timer]
OnCalendar=*-*-* *:*:00

[Install]
WantedBy=default.target
EOF

그런 다음 서비스와 타이머를 활성화합니다.

systemctl --user start myservice.{service,timer}

관련 정보