Server관련/Sever(OS)

linux 특정사용자로 cron 실행하기

saltdoll 2018. 4. 13. 02:52
반응형

특정 유저로 cron을 실행해서, 파일을 만들려고 하면, 폴더 권한이 755(소유자만 쓰기 가능)이라서 파일 만들기 cron이 실패하게 된다.

참고로, root로 cron을 돌리면 사용가능하나, 소유자가 root가 소유자 변경(chown)을 실행해야 한다.

#vi /etc/crontab

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/


# For details see man 4 crontabs

# Example of job definition:

# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed


출처: 특정 사용자로 cron 실행하기 https://mytory.net/2017/10/11/cron-as-specific-user.html

cron으로 파일을 만드는 일을 해야 한다면, 특정 사용자로 접근해야 하는 경우가 있다. 사용자를 지정하는 /etc/crontab을 이용한다.

 cron으로 돌리고 있는 명령어가 www-data 소유 폴더에 리사이즈 이미지를 만들어야 했다. cron은 일반 사용자가 돌리고, 폴더 권한은 755(소유자만 쓰기 가능)였기 때문에 파일 만들기에 실패했다.

이 문제를 해결하기 위해 root로 cron을 돌릴 수도 있다. 하지만 그러면 생성된 파일의 소유자가 root가 되기 때문에 www-data 권한만 있는 웹서버가 해당 리사이즈 이미지를 지우거나 고칠 수 없다는 문제가 생긴다.

/etc/crontab을 이용하면 사용자를 지정해 cron을 돌릴 수 있다. /etc/crontab은 시스템 수준의(system-wide) cron 명령어를 저장하는 파일인데, 이 파일에는 user를 지정하는 항목이 있다. 아래처럼 적는다.

# m h dom mon dow user	command
* * * * *   www-data php /var/www/artisan schedule:run >> /dev/null 2>&1

[그림 1. Cron job 설명]


반응형
도움이 되셨다면 하트모양의 "♡ 공감"을 눌러주시면 큰 격려가 됩니다.
(로그인하지 않으셔도 가능)