'웹호스팅'에 해당되는 글 2건

  1. 2009.08.01 디스크 쿼타 지정
  2. 2009.08.01 실행권한 없는 /tmp 파티션 만들기

디스크 쿼타 지정

Linux & Solaris 2009. 8. 1. 21:36 posted by JP™


디스크 쿼타
  ; 사용자 디스크 할당 제한 (block , 파일갯수)
 
 
 
 
1. 커널지원여부
 
2. fstab 옵션추가 (usrquota,grpquota) : # vi /etc/fstab
 
3. remount (umount , mount) : # mount -o remount /home
 
4. 데이터베이스 파일생성(quota.user , quota.group) :
  # touch quota.user
  # chmod go= quota.user
  # quotacheck -avum   
  # convertquota -u /home    
 
5. 사용자마다 적용수치 기록 : # edquota test1   
  # repquota -au
  

 

 

(예제)
 
# vi /etc/fstab    -- fstab 옵션 추가 입력 ( usrquota) , 그룹은 (grpquota)
 
LABEL=/                 /                       ext3    defaults        1 1
LABEL=/boot             /boot                   ext3    defaults        1 2
none                   /dev/pts               devpts gid=5,mode=620  0 0
LABEL=/home             /home                   ext3    defaults,usrquota        1 2
LABEL=/opt              /opt                    ext3    defaults        1 2
none                    /proc                   proc    defaults        0 0
none                    /dev/shm                tmpfs   defaults        0 0
LABEL=/usr              /usr                    ext3    defaults        1 2
/dev/hda6               swap                    swap    defaults        0 0
/dev/cdrom              /mnt/cdrom              udf,iso9660 noauto,owner,kudzu,ro 0 0
# /dev/cdrom          /opt/cdrom       udf,iso9660 noauto,owner,kudzu,ro 0 0
/dev/fd0                /mnt/floppy             auto    noauto,owner,kudzu 0 0

 
 
 
# mount -o remount /home  -- 리마운트

 
 
[root@h179 patch]# mount
/dev/hda3 on / type ext3 (rw)
none on /proc type proc (rw)
usbdevfs on /proc/bus/usb type usbdevfs (rw)
noneon/dev/ptstypedevpts(rw,gid=5,mode=620)
/dev/hda8 on /home type ext3 (rw,usrquota)
none on /dev/shm type tmpfs (rw)
/dev/hda5 on /usr type ext3 (rw)
/dev/hda2 on /boot type ext3 (rw)
/dev/hda6 on /opt type ext3 (rw)
 
 
 
[root@h179 patch]# cd ..
[root@h179 home]# touch quota.user   -- /home 으로 와서 quota.usr 파일 생성 ( 그룹은 quota.group)
 
 
 
 
[root@h179 home]# chmod go= quota.user   -- go 의 권한을 모두 뺀다 (다른 유저들이 파일내용을 볼수없도록 하기위해)
[root@h179 home]# ls -al quota.user
-rw-------    1 root     root            0  5월 26 15:25 quota.user
 
 
 
[root@h179 home]# quotacheck -avum   
  -- 현재 quota 상태를 체크한다
  -- avum 에서 u가 user를 뜻한다. (그룹은 -avgm 으로 한다.)
  -- 오류메세지가 나면 -f 옵션을 주어 재명령한다.

quotacheck: WARNING - Quotafile /home/quota.user was probably truncated. Can't save quota settings...
quotacheck: Scanning /dev/hda8 [/home] done
quotacheck: Checked 86 directories and 387 files
 
 
 
[root@h179 home]# convertquota -u /home    
  -- quota.user 파일을 aquota.user 로 변환
  -- 리눅스 쿼터 데이터파일은 aquota.user 파일을 지원하므로 변환해주어야한다. (단순복사는 안된다)       
[root@h179 home]# ls
  aquota.user       linux1       quota.user
 
 
 
 
[root@h179 home]# repquota -au   -- 사용자들의 디스크할당 정도를 출력해본다
*** Report for user quotas on device /dev/hda8
Block grace time: 7days; Inode grace time: 7days
                        Block limits                File limits
User            used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      --   26256       0       0            408     0     0
linux1    --      44       0       0             11     0     0
test      --      32       0       0              8     0     0
test1     --      20       0       0              5     0     0
test4     --      36       0       0             10     0     0
test5     --      32       0       0              8     0     0
test8     --      28       0       0              7     0     0
test9     --      32       0       0              8     0     0
test3     --      28       0       0              7     0     0
 
※ 0은 무한대를 의미
block : 현제 사용중인 블럭량(단위 : KByte)
soft : 보통의 경우 사용자가 사용할 수 있는 최대용량(사용량경고)
  ※ 만약 여기에 지정한 용량이 hard 에 지정한 값보다 작을 경우
  hard용량까지 지정한 유예기간(grace period)동안은 초과가능
