crontab의 youtube-dl에 "[Errno 13] 권한이 거부되었습니다"가 표시됩니다.

crontab의 youtube-dl에 "[Errno 13] 권한이 거부되었습니다"가 표시됩니다.

나는 데비안을 사용하고 있습니다. youtube-dl에 대한 cron 작업을 만들려고 합니다. 자정부터 시작되는 일일 스크립트로 구성됩니다. 스크립트를 수동으로 실행하면 모든 것이 완벽하게 작동합니다. 그러나 cron 작업을 사용할 때 다음과 같은 오류가 발생합니다.

ERROR: unable to open for writing: [Errno 13] Permission denied: '/media/Video/...

크론은 다음과 같습니다.

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
@daily /usr/local/bin/youtube-dl-script.sh >> /var/mail/nextcloud 2>&1

어딘가에 권한 문제가 있는 것으로 알고 있지만 해결 방법을 모르겠습니다.

귀하의 정보:

  • 대상 폴더의 소유자/그룹( /media/Video/)은 : www-data(소유자), wwww-data (그룹)
  • 스크립트의 소유자/그룹은 : nextcloud(소유자), root (그룹)
  • nextcloud그리고 root그 그룹에 속해 있는www-data
  • 대상 폴더( /media/Video/) 권한은 770(소유자/그룹 그룹은 읽기/쓰기/실행이 가능하고, 다른 사람은 아무것도 할 수 없음)입니다.

제발 도와주실 수 있나요? 비슷한 주제를 보았지만 문제가 정확히 동일하지 않아 솔루션이 성공적이지 못했습니다. 매우 감사합니다.

편집(이전 상태):지금까지 나는 규칙을 준수하여( /group 이 소유한 확장자와 스크립트를 제거) 폴더 youtube-dl-script.sh에 내 스크립트( )를 복사하려고 했습니다 . 그리고 확인하면 다음과 같은 결과가 나옵니다./etc/crontab.daily.shrootrootcat /etc/crontab

# m h dom mon dow user  command
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#

따라서 일반적으로 오늘 아침 6시 25분에 작동했어야 했는데 그렇지 않았습니다!

나는 다른 스크립트에 -x최종 비트 가 있다는 것을 발견하여 chmod +x youtube-dl-script.

  • 그 전에 스크립트는 -rwxr-x--- 1 root root 1682 juin 16 02:24 /etc/cron.daily/youtube-dl-script.

  • 지금이야 -rwxr-x--x 1 root root 1682 juin 16 02:24 /etc/cron.daily/youtube-dl-script.

이것이 작동하는지 확인하려면 이제 내일 오전 6시 25분까지 기다려야 합니다.

편집 2(현재 상태): 그래서 작동하지 않습니다. 심지어 chmod 755다른 모든 스크립트와 동일한 권한을 가지도록 만들었고 서버를 재부팅했지만 작동하지 않습니다.

매우 이상한 점은 그렇게 하면 run-parts --test /etc/cron.daily내 스크립트가 나열되어 있으므로 다음에서 실행해야 한다는 것입니다.cron.daily

혹시 생각 있으신 분은 저에게 알려주시기 바랍니다. 감사합니다.

답변1

좋아, 해결책을 찾았습니다.

/etc/cron.hourly먼저 스크립트가 설치 되어 있지 않고 anacron매시간 사용하고 싶어서 스크립트를 으로 옮겼습니다 . 그러나 그것은 효과가 없었습니다.

sudo service cron status그런 다음 cron 서비스가 활성화되었는지 확인하기 위해 실행했습니다 . 그랬지만 다음과 같은 흥미로운 경고도 발견했습니다 your token was expired, renew your token. 그래서 인터넷에서 이 오류 메시지를 검색한 결과 루트 비밀번호를 갱신해야 한다는 사실을 발견했습니다. 그렇지 않으면 cron이 올바르게 작동하지 않습니다. 이를 확인하려면 sudo chage -l root내 루트 비밀번호가 임을 보여주는 것을 사용해야 했습니다 expired.

따라서 루트 비밀번호를 갱신 sudo passwd root하고 다시 확인했는데 sudo chage -l root이제 비밀번호가 정상인 것으로 나타났습니다. 이제 모든 것이 잘 돌아가고 cron이 예상대로 작동하고 있습니다!

관련 정보