웹마스터 팁

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# 일반유저에게 퍼미션 변경 권한을 주기 위한 스크립트. crontab 권한이 있어야 함.
# filename /usr/local/bin/setperm
 
#!/bin/bash
sudo -u root /usr/local/bin/_setperm
 
#####################
 
# crontab 그룹의 유저에게 _setperm root 실행 권한을 줌.
# filename /etc/sudoers.d/setperm
 
%crontab    ALL=NOPASSWD: /usr/local/bin/_setperm
 
#####################
 
# filename /usr/local/bin/_setperm
# root 로 직접 실행할 경우 /home/username 밑에서 실행하면 유저명을 맞춰줌.
# 그 외 디렉토리에서는 SUDO_USER=username _setperm 하면 됨.
 
#!/bin/bash
if [[ "x${SUDO_USER}" == "x" ]]; then
    UDIR=`pwd | awk -F / '{ print $3 }'`
    if [[ "x${UDIR}" == "x" ]]; then
        exit
    fi
    SUDO_USER=$UDIR
fi
 
chown -R $SUDO_USER:nogroup .
find -type d -exec chmod 705 {} \;
find -type f -exec chmod 604 {} \;
if [[ -d /home/$SUDO_USER/.ssh ]]; then
    cd /home/$SUDO_USER/.ssh
    chown -R $SUDO_USER:nogroup .
    chmod 700 .
    chmod 600 *
fi
 
#####################
# 웹서버는 www-data:www-data 처럼 nogroup 과는 관련 없는 권한으로 하고,
# 유저는 nogroup 권한으로 만들면 (useradd -m username -g nogroup -G crontab)
# 유저자신은 owner +r+w+x 로 접근되고, 다른 유저는 nogroup -r-w-x 에 걸려 접근못하고,
# 웹서버는 other +r-w+x 로 읽기권한이 있음.
# php 같은 스크립트서버는 username:nogroup 권한으로 띄워주면 끝. php-fpm 짱짱맨.
 
# Copyright : Song Hyo Jin (shj at xenosi.de)
# License : MIT