chmod / chown을 수행하는 크론 작업 설정 u+rw ~/Dropbox 나는 이것을

디렉토리 (dropbox 디렉토리)에서 chmod / chown을 기억 적으로 수행하는 cron 작업을 설정하고 싶습니다.

이것은 다음과 같이 수동으로 명령을 실행할 때 작동합니다.

sudo chown -R $USER ~/Dropbox
sudo chmod -R u+rw ~/Dropbox

나는 이것을 다음과 같이 크론 작업으로 변환하려고 시도했다.

10      *       *       *       *       sudo chown -R $USER ~/Dropbox

그러나 그것은 일을하지 않는 것 같습니다.

이것을하는 방법?



답변

루트 크론 스크립트 (를 실행 sudo crontab -e하여 편집 )는 다음과 같습니다.

 55 * * * * /bin/chown -R somename /home/somename/Dropbox && /bin/chmod u+rw /home/somename/Dropbox

사용자의 이름이 지정 somename되었고 /home/somename/DropboxDropbox 디렉토리의 전체 경로 라고 가정합니다 . 루트 사용자로서 ~는로 이동합니다 /root.


답변

sudo해야 거의 결코 예약 된 작업에 사용되지 않습니다. 터미널과 통신 할 수있을 것으로 예상되며 그렇게하지 않으려면 특정 플래그가 필요합니다.

대신 cron 작업을 루트로 작성하십시오 (in- /etc/crontab이 파일의 형식은 약간 다릅니다 :).
또한 설치되지 않은 시스템에서 작업 할 수 있다는 이점이 있습니다 .minute hour mday month wdayusercommand
sudo


답변

두 가지 문제 :

1) 경로는 일반적으로 로그인 할 때와 같은 방식으로 cron에 설정되지 않습니다. / usr / bin / sudo / bin / chown … (또는 시스템의 해당 프로그램에 대한 올바른 경로)을 시도하십시오.

2) sudo는 일반적으로 암호를 요청하거나 비 대화식으로 실행하는 것이 행복하지 않을 수 있습니다. 대신 sudo없이 루트의 crontab에 명령을 넣은 다음 명령을 루트로 실행하는 것이 좋습니다.


답변

crontab에 여러 가지 문제가 있습니다.

10 * * * sudo chown -R $USER ~/Dropbox

문제 :

  • sudo여기서 사용해서는 안됩니다. 터미널 입력이 필요합니다
  • chown완전히 지정해야합니다 (예 /bin/chown)
  • USER실제 변수가 존재하지 않을 수 있습니다. 일부 시스템 사용LOGNAME
  • ~(물결)은 단지 쉘에 의해 인식됩니다 – 베어 chown뜻을 이해하지
  • 루트의 crontab에서 HOME을 지정하면 루트의 홈으로 이동

실제로 스크립트를 작성했다고 생각합니다.

#!/bin/bash

# FILE: /usr/local/bin/myscript

USER=$1
eval chown -R $1 ~$1/Dropbox
eval chmod -R u+rw ~$1/Dropbox

합니다 (이 eval변환에 필요 ~$1~user 다음/home/user.)

루트의 crontab에서이 스크립트를 실행하십시오.

# root's crontab
10 * * * /usr/local/bin/myscript someuser

답변

대안으로, ACL 지원활성화 하고 setfacl을 사용하여 동일 / 유사한 결과를 얻을 수 있습니다.