hard : 블럭 사용 제한량(단위 : KByte)


inodes : 현제 사용중인 파일 수
soft : 파일 사용량 경고
hard : 파일 사용량 제한

soft => 보통의 경우 사용자가 사용할 수 있는 최대 용량을 나타낸다. 만약 여기에 지정한 용량이 hard
에 지정한 값보다 작을 경우 hard용량까지 지정한 유예기간(grace period)동안은 초과가능

hard=> 실제 사용자가 최대로 사용할 수 있는 용량(KB)를 의미한다.

inodes=> 현재 사용중인 inode를 나타낸다.

soft=> 사용자에게 지정하는 inode의 값으로 파일또는 디렉토리를 생성할 수 있는 갯수

hard=> 절대 초과할수 없는 inode값으로 사용자가 생성할수 있는 파일 또는 디렉토리의 최대값이다.

 


[root@h179 home]# edquota test1  -- test1 사용자의 디스크할당을 편집한다.

[root@h179 home]# edquota -p test1 test2 test3 -- test1 사용량을 test2 test3 에 똑같이 배정

★ 디스크할당을 해줄 계정은 그 디스크내에 생성되어 있어야만 한다.
 
[root@h179 home]# repquota -au  -- 편집된 test1의 디스크할당을 출력한다.
*** Report for user quotas on device /dev/hda8
Block grace time: 7days; Inode grace time: 7days
                        Block limits                File limits
User            used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      --   26256       0       0            408     0     0
linux1    --      44       0       0             11     0     0
test      --      32       0       0              8     0     0
test1     --      20    1000    1500              5    10    15
test4     --      36       0       0             10     0     0
test5     --      32       0       0              8     0     0
test8     --      28       0       0              7     0     0
test9     --      32       0       0              8     0     0
test3     --      28       0       0              7     0     0
 
 
 
 
[root@h179 home]# quotaon /home   -- 디스크할당을 적용시킨다.
 
 
 
 
※ file limits - soft : 지정해준 숫자만큼 파일갯수가 늘어나면 경고메세지를 출력한다.
※ file limits - hard : 지정해준 숫자까지만 파일을 생성할수 있다
※ Block limits - 파일의 용량에 관계된다.
※ [root@h179 home]# quotaoff /home   -- 디스크할당을 해제한다.

 


※ 아래 설정을 위해서는 /tmp 파티션이 따로 잡혀 있어야 합니다.


실행권한 없는/tmp  파티션 만들기

웹응용프로그램(apache) 취약성을 이용한 웹 해킹에 따른 방지 방법입니다.


tmp 디렉토리로 /tmp 를 사용하기도 합니다.
하지만 일부 버그를 이용하여 /tmp 파일에 스크립트를 넣고 실행 시키는 경우가 많습니다.
 

이에따라 /tmp 디렉토리를 다시 생성, 보안설정을 하여 마운트 하는 방법을 설명합니다.
 

1. /tmp 로 쓰이게될 100MB의 용량을 생성한다. 만약 더 큰 용량을 원한다면 count 사이즈를 높히면 됩니다.
   $ dd if=/dev/zero of=tmphdd bs=1024 count=100000

2. 파일시스템을 만들고 (-j : ext 3 , 무옵션 : ext2)
   $ /sbin/mke2fs -j /dev/tmphdd

   완료가 되면 파티션 생성과 파일시스템이 만들어 지며


3. rsync 또는 cp를 사용하여 임시 디렉토리를 만들고 데이터를 백업합니다.
   이제 기존 데이타를 옮기고

   $ rsync -av /tmp /var/tmp_BAK

   $ chmod 1777 /tmp/

4. tmphdd 를 마운트 할때 옵션 몇가지를 추가합니다.
   $ mount -o loop,noexec,nosuid,rw /dev/tmphdd /tmp

   실행권한을 주지 않고 마운트 합니다.

5. 기존자료를 복구합니다.
   $ cd /tmp

   $ rsync -av /var/tmp_BAK/tmp/ ./
 

6. 백업되었던 파일을 삭제 합니다.

   $ rm -rf /var/tmp_BAK/tmp/

7. 부팅시 fstab 에 추가해야 다음 리붓에도 적용시키기 위해 /etc/fstab 에 한줄의 라인을 추가합니다.

   $ /dev/tmphdd /tmp ext3 loop,noexec,nosuid,rw 0 0

  

8. 완료 후 테스트는 /tmp 디렉토리에 실행 파일을 넣고 실행시켜 봅니다.

   $ /tmp/a.out


   bash: ./a.out: Permission denied


 

9. 아파치도 재실행하여 웹로그인이 되는지 확인하고