rsync는 크게 2가지 용도를 생각해볼 수 있다.
1) 파일 백업 (퍼미션 유지 필요. 백업본으로 복구할 경우 퍼미션도 중요하다.)
2) 파일 배포 (반드시 퍼미션을 유지하지 안해도 될 상황이 있다.)
rsync를 이용해서 다수의 서버를 동기화한다고 하자. 그리고, 대상 서버는 웹서버들이다. (즉, '파일 배포' 용도) 이 웹페이지 파일은 웹에서 읽을 수 있는 권한만 갖으면 된다. 쓰기 권한을 갖을 필요가 없다. (업로드가 이뤄지는 디렉토리는 쓰기 권한이 필요하겠지만)
rsync는 원본 파일(또는 디렉토리) 퍼미션과 상관없이, 싱크할 때 특정한 퍼미션으로 고정시키는 옵션이 있다. 디렉토리는 555(dr-xr-xr-x) 또는 515(dr-x--xr-x)으로, 파일은 444(-r--r--r--)로 고정해볼 수 있을 것이다. 서비스 서버(대상 서버)의 파일은 보안에 조금 더 안전하게 존재하게 된다.
(예)
------------- ---------------
원본 서버 대상 서버
192.168.1.123 192.168.1.110~120
------------- ---------------
drwxr-xr-x -> dr-xr-xr-x
drwxrwxr-x -> dr-xr-xr-x
-rw-r--r-- -> -r--r--r--
-rw-rw-rw- -> -r--r--r--
------------- ---------------
대상 서버의 rsyncd.conf 예이다.
# server : 192.168.1.110
#
uid = root
gid = root
user chroot = yes
max connections = 10
hosts allow = 192.168.1.123
[coffeenix]
path = /home/coffeenix/public_html
read only = no
incoming chmod = Du=rx,Dgo=rx,Fugo=r
#
uid = root
gid = root
user chroot = yes
max connections = 10
hosts allow = 192.168.1.123
[coffeenix]
path = /home/coffeenix/public_html
read only = no
incoming chmod = Du=rx,Dgo=rx,Fugo=r
'incoming chmod =' 파라미터는 들어오는 파일을 특정 퍼미션으로 고정한다.
파라미터의 값은 각각 다음과 같은 의미를 갖는다.
- D : 디렉토리
- F : 파일
- ugo : 각각 user(u), group(g), other(o)에 해당한다.
[ 기본적인 파일 보호 장치인 chmod (열쇠찾아서 그리는데 쉽지 않았다. ^^) ]
위의 Du=rx,Dgo=rx,Fugo=r 는 Dugo=rx,Fugo=r처럼 통합해서 표시해도 좋다.
Du=rx는 디렉토리 소유자는 r-x(읽기, 쓰기)로 설정한다는 의미이다.
Fugo=r은 누구나(user, group, other) 파일을 읽을 수 있도록(r--)로 설정한다.
위 설정대로하면 디렉토리는 r-xr-xr-x 가 되고, 파일은 r--r--r--가 된다.
# rsync -avz --delete public_html/ 192.168.1.110::coffeenix/
보다 자세한 글은 커피닉스에 써뒀으니 살펴보시길.
'시스템이야기' 카테고리의 다른 글
아파치 웹서버를 한방에 다운시키는 Range요청 취약점 (2) | 2011.08.30 |
---|---|
로그 분석 및 실시간 검색의 강자, Splunk 맛보기 (5) | 2011.04.08 |
DNS 요청에 대한 TimeOut시간의 진실은. (0) | 2010.11.11 |
MySQL에서 보안위해 load_file() 경로 제한하기 (0) | 2010.05.31 |
MySQL관련 기술적 동영상 제공하는 percona.tv (4) | 2009.06.24 |