RSS구독하기:SUBSCRIBE TO RSS FEED
즐겨찾기추가:ADD FAVORITE
글쓰기:POST
관리자:ADMINISTRATOR
'Linux'에 해당되는 글 112
Linux  2006/09/08 13:40
출처 블로그 > 상큼한자유
원본 http://blog.naver.com/innko/25139848
쿼터 3.x(레드헷 7.1 이상) 에서 확인한 방법임
설정한 환경 사항은
uname -a
Linux ns.my2pc.com 2.4.22-1.2174.nptlsmp #1 SMP Wed Feb 18 16:21:50 EST 2004 i686 i686 i386 GNU/Linux
레드헷 페도라 코어 1 버전임

쿼터 설정 그대로 따라 하면 됨 안되면 말고 -_-;

[root@ns home]# cat /var/log/dmesg | grep quota
VFS: Disk quotas vdquot_6.5.1

vi /etc/fstab
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       1 2

대충 저리 비슷한 환경 이라고 보고
위에는 하드가 스카시라 저라고 나옴
ide 하드는 hda1 hda2 뭐 이런식으로 나옴
여튼 쿼터 걸 파티션 하나 잡음 난 home 에다 잡을라고 저렇게 했음
우선 home 을 쿼터를 걸려고 했으니 그 부분을 이렇게 수정함

LABEL=/home             /home                   ext3    defaults,usrquota        1 2

usrquota 가 추가되었음 ^^;

[root@ns home]# mount -o remount /home
[root@ns home]# mount
/dev/cciss/c0d0p5 on / type ext3 (rw)
none on /proc type proc (rw)
none on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/cciss/c0d0p1 on /boot type ext3 (rw)
/dev/cciss/c0d0p7 on /home type ext3 (rw,usrquota)
none on /dev/shm type tmpfs (rw)
/dev/cciss/c0d0p3 on /usr type ext3 (rw)
/dev/cciss/c0d0p2 on /var type ext3 (rw)

mout 로 보면
/dev/cciss/c0d0p7 on /home type ext3 (rw,usrquota)
이렇게 되있음 쿼터 된거임~


quota.user 파일 생성
사용자의 쿼터 정보를 담고 있는 파일인 quota.user  이게 자동으로 생기면 좋은데 그렇지가 않으니까~ 다음 과 같은 명령을 실행함~

[root@ns home]# touch /home/quota.user
[root@ns home]# chmod 600 quota.user

[root@ns home]# convertquota -u /home/
위 명령어 쳤는데 에러 뜨면 리붓 하번 해주면 됨 안되면 말고
//만약 위 부분에서 재부팅을 해도 안된다면
[root@ns home]# quotacheck -avugm
이 부분을 먼저 실행 하고 # convertquota -u /home/ 해보자 그럼 이제 될것이다.

그리고 ls -al 로 해서 대충 보면
aquota.user 이란 파일 하나 더 생김~


[root@ns home]# quotacheck -avug  
quotacheck: Cannot remount filesystem mounted on /home read-only so counted values might not be right.
Please stop all programs writing to filesystem or use -m flag to force checking.
위처럼 에러 뜨면 밑에처럼 하면 됨 안되면 역시나 말고
[root@ns home]# quotacheck -avugm
quotacheck: Scanning /dev/cciss/c0d0p7 [/home] done
quotacheck: Checked 4124 directories and 40103 files

///////////////////////////////////////////////////////
root@rootman /root]# quotacheck -a
Quota for users is enabled on mountpoint /home so quotacheck might damage the file.
Please turn quotas off or use -f to force checking.

위와 같은 경고 메시지를 만나면 당황하지 말고 quota를 잠시 중단하고 quotacheck를 한 후 다시 가동하면 된다.

[root@rootman /root]# quotaoff -a
[root@rootman /root]# quotacheck -a
[root@rootman /root]# quotaon -a

///////////////////////////////////////////////////////


//중요
만약 자신의 하드가 다른 물리적 파티션이거나 또는 다른 곳에서 마운트를 해왔다면
쿼터 적용이 안될것이다...왜냐 당연히 쿼터에 인식이 안되어 있으니까
그 부분을 위해 다른 곳도 쿼터에서 알수 있게 활성화를 시켜줘야 한다.
즉 /home 을 활성화 시킨다고 하면
quotaon -vaug /home
라고 하면
quotaon: using /home/aquota.user on /dev/hdb1: 장치나 자원 활성화
라는 문구가 뜰것이다 만약 이미 활성화가 되었다면
quotaon: using /home/aquota.user on /dev/hdb1: 장치나 자원이 동작 중
이런식의 문구가 뜰것이다.^^;
이 부분이 제대로 되어 있지않으면 사용자 정보가 제대로 반영이 안된다.
고로 아무리 쿼터를 적용해되 적용이 안되는 불상사가 생겨 버림


계정 용량 할당 하기

[root@ns home]# edquota bresting

Disk quotas for user bresting (uid 510):
Filesystem                   blocks       soft       hard     inodes     soft     hard
/dev/cciss/c0d0p7           3126776          0          0        598        0        0

그러면 저런 화면이 뜸

block(soft = 0, hard=0)
block 은 지금 사용하고 있는 총 용량
soft 는 용량의 제한을 둬서 그걸 넘으면 에러 메세지를 보냄
hard 는 그 용량 되면 더이상 못씀
inodes (soft =0,    hard=0)
이건 파일 게수를 뜻한 역시나 위와 같음

예를 들자면

Disk quotas for user bresting (uid 510):
Filesystem                   blocks       soft       hard     inodes     soft     hard
/dev/cciss/c0d0p7           50         51200          56320        10       1500     1550

50 메가 넘으면 경고 메세지 보냄
55 메가 넘으면 더이상 못씀
1500 게 파일 넘으면 경고 메세지
1550 게 파일 넘으면 더이상 못씀


유예 기간
[root@ns home]# edquota -t
Grace period before enforcing soft limits for users:
Time units may be: days, hours, minutes, or seconds
Filesystem             Block grace period     Inode grace period
/dev/cciss/c0d0p7                  7days                  7days


쿼터 설정 상태

[root@ns home]# repquota -a
*** Report for user quotas on device /dev/cciss/c0d0p7
Block grace time: 7days; Inode grace time: 7days
                       Block limits                File limits
User            used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      --    1216       0       0            141     0     0      
nobody    --   37960       0       0            825     0     0      
vpopmail  --    1688       0       0            181     0     0      
bresting  -- 3126776       0       0            598     0     0      
fellen    -- 26592228       0       0           1150     0     0      
mysql     --      20       0       0              5     0     0      
photo     --      24       0       0              6     0     0      
my2pc     --  332756       0       0           2394     0     0      
kang0927  -- 1410648       0       0           2713     0     0      
down      -- 6820940       0       0           1632     0     0      
jhs1013   -- 2646524       0       0           1644     0     0      
infoftp   -- 9556676       0       0           1213     0     0      
bibichu   -- 4675392       0       0           4668     0     0      
moriya    -- 9892968 9900000 9950000          13858     0     0      
heyworld  --      24       0       0              6     0     0      
heyoh     -- 8223824       0       0             75     0     0      
issey     -- 2285488       0       0          10063     0     0      
hayan     -- 1176884       0       0           1903     0     0      
club      --    5672       0       0            748     0     0      



쿼터 설정을 다른 사용자와 동일하게 설정 하기

edquota -p bresting bresting1 bresting2
bresting 의 환경을 bresting1 bresting2 에게 같이 적용

다중 사용자의 쿼터 적용
edquota -p bresting `awk -F: '$3 > 500 {print $1}' /etc/passwd`
awk 앞에는 숫자1 옆의 ` 그다음은 엔터 옆 ' ' passwd 는 숫자1 `




crontab -e
0 3 * * 0 /sbin/quotacheck -avugm
===============================================================================================



아래는 linux.co.kr 의 테마리눅스 중 Quota 사용하기 입니다.

쿼터를 설정하면 질문하신 것이 다 해결됩니다.

0. quota 가동 준비사항.

quota를 가동하기 위해서는 커널 컴파일시에 다음과 같은 커널 옵션에

체크되어야 된다.

File systems ---> [ * ] Quota support

(/boot/config-......)→CONFIG_QUOTA=y

1. /etc/fstab 수정하기


quota를 설정하기 위해서 가장 먼저해야될 일은 /etc/fstab 파일을 수정하는 것이다.

독립 파티션으로 만들어진 /home 디렉토리에 쿼터를 적용해 볼 것이기 때문에

LABEL=/home 부분의 설정에 사용자 쿼터 설정 부분을 옵션에 추가해 주면 된다.

추가해줄 위치는 defaults뒤에 컴마( , )로 구분해서 'usrquota'(사용자쿼터)를

추가하자. 그룹쿼터를 적용하기 위해서는 'grpquota'를 설정해 주면 된다.

2. quota.user 파일 만들기와 aquota.user(커널 2.4.x)로 변환하기.

커널 2.4.x를 사용하는 시스템에서 quota를 사용하기 위해서는 quota가 적용될

파티션의 최상위 디렉토리에 quota.user파일을 만들고, quota.user 파일을

aquota.user 파일로 변환해 주는 작업을 한번 더 거쳐야 된다.

작업 과정은 다음 그림과 같다.


먼저 touch 명령으로 quota.user 라는 빈 파일을 하나 만들고 퍼미션을 600으로

설정한 후 quota.user파일이 생성되었다.

그다음 커널 2.4.x 시스템을 위해 convertquota로 quota.user 파일을 aquota.user

파일로 변환했다.

aquota.user(quota.user)파일은 user들의 쿼터 설정들을 저장하고 있는 파일이다.

quota 사용을 위해 /etc/fstab 파일에 설정해 준 형식으로 /home 파티션을 마운트

해야 되기 때문에 위 과정을 모두 마쳤으면 시스템을 리부팅을 하자.

3. 리부팅 후 /home 파일 시스템 확인하기.


부팅 과정에서 quota를 사용할 수 있는 파일 시스템으로 마운트 하고 quotaon을

실행하기 때문에 부팅 후 'quotaon' 명령을 따로 해 줄 필요가 없다.

부팅 과정중에 어떻게 quotaon이 실행되는지 확인해 보고 싶으신 분은

/etc/rc.local/rc.sysinit 파일을 살펴보시길..

mount 명령으로 /home 파티션의 마운트 정보를 확인했을 때 위와 같이

(rw,usrquota)로 설정되어 있으면 제대로 설정 된 것이다.

4. quotacheck 명령으로 현재 user별 /home 파티션 사용량 체크하기

  • quotacheck 옵션
    -vverbose의 의미로, 체크 도중 여러가지 유용한 정보를 제공한다
    -u특정 UID(User ID)가 사용하는 파일과 디렉토리를 카운트하게한다
    -g특정 GID(Group ID)가 사용하는 파일과 디렉토리를 카운트하게한다
    -a/etc/fstab 파일에 usrquota 옵션이 포함된 파일 시스템을 모두 체크한다


    다음 그림은 'quotacheck -a' 명령후 'repquota -a' 명령으로 현재 쿼터 정보를
  • 출력한 화면이다.

  • 현재 quota가 가동중일 때 quotacheck 명령을 하면 다음과 같은 경고 메시지를

    보게 될 것이다.


    root@rootman /root]# quotacheck -a
    Quota for users is enabled on mountpoint /home so quotacheck might damage the file.
    Please turn quotas off or use -f to force checking.


    위와 같은 경고 메시지를 만나면 당황하지 말고 quota를 잠시 중단하고 quotacheck를 한 후 다시 가동하면 된다.


    [root@rootman /root]# quotaoff -a
    [root@rootman /root]# quotacheck -a
    [root@rootman /root]# quotaon -a



    위 그림은 Block(용량)에 대한 유효기간과, Inode(파일수)에 대한 유효기간이

    default 값인 7일로 설정되어 있고 아직 user들의 사용량을 제한하지 않았기

    때문에 soft, hard 값들은 0으로 표시되어 있다.

    5. edquota 명령으로 Block(용량)과 Inode(파일수)를 제한하기

    ::edquota 명령의 옵션

    -u사용자의 쿼터를 편집하는 옵션으로 기본값이다.
    -p여러 사람의 쿼터를 설정할 때 -p 옵션뒤에 사용자 ID를 쭉~ 적어주면 ID 제일 앞에 있는 ID와 동일하게 쿼터가 적용된다.
    (예: edquota -p yyc rootman yunil --> 사용자 rootman, yunil은 yyc의 쿼터 설정이 그대로 적용된다)
    -g그룹의 쿼터를 편집하는 옵션으로, quota.group 파일이 필요하다.
    -t각 파일 시스템에 대한 유예기간을 설정하기 위한 옵션이다.


    사용자의 쿼터를 편집하기 위해서는 '-u' 옵션을 그룹의 쿼터를 편집하기 위해서는 '-g' 옵션을 사용하면 된다.

    아래 그림은 사용자 yyc 의 쿼터를 편집하기 위한 화면이다.

    [root@rootman root]# edquota -u yyc


    첫줄은 쿼터 편집의 대상에 대한 정보이고 두 번째 줄은 쿼터가 적용될 디바이스의 정보이다.

    셋째줄은 사용자 yyc 소유의 파일의 총 size에 대한 정보와 제한할 용량의 soft와

    hard값이 설정되어 있다.

    넷쨰줄은 사용자 yyc 소유의 inode(파일수)에 대한 정보와 제한할 inode(파일수)의 soft와 hard값이 설정되어 있다.

    **참고 : inode는 디렉토리수와 파일수를 합친 값이 적용된다. 사실 디렉토리도 파일이니까..

    soft : 실제적인 제한량이다. 단, 유예기간이 설정되어 있을 경우 유예기간동안은 soft 값을 초과할 수 있다.

    hard : quota 제한량의 절대적인 수치이다. 어떠한 경우라도 hard 값을 초과할 수는 없고 유예기간동안이라도 hard값은 초과할 수 없다.

    위 설정 내용은 사용자 yyc가 사용할 수 있는 총 사용량이 200000(KB)이고 유예기간 동안에는 250000(KB)까지 사용할 수 있다는 설정이다.

    만약 유예기간이 지나서도 soft값을 초과하고 있을 시에는 hard 값에 상관없이 soft 값을 초과할 수 없다.

    즉 soft 값 이하로 파일들을 정리하지 않을 경우에는 절대 새로운 파일을 생성할 수 없다.

    6. edquota -t (유예기간 설정하기)

    quota 에서의 유예기간이란 사용자가 quota 설정의 soft 값을 초과 하더라도 일정 기간동안 파일을 정리할 시간을 주는 의도로 사용된다.

    설정된 soft 값을 초과했을 때부터 유예기간이 카운트 다운되는데 이 기간동안은 hard 값을 초과하지 않는 범위에서 얼마든지 파일을 생성할 수 있다. 하지만 유예기간이 지나게 되면 사용자는 hard 값에 상관없이 soft 값을 초과할 수 없고 soft값 이하로 파일을 정리할 때까지 새로운 파일을 생성할 수 없다.

    아래 그림은 Block(용량)에 대해 3일, inode(파일수)에 대해 3일의 유예기간을 설정한 화면이다.


    유예기간 역시 block(총용량) inode(총파일수)에 대해서 설정할 수 있으며 설정되는

    기간의 단위는 아래와 같다.


    sec(onds) : 유예기간을 초(seconds) 단위로 설정한다.
    min(utes) : 유예기간을 분(minutes) 단위로 설정한다.
    hour(s) : 유예기간을 시(hours) 단위로 설정한다.
    day(s) : 유예기간을 일(days) 단위로 설정한다.



    block(용량)과 inode(파일수)에 대한 유예기간 설정은 각각

    'Block grace:', Inode grace:' 뒤에 한칸 뛰우고 유예기간을 설정하면 된다.


    주의

    원래는 quota의 단위 설정은 숫자와 기간단위 사이에 빈공간(스페이스)를 주어서 설정하는데 redhat 7.1 계열에 패키징 된 quota 유틸들 중에는 숫자와 유예기간 단위를 붙여서 적어줘야 올바르게 저장 되는 경우가 있다.

    예 : 3 days --> 3days


    다음은 soft 값을 초과한 사용자를 'repquota -a' 명령으로 확인하는 화면이다.


    위의 그림은 사용자 abc 가 quota 사용량 soft 값을 초과해서 유예기간(grace)가

    카운트 다운 되고 있는 모습이다.

    참고
    grace 부분은 유예기간을 설정 했더라도 사용자가 soft 값을 넘어가기 전에는 표시

    되지 않는다.
    사용자가 soft 값을 초과하면 그때부터 'edquota -t' 의 설정대로 카운트다운이 되는 것이다

    사용자가 soft 값을 초과 했을 때 보여지는 사용자에게 보여지는 메시지


    경고 메시지는 나타나지만 hard 값을 초과하지 않았다면 파일은 생성된다.

    chmod 600 /web/quota.user
    convertquota -u /web
    mount
    cat /etc/fstab
    mount
    mount -o /dev/hda2
    mount -o remount /dev/hda2
    cd /web/
    quotacheck -m /web
    rpm -qa quota
    mount
    pstree
    /usr/local/apache/bin/apachectl stop
    vi /etc/fstab
    dmesg
    umount /dev/hda2
    pstree
    mount -o remount /web
    dmesg
    mount -o remount /dev/hda2
    quotacheck -m /web
    mount -o remount /web
    quotacheck -m /web
    dmesg
    uname -a
    vi /etc/fstab
    mount
    mount -o remount /dev/hda2
    quotacheck -m /dev/hda2
    quotacheck -m /web
    mount
    rm -rf quota.user
    ll
    mount
    quotacheck -m /web
    touch quota.user
    quotacheck -m /web
    ll
    touch aquota.user
    quotacheck -m /web
    quotaon -a
    rm -rf quota.user
    quotacheck -m /web
    touch quota.user
    quotacheck -m /web
    touch aquota.user
    quotacheck -m /web
    quotaon -a
    2006/09/08 13:40 2006/09/08 13:40
    이 글에는 트랙백을 보낼 수 없습니다
    from.Pumpkin carving supplies  2023/12/04 03:25
    상상플러스 :: Quota설정 ext3
    출처 블로그 > 겨울타는소년
    원본 http://blog.naver.com/inseokhwang/150005390240

    Red Hat Enterprise Linux 4

    시스템 관리 안내서

    ISBN: N/A
    차례
    머리글
    1. 아키텍쳐 관련 정보
    2. 문서 약정
    3. 레드햇 네트워크에 구입하신 제품을 등록하십시오
    3.1. Red Hat 로그인 아이디 입력하기
    3.2. 등록 번호를 입력하십시오
    3.3. 귀사의 시스템을 연결하십시오
    4. 앞으로 추가될 사항
    4.1. 여러분의 의견을 기다리고 있습니다
    1장. 시스템 관리의 기본 철학
    1.1. 모든 것을 자동화하기
    1.2. 모든 것을 기록하기
    1.3. 최대한의 의사 소통을 나누기
    1.3.1. 사용자에게 앞으로 어떠한 작업을 수행할 것인지 알리기
    1.3.2. 사용자에게 현재 어떠한 작업을 수행 중인지 알리기
    1.3.3. 사용자에게 지금까지 어떠한 작업을 수행했는지 알리기
    1.4. 가능한 많은 자원을 활용하기
    1.5. 사용자 파악하기
    1.6. 비지니스 환경 이해하기
    1.7. 보안을 마지막 보루로 여기지 말것
    1.7.1. 사회 공학적(Social engineering) 칩입 수법
    1.8. 앞서 계획하기
    1.9. 예상치 못한 사건을 미리 예측하기
    1.10. Red Hat Enterprise Linux-관련 정보
    1.10.1. 자동화
    1.10.2. 문서화 및 통신에 사용되는 도구
    1.10.3. 보안
    1.11. 추가 자료
    1.11.1. 설치된 문서 자료
    1.11.2. 유용한 웹사이트
    1.11.3. 관련 서적
    2장. 자원 모니터링
    2.1. 기본 개념
    2.2. 시스템 성능 모니터링
    2.3. 시스템 용량 모니터링
    2.4. 무엇을 모니터링할것인가?
    2.4.1. CPU 파워 모니터링
    2.4.2. 대역폭 모니터링
    2.4.3. 메모리 모니터링
    2.4.4. 스토리지 모니터링
    2.5. Red Hat Enterprise Linux 관련 정보
    2.5.1. free
    2.5.2. top
    2.5.3. vmstat
    2.5.4. Sysstat 자원 감시 도구 모음
    2.5.5. OProfile
    2.6. 추가 자료
    2.6.1. 설치된 문서 자료
    2.6.2. 유용한 웹사이트
    2.6.3. 관련 서적
    3장. 대역폭과 처리 능력
    3.1. 대역폭
    3.1.1. 버스(Buses)
    3.1.2. 데이터 경로(Datapaths)
    3.1.3. 발생 가능한 대역폭 관련 문제점들
    3.1.4. 대역폭 관련 문제가 발생시 해결책
    3.1.5. 지금까지 설명한 내용을 요약하자면:
    3.2. 처리 능력
    3.2.1. 처리 능력 관련 정보
    3.2.2. 처리 능력 소비자
    3.2.3. CPU 용량이 부족할 경우 해결책
    3.3. Red Hat Enterprise Linux 관련 정보
    3.3.1. Red Hat Enterprise Linux에서 대역폭 감시하기
    3.3.2. Red Hat Enterprise Linux에서 CPU 사용량 모니터링 방법
    3.4. 추가 자료
    3.4.1. 설치된 문서 자료
    3.4.2. 유용한 웹사이트
    3.4.3. 관련 서적
    4장. 실제 메모리와 가상 메모리
    4.1. 스토리지 접근 유형
    4.2. 다양한 스토리지 유형
    4.2.1. CPU 레지스터
    4.2.2. 캐시 메모리
    4.2.3. 주메모리 — RAM
    4.2.4. 하드 드라이브
    4.2.5. 오프라인 백업 스토리지
    4.3. 기본 가상 메모리 개념
    4.3.1. 가상 메모리란?
    4.3.2. 보조 기억장치 — 가상 메모리의 중심
    4.4. 가상 메모리: 상세 정보
    4.4.1. Page Faults
    4.4.2. 작업 세트(Working Set)
    4.4.3. 스와핑
    4.5. 가상 메모리 성능 관련 정보
    4.5.1. 최악의 성능 시나리오
    4.5.2. 최고 성능 시나리오
    4.6. Red Hat Enterprise Linux 관련 정보
    4.7. 추가 자료
    4.7.1. 설치된 문서 자료
    4.7.2. 유용한 웹사이트
    4.7.3. 관련 서적
    5장. 스토리지 관리
    5.1. 스토리지 하드웨어 개요
    5.1.1. 디스크 원판
    5.1.2. 데이터 판독/기록 장치
    5.1.3. 액세스 암
    5.2. 스토리지 주소 지정 방식
    5.2.1. 구조 정보(geometry) 기반 주소 지정 방식
    5.2.2. 블록 기반 주소 지정 방식
    5.3. 대용량 기억 장치 인터페이스
    5.3.1. 인터페이스 발전 역사
    5.3.2. 최신 산업체 표준 인터페이스
    5.4. 하드 드라이브 성능 특성
    5.4.1. 기계적/전기적 한계
    5.4.2. 입출력 작업 부하가 성능에 미치는 영향
    5.5. 스토리지 사용 준비
    5.5.1. 파티션
    5.5.2. 파일 시스템
    5.5.3. 디렉토리 구조
    5.5.4. 스토리지 액세스 활성화하기
    5.6. 고급 스토리지 기술
    5.6.1. 네트워크 액세스 가능한 스토리지
    5.6.2. RAID 기반 스토리지
    5.6.3. 논리 볼륨 관리 (LVM)
    5.7. 스토리지 관리
    5.7.1. 여유 공간 모니터링
    5.7.2. 디스크 쿼터 관련 사항
    5.7.3. 파일 관련 문제
    5.7.4. 스토리지 추가/제거하기
    5.8. 백업 관련 정보…
    5.9. Red Hat Enterprise Linux 관련 정보
    5.9.1. 장치 이름 지정법
    5.9.2. 파일 시스템에 대한 기본적인 정보
    5.9.3. 파일 시스템 마운트하기
    5.9.4. Red Hat Enterprise Linux에서 네트워크 액세스 가능한 스토리지
    5.9.5. /etc/fstab 파일을 이용하여 파일 시스템을 자동으로 마운트하기
    5.9.6. 스토리지 추가/제거하기
    5.9.7. 디스크 쿼터 구현 방법
    5.9.8. RAID 어레이 생성 방법
    5.9.9. RAID 어레이 관리
    5.9.10. 논리 볼륨 관리 (LVM)
    5.10. 추가 자료
    5.10.1. 설치된 문서 자료
    5.10.2. 유용한 웹사이트
    5.10.3. 관련 서적
    6장. 사용자 계정 및 자원 액세스 관리
    6.1. 사용자 그룹 관리
    6.1.1. 사용자명
    6.1.2. 암호
    6.1.3. 액세스 제어 정보
    6.1.4. 계정 및 자원 액세스 관리
    6.2. 사용자 자원 관리
    6.2.1. 공유 데이터에 액세스할 수 있는 사용자는 누구인가?
    6.2.2. 사용자가 공유 데이터를 액세스할 장소
    6.2.3. 자원이 악용되는 것을 방지하기 위한 보안책 강구
    6.3. Red Hat Enterprise Linux 관련 정보
    6.3.1. 사용자 계정, 그룹 및 사용 권한
    6.3.2. 사용자 계정 및 그룹을 관리하는 파일
    6.3.3. 사용자 계정 및 그룹 관리 프로그램
    6.4. 추가 자료
    6.4.1. 설치된 문서 자료
    6.4.2. 유용한 웹사이트
    6.4.3. 관련 서적
    7장. 프린터 및 인쇄 정보
    7.1. 프린터 유형
    7.1.1. 인쇄 관련 고려 사항
    7.2. 충격식 프린터(Impact printer)
    7.2.1. 도트 매트릭스(dot-matrix) 프린터
    7.2.2. 데이지 휠(daisy-wheel) 프린터
    7.2.3. 라인(Line) 프린터
    7.2.4. 충격식 프린터 소모품
    7.3. 잉크젯 프린터
    7.3.1. 잉크젯 소모품
    7.4. 레이저 프린터
    7.4.1. 칼라 레이저 프린터
    7.4.2. 레이저 프린터 소모품
    7.5. 기타 프린터 유형
    7.6. 인쇄 언어 및 기술
    7.7. 네트워크 프린터 대 로컬 프린터
    7.8. Red Hat Enterprise Linux-관련 정보
    7.9. 추가 자료
    7.9.1. 설치된 문서 자료
    7.9.2. 유용한 웹사이트
    7.9.3. 관련 서적
    8장. 재난 방지 계획 세우기
    8.1. 재난 유형
    8.1.1. 하드웨어 고장
    8.1.2. 소프트웨어 고장
    8.1.3. 환경적 요인
    8.1.4. 사람의 실수
    8.2. 백업
    8.2.1. 다른 데이터; 다른 백업 요건
    8.2.2. 백업 소프트웨어: 구입할 것인가 스스로 개발할것인가
    8.2.3. 백업 유형
    8.2.4. 백업 매체
    8.2.5. 백업 자료 보관하기
    8.2.6. 복구 관련 사항
    8.3. 재난 복구 작업
    8.3.1. 재난 복구 계획을 세우고, 테스팅한 후 구현하기
    8.3.2. 백업 사이트 유형: Cold, Warm, Hot
    8.3.3. 사용 가능한 하드웨어와 소프트웨어 준비 과정
    8.3.4. 사용 가능한 백업 준비
    8.3.5. 백업 사이트로 네트워크 연결 가능 여부
    8.3.6. 백업 사이트로 인재 파견
    8.3.7. 정상적인 작업으로 돌아가는 절차
    8.4. Red Hat Enterprise Linux 관련 정보
    8.4.1. 소프트웨어 지원
    8.4.2. 백업 기술
    8.5. 추가 자료
    8.5.1. 설치된 문서 자료
    8.5.2. 유용한 웹사이트
    8.5.3. 관련 서적
    색인
    판권

    출처 : http://www.redhat.com/docs/manuals/enterprise/RHEL-4-Manual/ko/admin-guide/index.html

    2006/09/08 13:39 2006/09/08 13:39
    이 글에는 트랙백을 보낼 수 없습니다
    출처 블로그 > It is a time to run!!!
    원본 http://blog.naver.com/johnrivelt/100026234069
    [ Linux 명령어 ]

    ◈ find  : 파일,폴더 찾기 명령어 ==================
    [root@www /]# find / -name mpayd
    /usr/local/INIpay/src/mpayd
    /usr/local/INIpay/bin/mpayd
    옵션 :  -perm   권한과 일치하는 파일을 찾는다.
      ex) find / -perm 4755
     -name   이름과 일치하는 파일을 찾는다.
      ex) find / -name cat
     -user   유져와 일치하는 파일을 찾는다.
      ex) find / -user mmung2
     -group  그룹과 일치하는 파일을 찾는다.
      ex) find / -group guta

    ◈ man ==================================
    맨페이지 내용을 직접 TEXT편집기로 열어 보면 이상한 문자가 중간에 삽입되어
    TEXT파일로 읽기가 어렵지요. 다음과 같이 저장하면 맨페이지 내용을 TEXT파일로
    간단하게 관리할 수 있습니다.
    /home/aaa/man-printcap.txt 파일에 printcap 맨페이지가 저장됩니다.
    #man printcap | col -b > ~aaa/man-printcap.txt

    ◈ mail ========================================================
    [root@XXX /home]mail ganghs@hanmail.net
    Subject: hi test again
    hello?
    it's test
    한글테스트
    see you
    .
    Cc: ganghosu@netian.com

    ◈ netstat==================================
      ** netstat  : Netstat는 Windows MS-DOS명령어로서 네트워크 포트(TCP,UDP)상태를 확인함으로써 바이러스나 해킹여부를 진단할 수 있다.
     - . 명령어 : netstat [-a] [-e] [-n] [-s] [-r] [-p proto] [interval]
     - . Active Connections Display State표시 내용
     State                         내       용
      LISTEN       서버의 데몬이 떠서 접속 요청을 기다리는 상태.
      SYS-SENT    로컬의 클라이언트 어플리케이션이 원격 호스트에 연결을 요청한 상태
      SYN_RECEIVED 서버가 원격 클라이언트로부터 접속 요구를 받아 클라이언트에게 응답을 하였지만 아직 클라이언트에게 확인 메시지는 받지 않은 상태.
      ESTABLISHED   3 Way-Handshaking 이 완료된 후 서로 연결된 상태
      FIN-WAIT1      CLOSE-WAITFIN-WAIT2 버에서 연결을 종료하기 위해 클라이언트에게 종결을 요청하고 회신을 받아 종료하는 과정의 상태.
      CLOSING   흔하지 않지만 주로 확인 메시지가 전송도중 분실된 상태
      TIME-WAIT  연결은 종료되었지만 분실되었을지 모를 느린 세그먼트를 위해 당분간 소켓을 열어놓은 상태.
      CLOSED     완전히 종료.
       122  netstat -antlp
       123  netstat -antlp | grep 3306
       124  netstat -antlp | grep mysql

    ◈ ntsysv : 기본 데몬 들어가기 ==================
     
    ◈ setup : 서비스 설정 들어가기 ==================
    ◈ tar=========================================================
      - . 옵션
       c - Create  : 새로운 파일을 만드는 옵션.
       x - eXtract : 압축을 해제시키는 옵션.
       v - View    : 압축이 되거나 풀리는 과정을 출력하는 옵션.
       f - File    : 파일로서 백업을 하겠다는 옵션.
      - . 확장장 tar
     *  tar 프로그램을 사용하여 압축된 파일로서,사실 압축이 아닌 여러 파일들이 하나로 뭉쳐져 있는 파일입니다.
      - . 파일 묶는 방법
     * tar [옵션] [기록 파일명] [묶일파일 or 디렉토리]...
     * $ tar cvf Test.tar Test text.txt
     * Test 디렉토리의 모든 파일과 text.txt 파일을 Test.tar라는 하나의 파일로 묶는다.
     * cv 옵션은 파일을 묶는다는 의미이고 f는 뒤에 기록파일명이 온다는 뜻
      - . 파일 푸는 방법
     * tar [옵션] [기록 파일명]
     * $ tar xvf Test.tar
     * Test.tar로 묶여진 기록 파일을 푼다.
     * xv 옵션은 파일을 푼다는 의미이다.
      - . 파일 압축과 복원
     * z 옵션은 사용하면 파일들을 압축하거나 해제할 수 있다.
     * 이때 쓸 수 있는 확장자가 tar.gz 혹은 .tar이다.
      - . 압축 방법
     * $ tar czvf Test.tar.gz Text text.txt
     * Text 디렉토리의 모든 파일과 text.txt 파일을 Test.tar로 묶은 후, Text.tar.gz파일로 압축한다.
      - . 복원 방법
     * $ tar xzvf Test.tar.gz
     * Test.tar.gz 파일의 압축을 풀고 묶음을 푼다.
      -. 잘못 풀린 tar파일 지우기
     * $ tar tfz filename.tar.gz | xargs rm
    ◈ gzip ========================================================  
      - . 옵션
     * gzip 파일이름    - 선택된 파일을 압축한다.
     * gzip -d 파일이름 - 선택된 파일을 해제한다.
      - . 하나의 파일을 압축할때 사용.
      - .  따라서 , 보통 tar로 여러 파일들을 묶은후에 tar파일을 압축한다.
      - . 확장자
     * gz     : gzip 프로그램을 사용하여 압축된 파일입니다
     * tar.gz : tar 프로그램을 사용하여 파일을 합친 후, 또 다시 gzip 을 사용하여 압축을 한 파일이라고 예상할 수 있겠지요?
     * tgz    : 위의 tar.gz 을 합쳐서 tgz라는 확장자로 만들 때도 있답니다.
      - . EX ) tar cvf access_20031125.tar access_log
     gzip access_20031125.tar

    ◈ w(what)=========================================================
    - 현재 system을 사용하고 있는 사용자들의 목록 및 무슨 작업을 하고 있는지 알 수 있다.
      9:50am  up 1 day, 23:55,  2 users,  load average: 0.00, 0.00, 0.00
    USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU  WHAT
    kang     tty1     -                Mon 9am 47:51m 10.70s 10.56s  ssh 211.XXX.176.XXX
    kang2  pts/0    192.XXX.0.XX      9:13am  0.00s  0.12s  0.01s  w
    ◈ grep  : 파일 내용 검색 (단어찾기)==================
     grep code *.jsp : 파일내의 code라는 단어를 찾아내는 명령어

    ◈ source : 변경된 환경 파일 적용시키기 =================
       source 파일이름 : 변경된 내용을 적용시키는 명령어

    ◈ rm  : 파일 , 폴더 삭제 ==================
      - . 파일 하나및 삭제 여부 확인하면서 삭제
       [root@mail mail]# rm hsgang
        rm: remove `hsgang'? y
      - . 파일 한꺼번에 삭제
       [root@mail mqueue]# \rm dfgB*
      - . 해당폴더및 하위폴더,파일 모두 삭제
       [root@mail mqueue]# rm -Rf test
      - . 다운 받은 파일을 untar를 잘못해서 현재 디렉토리에 모든 파일이 풀려질경우
       rm -rf `tar -tvf 문제화일.tar|awk {'print $6'}`
       tgz화일이면 -tvzf 를, bzip2 파일이면 -tvIf로 해결하실 수 있습니다. (디렉토리는 손수 삭제)
       그리고, 위에방법과 동일하게, ls를 이용하여 원하는 단어가 있는 list만 골라서 지우실 수도 있습니다.
        rm -rf `ls -a1|grep '찾을단어'`
     
    ◈ du,df : 하드웨어 사용상태 파악하기 =====================
      - . df : 파일 시스템 마다 사용상태 (df : disk free)
      - . du : 자세히 해당 유저별 파악(du : disk used)

        du -s /home/*/ | sort -nr
      - . [root@XXX src]# du --max-depth=1 /home/ 
      12      /home/aor1234
      12      /home
       [root@XXX src]# du --max-depth=1 /          
     5852    /bin
     2092    /boot
     564     /dev
     3504    /etc
     12      /home
     0       /initrd
     12248   /lib
     0       /misc
     0       /opt
       [root@XXX src]# du -hs (서브디렉토리내의 각각의 용량을 출력하지않고 전체용량만 출력)

    ◈ rpm package 사용하기 ====================================
    - . 기존 설치 리스트 보기
       rpm -qa |grep jdk
    - . 설치시
     [root@XXX src]# rpm -iUh jdk-1.3.1_03.i386.rpm
      ########################################### [100%]
    - . 기존 패키지 있을경우 삭제시
     [root@XXX src]# rpm -iUh jdk-1.3.1_03.i386.rpm
      ########################################### [100%]
      package jdk-1.3.1_03-fcs is already installed
    1: [root@XXX src]# rpm -e jdk
    2: [root@XXX src]# rpm -e --nodeps jdk
    (--nodeps : 의존성검사 안한상태 , jdk : jdk 관련된 패키지 삭제)

    ◈ cp (카피 명령어 사용하기)================================
    - . cp 명령시에 -af 옵션을 주면 link 와 퍼미션이 유지 된다.

    ◈ history (명령어 실행했던 기록 보기) ======================
       history |more

    ◈ w (접속자 리스트 알아내기) ===============================
     who라는 의미 , 어느 접속자가 어떤 명령어를 사용하고 있는지 알수잇다.
     [root@localhost root]# w
       7:45pm  up 8 days,  2:04,  2 users,  load average: 0.27, 0.26, 0.20
     USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU  WHAT
     root     tty1     -                 3Feb03  8days  0.01s  0.01s  -bash
     aora  pts/0    XXX.XX.XXX.XXX    7:43pm  0.00s  0.05s  0.01s  w

      ◈ finger -l (사용자에 대한 상세 정보 파악)=====================
     사용자에대한 상세한 내용을 볼수 있다.
     [root@localhost root]# finger -l
     Login: root                             Name: root
     Directory: /root                        Shell: /bin/bash
     On since Mon Feb  3 17:41 (KST) on tty1   8 days 2 hours idle
     New mail received Tue Feb 11 04:02 2003 (KST)
       Unread since Tue Feb  4 03:20 2003 (KST)
     No Plan.

     Login: aoa                          Name: XXX
     Directory: /home/aoa                Shell: /bin/bash
     On since Tue Feb 11 19:43 (KST) on pts/0 from 218.50.187.23
     No mail.
     No Plan.
      ◈ tty (자신의 터미널 정보를 파악) ==============================
     자신의 터미널 정보를 알수있다.
     [aoa@ftz aoa]$ tty
      ◈ ifconfig (자신의 IP정보 파악) ===============================
     자신의 ip관련 정보를 볼수있다.
     [trainer3@ftz trainer3]$ ifconfig
     eth0      Link encap:Ethernet  HWaddr 00:01:2B:20:13:DA
       inet addr:211.195.119.130  Bcast:211.195.119.191  Mask:255.255.255.192
       UP BROADCAST NOTRAILERS RUNNING  MTU:1500  Metric:1
       RX packets:862 errors:0 dropped:0 overruns:0 frame:0
       TX packets:191 errors:33 dropped:0 overruns:0 carrier:33
       collisions:3 txqueuelen:100
       Interrupt:12 Base address:0xe800  [trainer3@ftz trainer3]$
     /dev/pts/1
      ◈ write (상대방과 대화 하기) ==================================
     상대방과 대화할수있는 방법입니다.
     w 명령어를 통해서 로그인 한 사람의 아이디와 pts번호를 확인한다.
     trainer6 pts/11   61.74.26.3        6:27pm  8.00s  0.00s  0.00s  -sh
     write 명령의 사용법은 다음과 같습니다.
     \" write ID /dev/pts/pts번호 \"
     이제 우리는 새로 접속한 guest 에게 쪽지를 보내겠습니다.
     위에서 w 명령을 사용하여 나타난 guest의 pts의번호를 기억하실 겁니다.
     예를들어 w에서 나온 pts가 pts3 이었다면,\" write guest /dev/pts/3 \"
     라고 입력하면 됩니다. < write guest /dev/pts/번호 를 입력한다. >
     * 대화를 중지하려면 ctrl 키와 d 키를 동시에 누른다.
     [trainer3@ftz trainer3]$ write trainer6 /dev/pts/11
      ◈ wall (모든 사용자에게 메시지 보내기) =========================
     모든 사용자들에게 메시지를 보낸다.
     [trainer3@ftz trainer3]$ wall hi~ howare u?

      ◈ /etc/services : 서버 포트 정보============================
      * 해당 포트의 서비스내용 정보표시
      vi services 명령어로 /etc/services파일을 읽는다.

      ◈  netstat  : 서버 포트정보조회/열기============================
      네트워크상에서 request빈도 체크
      - . netstat -na --ip   => 포트당 연결 정보 알수 있다.
      - . ntsysv 명령어를 치고 해당 데몬을 선택 체크한후에 재부팅
      혹은 setup 명령어를 치고 System service에서 들어가서 체크후 재부팅한다     

      ◈  uptime : 서버의 부팅후 지금까지 시간체크=====================
    $uptime
      4:34pm  up  5:53,  4 users,  load average: 0.42, 0.38, 0.29
     man 페이지를 보면 아시겠지만 4:34pm은 현재 시스템의 시간, 5:53 은 시스템 가동 후 5시간 53분이 경과되었다는 뜻입니다.
       4users는 현재 접속 중인 사용자 수, load average 는 1분, 5분, 15분 동안 발생한 로드의 평균입니다

      ◈  vmstat 1 : 1초간격으로 모니터링============================
    전반적인 프로세스 모니터링 cpu및 memory, buffer, idle등을 프로세스별로 보여줌
     뒤의 옵션은 1초마다 업데이트 하라는 옵션. 옵션이 사용할경우 그냥 한번의 내용만 출력
     [root@www www]# vmstat 1
        procs                      memory    swap          io     system         cpu
      r  b  w   swpd   free   buff  cache  si  so    bi    bo   in    cs  us  sy  id
      0  0  0      0 832388  10564 117252   0   0     1     2  197   168   3   1  96
      1  0  0      0 831076  10564 117252   0   0     0     0  363   213   5   7  88
      3  0  0      0 833800  10564 117252   0   0     0     0  415   217   8   5  87

     다음은 열 표제(heading) 및 설명을 포함하는 vmstat 명령에 의해 작성된 보고서의 예입니다.

     kthr: 샘플링 간격 동안 초당 변경되는 커널 스레드 상태.

     r 수행 대기행렬에 있는 커널 스레드의 수.
     b 대기행렬에서 대기 중인 커널 스레드의 수(대기 중인 자원, 대기 중인 입력/출력).

     메모리: 가상 및 실제 메모리 사용에 대한 정보. 가상 페이지는 액세스될 경우에 활동 중인 것으로 간주됩니다. 1페이지는 4096바이트입니다.

     avm 사용 중인 가상 페이지.
     fre 사용 가능 리스트의 크기.
     주: 실제 메모리의 많은 부분이 파일 시스템 데이타를 위한 캐시로 이용됩니다. 사용 가능 리스트 크기의 양이 적게 남는 일은 드뭅니다.

     페이지: 페이지 결함 및 페이징 활동에 대한 정보. 이 정보는 간격에 지정된 기간동안의 평균이며 초 당 단위 수로 주어집니다.

     re 페이저 입력/출력 리스트.
     pi 페이징 공간에서 들어오는 페이지.
     po 페이징 공간으로 나가는 페이지.
     fr 사용 가능한 페이지(페이지 교체).
     sr 페이지 교체 알고리즘에 의해 스캔되는 페이지.
     cy 페이지 교체 알고리즘에 의한 시간 주기.

     결함 : 샘플링 간격동안 초당 평균 트랩 및 인터럽트 속도.

     in 디바이스 인터럽트.
     sy 시스템 호출.
     cs 커널 스레드 문맥 처리 정보(context) 전환.

     Cpu : CPU 시간에서 사용 장애율 퍼센트.

     us 사용자 시간.
     sy 시스템 시간.
     id CPU 유휴(idle) 시간.
     wa 현재 처리가 대기 중이고 보류하고 있는 디스크 입력/출력이 있는지 결정하는 CPU 주기. 

     디스크 : 동일한 샘플 간격으로 발생한 지정된 물리적 볼륨으로의 초당 전송 횟수를 제공합니다.
     PhysicalVolume 매개변수는 네 개의 이름 중 하나를 지정하는 데 사용할 수 있습니다.
     전송 통계는 지정된 순서에 따라 지정한 드라이브에 주어집니다.
     이 계수는 물리적 장치로 보내는 요청의 수입니다. 읽혀지거나 쓰여진 데이타의 양은 포함되지 않습니다.
     여러 개의 논리적 요청을 한 개의 물리적 요청으로 결합할 수 있습니다

      ◈  top    =====================================================
      cpu및 memory를 프로세스별로 점유율 확인

      ◈ 공유 메모리 정보보기======================================
    [aor1234@db ~]ipcs
    ------ Shared Memory Segments --------
    key       shmid     owner     perms     bytes     nattch    status     
    ------ Semaphore Arrays --------
    key       semid     owner     perms     nsems     status     
    ------ Message Queues --------
    key       msqid     owner     perms     used-bytes  messages   

    ◈ ps 명령어 (프로세스의 현재 상태를 표시합니다)==================
     USER       PID %CPU %MEM   VSZ  RSS TTY      STAT START   TIME COMMAND
      user - 사용자
      pid  - process ID
      %CPU - CPU 사용률
      %MEM - MEM 사용률
      vsz - 가상 메모리에 있는 프로세스의 10진 정수인 킬로바이트 단위 크기를 의미합니다.
         이 필드에 대한 디폴트 헤더는 VSZ입니다.
      tty - 프로세스의 제어 터미널 이름을 의미합니다. 이 필드에 대한 디폴트 헤더는 TT입니다.
      STAT - (s, u, v 플래그) 다음과 같은 프로세스 상태를 포함하고 있습니다.
         - 첫번째 필드
       R  : Runnable
       S  : Sleeping
       D  : uninterruptable
       T  : Stop or Trace
       Z  : Zombie process
         - 두번째 필드
       W  : process has no resident pages
         - 세번째 필드
       N  : process has a positive nice value
      START - 시작일(프로세스 시작일)
      TIME  - 프로세스 실행된 시간
      COMMAND - 실행된 명령어

    ◈ pstree 명령어 (트리구조로 프로세스의 구조를 파악)==============
    [ao234@www ao234]$ pstree
    init-+-AOServer---AOServer---17*[AOServer]
      |-AOServer2---AOServer2---2*[AOServer2]
      |-atd
      |-automount
      |-bdflush
      |-gpm
      |-idp_linux
      |-keventd
      |-klogd
      |-kreclaimd
      |-kreiserfsd
      |-kswapd
      |-kupdated
      |-libhttpd.ep---53*[libhttpd.ep]
      |-mdrecoveryd
      |-6*[mingetty]
      |-mpayd
      |-nessusd
      |-perl---sh---java---java---55*[java]
      |-portmap
      |-proftpd
      |-rpc.statd
      |-scsi_eh_2
      |-sendmail
      |-sshd---sshd---bash---pstree
      |-syslogd
      |-xfs
      `-xinetd

    ◈ date 시스템 날짜,시간 명령어===============================
       - . 시간 알기
       [ao@localhost ~]date
        Wed Jan 29 16:59:59 KST 2003
       - . 시간 설정
       [ao@localhost ~]date -s Wed Jan 29 16:59:59 KST 2003
    ◈ ping 설정 관련 ===========================================
       ping 접근 허용할지 설정 하는 부분
       /etc/sysctl.conf 파일의 내용

       ###########################################
       #아래부분에서 1을 0으로 바꾸시면됩니다.
       #Enable ignoring ping request
       net.ipv4.icmp_echo_ignore_all = 1
       ###########################################
       ###########################################
       #브로드케스트로의 핑거부를 하게설정 되어있습니다.
       #Enable ignoring broadcasts request
       net.ipv4.icmp_echo_ignore_broadcasts = 1
       ###########################################
     
      ◈ whoami ===========================================
     자신이 누구인지 알수 있습니다.
     [root@localhost root]# whoami
     root
      ◈ id ===========================================
     자신에 대한 보다 자세한 정보를 알수있습니다.
     [hsgang@mail hsgang]$ id
     uid=508(hsgang) gid=510(hsgang) groups=510(hsgang)
      ◈ cat /etc/passwd ===========================================
     모든 사용자에 대한 자세한 정보를 알수 있습니다.
     [hsgang@mail hsgang]$ cat /etc/passwd
     root:x:0:0:root:/root:/bin/bash
     orac:x:501:502::/home/orac:/bin/bash
     mys:x:502:503::/home/mys:/bin/bash
      ◈ uname ===========================================
     설치된 LINUX kernel 버젼 확인
     [hsgang@mail hsgang]$ uname -a
     Linux mail.XXXX.co.kr 2.4.2 #1 Thu Apr 18 07:37:53 EDT 2002 i686 unknown
      ◈ /etc/*release  ===========================================
     설치된 OS확인하기
     [hsgang@mail hsgang]$ cat /etc/*release
     Red Hat Linux  release 7.3 (Valhalla)
     [root@imgdb getty]# cat /etc/*release
     White Box Enterprise Linux release 3.0 (Liberation Respin 1)
      ◈ rpm -qa ===========================================
     설치된 패키지 리스트 및 버젼 보기
     [hsgang@mail hsgang]$ rpm -qa
     pygtk-devel-0.6.9-3
     pygtk2-devel-1.99.8-7
     sendmail-XXXXX
      ◈ /proc/cpuinfo  ===========================================
     [hsgang@mail hsgang]$ cat /proc/cpuinfo
     processor       : 0
     vendor_id       : GenuineIntel
     cpu family      : 6
     model           : 8
     model name      : Pentium III (Coppermine)
     stepping        : 3
     cpu MHz         : 601.371
     cache size      : 256 KB
     fdiv_bug        : no
     hlt_bug         : no
     f00f_bug        : no
     coma_bug        : no
     fpu             : yes
     fpu_exception   : yes
     cpuid level     : 2
     wp              : yes
     flags           : fpu vme de pse tsc msr pae mce cx8 sep mtrr pge mca cmov pat pse36 mmx fxsr sse
     bogomips        : 1199.30


      ◈ 프로세스 실행 방법 ===========================================
     - . foreground : 하나의 명령이 실행되어 결과를 출력할때까지 다른 명령을 수행 할 수 없다
     - . background : 하나의 명령을 수행시킨후 그 수행의 종료 이전에 다른 명령을 수행 하는 것
     ---> 명령어 끝에 &로 표시 (cc -o test1 test1.c &)

      ◈ ftp,sqlplus에서의 리눅스 명령어 실행 ======================
     - . SQL> !ls -al       --> 리눅스의 파일 검색을 한다.

      ◈ ln명령어 ======================
      ln -s /disk1/www/apache1.3.24/netian NETIAN

      ◈ env 명령어 ======================
       linux 환경 셋팅 값 보기
      [root@webserver apache_1.3.27]# env
      PWD=/usr/src/apache_1.3.27
      HOSTNAME=webserver
      CLASSPATH=:/usr/java/j2sdk1.4.1_02/lib/tools.jar
      LESSOPEN=|/usr/bin/lesspipe.sh %s
      USER=root
      LS_COLORS=no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:ex=01;32:*.cmd=01;32:*.exe=01;32:*.com=01;32:*.btm=01;32:*.bat=01;32:*.sh=01;32:*.csh=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.bz=01;31:*.tz=01;31:*.rpm=01;31:*.cpio=01;31:*.jpg=01;35:*.gif=01;35:*.bmp=01;35:*.xbm=01;35:*.xpm=01;35:*.png=01;35:*.tif=01;35:
      OLDPWD=/usr/src/apache_1.3.27/src
      MAIL=/var/spool/mail/root
      INPUTRC=/etc/inputrc
      BASH_ENV=/root/.bashrc
      LANG=ko_KR.eucKR
      LOGNAME=root
      SHLVL=1
      SHELL=/bin/bash
      USERNAME=root
      HISTSIZE=1000
      TERM=vt100
      HOME=/root
       PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/bin/X11:/usr/X11R6/bin:/root/bin:/root/bin:/usr/java/j2sdk1.4.1_02/bin
      JLESSCHARSET=ko
      _=/usr/bin/env

      ◈ cat EDITER =============================================
     * cat > test.txt (신규 파일 생성)
     ENTER --> 내용 입력 하기 ---> CTL+D 저장후 종료
     * cat >> test.txt (내용추가하기)
     ENTER --> 내용 입력 하기 ---> CTL+D 저장후 종료
     * cat test.txt (내용 보기)

      ◈ gcc 컴파일 하기 ========================================
     * gcc -o 프로그램이름 소스파일이름
     [trainer8@ftz trainer8]$ gcc -o program.exe program.c
     gcc -o 프로그램이름 소스파일이름

      ◈ ftp 명령어 ================================================
     ftp에서 인식하는 파일은 2가지 방식이 있다.
       일반적인 텍스트 파일은 아스키(ascii) 파일이고,
       기타 실행 파일이나 압축 파일들은 이진(binary)파일로 볼수있다.
       현재 default 설정은 아스키 (ascii) 파일
      * ftp> bin (이진 파일일 경우)
      * ftp> ascii (아스키 파일일 경우)
       - . 파일 다운 받기
      * ftp>get <파일 이름>
      * ftp>mget <파일 이름> <파일 이름> <파일 이름>
       ex)'mget *.tar.gz'
      * ftp>prompt  (파일 전송할때마다 묻지 않는다.)
        ftp>mget
       - . 파일 업로드 하기
      * ftp>put <파일 이름>
      * ftp>mput <파일 이름> <파일 이름> <파일 이름>
       - . 유닉상의 ftp 명령어
      * open        ftp> open <사이트 도메인 or IP>
        사이트 접속할때 사용하는 명령
      * bye, quit   ftp> bye or quit
        사이트 접속을 마칠때 사용하는 명령
      * ?, help     ftp> ? or help
        ftp의 도움말을 볼때 사용하는 명령
      * !           ftp> ! <local 명령어>
        local에 명령어를 부여할때 사용하는 명령
      * ascii, bin  ftp> ascii or bin
        파일 종류 설정할때 사용하는 명령
      * cd          ftp> cd <host 디렉토리명>
        host 디렉토리를 바꿀때 사용하는 명령
      * lcd         ftp> cd <local 디렉토리명>
        local 디렉토리를 바꿀때 사용하는 명령
      * dir, ls     ftp> dir or ls
        디렉토리 내용을 보여줄때 사용하는 명령
      * get         ftp> get <파일명>
        파일 하나를 전송받을때 사용하는 명령
      * put         ftp> put <파일명>
        파일 하나를 전송할때 사용하는 명령
      * mget        ftp> mget <파일명> 복수 선택 가능
        여러 개의 파일을 전송받을때 사용하는 명령
      * mput        ftp> mput <파일명> 복수 선택 가능
        여러 개의 파일을 전송할때 사용하는 명령
      * prompt      ftp> prompt
        mget이나 mput를 사용할때 파일하나를 전송할때마다
        메세지가 나오는데, 이 메세지를 나오지 않게 하는 명령
      * hash        ftp> hash
        파일을 전송할때 얼마 정도 전송되었는지 '#'로 표시되는 명령
      * pwd         ftp> pwd
        local에서 현재의 디렉토리를 나타낼때 사용하는 명령
      * type        ftp> type
        현재의 모드가 ascii인가 bin인가 확인하는 명령
      ◈ nslookup 명령어 ================================================
     [root@img root]# nslookup gettycenter.co.kr
     Note:  nslookup is deprecated and may be removed from future releases.
     Consider using the `dig' or `host' programs instead.  Run nslookup with
     the `-sil[ent]' option to prevent this message from appearing.
     Server:         168.126.63.1
     Address:        168.126.63.1#53
     
     Name:   gettycenter.co.kr
     Address: 218.50.54.26
    ◈ dmesg | more
     하드디스크이 제조사에서부터 펌웨어 버젼 용량까지 자세히 볼 수 있습니다.
    </pre>

    2006/09/08 12:55 2006/09/08 12:55
    이 글에는 트랙백을 보낼 수 없습니다
    Linux  2006/09/08 12:51
    출처 카페 > 네이버 리눅스 유저 그룹 / bloodntear
    원본 http://cafe.naver.com/linuxcare/531

    안녕하세요!

    점심 먹고 와서 잠시 들렸습니다.

    1센트짜리 팁을 말씀 드릴까 해서...,

    hosts.deny  ..., 다 아시죠?  tcp_wrapper 을 설정 할때 이용되는 파일이며

    위치는 /etc/hosts.deny  입니다.

    최근 경향은  패킷필터링을 이용해 보안작업을 많이 하지만 여전히 간단하게 그리고 강력하게

    이용할수 있는것이 tcp_wraper 이죠...,

    그럼 제 서버의 hosts.deny 파일 설정을 살펴 보겠습니다.

    sshd : ALL EXCEPT 211.115.2xx. : spawn echo \
    "login attempt from %c to %s" | mail -s \
    warning bloodntear@xxxx.co.kr






    위 설정을 자세히 말씀 드리면


    일단 sshd 에 대한 모든 접근을 막고    단! 211.115.2xx 대역만 풀며, spwan을 주어


    211.115.2xx 대역 외에 프레임에서 sshd 접속을 시도 할시  제 개인 메일로 경고메세지를


    발송 하도록 되어있습니다.


    위에서 %c는 클라이언트 정보이며  %s는 서버 정보입니다.


    그러니까 어느 썩을놈이 어디에 접근 했다라는 메일이 warning 이라는 제목으로 저에게 날아온다 이거죠.


    좀더 자세한 사항은


    man 5 hosts_access 를 참조 하여 주세요~


    자 이제 여러분이 다양하게 응용 해 보실 차례입니다. 헤헤헤


    수고 하십시오~



    덧니:  저번달 부터 심심해서 저렇게 설정 해 놓았더니만  하루에 3~4통의 메일이 오더군요.


    거의 대 부분이 외국에서 많이들 들어 오는데,  영어가 잘 안 되지만  메일을 보내서 따지면 답장이 오더군요....,  뭐 거의 대 부분 sorry... 죠


    근데 울나라는 ....,  감감 무소식이고...,


    뭐 그렇습니다.

    2006/09/08 12:51 2006/09/08 12:51
    이 글에는 트랙백을 보낼 수 없습니다
    출처 블로그 > 엔지니어
    원본 http://blog.naver.com/find999/150002211630

    Log File에 대한 포괄적 접근


    초기에 Log file의 분석 및 기록에 대한 흥미는 주로 이익의 추구에 의해 고무되어왔다.
    이외에도 System log와 같은 주요 File들에 대한 장기 보관, 관리 작업과 이전에는 관심을 받지 않았던 Hacker활동에 대한 분석과 Server 증설, 예측 및 자원 재분배를 위한 사용량 측정 등과 같은 원인이 있다.

    대부분, 자사 Web Site의 가치 증가를 접속 수의 증가로 확인시키기를 원한다. 이 자료는 해당 Site로 통하는 Traffic 양을 통해 광고 비용과 Hosting 서비스의 가격 결정에 대한 판단 자료로 고객, 광고주, 투자자 그리고 관리자에게 보여주는데 꼭 필요하다.

    추가적으로, 수년간 비공식적 시스템 관리자로 일하며, syslog와 Built-in Log Rotation System에 대한 다양하지만, 이해하기 쉽지않은 구성 Parameter를 분석한 결과, 문제를 포괄적으로 접근하고, 주요 System Event를 저장, 통보하며 원시 Data를 영구적으로 보관하는 시스템을 구성하고자 한다.


    Log 대상


    Server에 의해 제공되는 모든 서비스들은 기록 및 감시되어져야 한다. UNIX Host는 sendmail, Web Server, ftp, telet 및 cron과 같은 User 서비스들을 제공한다. 또한 login의 검증과 User Shell의 생성과 같은 Kernel 자체에서 제공되는 통합된 System
    서비스도 제공한다.

    특정 서비스의 Event에 대한 무관심으로 서비스는 사용되지도 않고, 제공될 수 없다고 생각한다.
    최소한, 사용되지않은 서비스의 존재는 Server의 성능에 불필요한 영향을 주며, 어떤 서비스가 실제 필요한 것인지를 판단하기 어렵게 한다. 최악으로는, 내버려둔 서비스가 보안 취약점으로 활용되는 통로로 제공된다.

    예를 들어, System 설치 동안 모든 것을 설치하려고 하는데, 이는 추가될 서비스 및 Utility들을 찾아내기 위한 추가 시간을 줄이고 향후 필요 시에 설치를 피하기 위해서이다. 그러나, 이 전체 설치 선택 시에는 일반적으로 NFS와 rshd/rlogind와 같은 보안에 취약한 서비스가 함께 설치, 활성화된다.

    이러한 문제의 중요성을 파악하고 있는 관리자는 여러 방법으로 제공되어지는 서비스를 알 수 있어야 한다.

    1. 모든 사용자에 의해 수행되는 전체 Process를 보기위해 ps 명령어를 Verbose Option
    과 함께 사용(각 UNIX 마다 ps aux 또는 ps auxwww로 다름)
    2. 현재 Port의 상태를 보기 위해 netstat -a 명령어 사용
    LISTEN 상태는 Connection 시도에 대해 기다리는 서비스를 나타내고, ESTABLISHED
    상태는 서비스가 연결된 Client에서 현재 사용되고 있음을 나타낸다.
    3. inetd Daemon에 의해 요청될 때마다 시행되는 서비스에 대하여 /etc/inetd.conf 점검
    4. rc Startup File을 점검 (각 UNIX마다 /etc/rc.* 와 같은 곳에 다르게 위치함)
    5. System에 이미 존재하는 Log file의 Timestamps, 크기 및 내용을 점검
    (/var/log 또는 /var/adm 과 같은 곳에 위치함)

    서비스를 Disable시키는 것에 대한 내용은, 이 주제의 범위에 포함되지 않지만, 주로 /etc/inetd.conf의 해당 Line를 Comment화 시키거나, 서비스의 Package를 제거, 또는 자동적으로 시작되지 않게 rc Directory에서 Startup Scrip를 이동시키는 방법 등이
    이용된다.


    Syslog를 사용하는 Service


    sendmail, innd(Internet News Daemon) 및 named(DNS Server Daemon)과 같은 확증된 UNIX 서비스는 표준 Logging 기능인 Syslog를 기본으로 하는 Built-in Logging 기능을 가지고 있다. Syslog Daemon은 다른 서비스에서 사용되어지는 서비스이다. 이러한 Daemon들은 Syslog에게 Log 항목을 만들도록 요청하더라도 Syslog는 특별히 이런 메시지를 처리하는 방법이 언급되어있지 않으면, 이런 요청을 무시한다.

    예를 들어, sendmail의 Source Code에 syslog() 라는 UNIX C Library Function의 호출이 곳곳에 쓰여지는데, 이 Function은 syslogd에 다음과 같이 구성된 메시지를 보낸다.

    1. Log 항목을 요청하는 Program의 Type (즉, mail, news 또는 일반 Daemon 등)
    2. 메시지의 우선 순위 (즉, info, notice, err, 또는 emerg)
    3. Log 항목의 내용

    Sendmail의 Daemon은 수신되는 Mail을 Accept 또는 Reject시 info 항목을 보내고, Client와 Connection이 끊어질 경우 notice 항목을 보낸다. Sendmail은 수행 중 성공 또는 실패 작업에 따라 메시지의 항목을 만드는 경우가 수백가지가 된다.그러므로, syslog에 연관된 Daemon의 경우, 문제는 서비스가 Log 항목들을 생성하는 방법이 아니라, 이들을 적절하게 처리하기 위해 어떻게 syslog를 구성하느냐에 있다.


    Syslog 구성


    Syslog 구성 File은 /etc/syslog.conf이며, 다음과 같다.

    #
    # Log everything (except mail and auth message) of level info or higher.
    #
    *.info;mail.!=info;authpriv.! /var/log/messages

    # Log all the mail messages in one place.
    mail.*/var/log/maillog
    # Log authorization messages in a protected file.
    Authprive /var/log/secure
    # Broadcast emergency messages to all users.
    *.emerg *

    이 구성 File의 첫번째 항목은 mail과 인증 서비스를 제외한 모든 서비스에서 발생시키는 info에서 emergency 의 우선순위를 가지는 메시지를 /var/log/messages에 저장한다. Sendmail은 아주 많은 항목의 메시지를 발생시켜 실제 중요한 메시지들을 쉽게 확인할 수
    없게하며, 인증은 Password와 같은 민감한 정보를 가질 수 있기 때문에 이것이 일반적인
    형태이다.

    첫번째 항목은 또한 특정 이름이 지정되지 않은 Daemon에 의해 생성된 메시지도 저장한다. 이와 같은 Daemon 중에 named라는 DNS Server Daemon은 해당 사용에 대한 시간 통계를 발생시키는데(Compile될 때 Enable 되어야 함) 좋은 예 중에 하나이다. 이와 같은 이유로, daemon.info 메시지를 별도의 Log File에 기록하고 Main log file에 대해서는 daemon.!=info를 사용하여 이를 배제시키는 것이 바람직하다.

    두번째 항목은 모든 mail 메시지를 /var/log/maillog로 보내며, 세번째 항목은 인증 메시지를 /var/log/secure로 보낸다. 마지막 항목의 Destination Field의 "*"은 도움을 표시하는 구실로써 현재 Login 되어 있는 모든 사용자의 화면에 표출되게 한다.

    여러 Machine들이 각각의 Machine에서 개별적으로 Log를 보관하지 않고, Loghost 라고 하는 하나의 syslog server로 보낼 수 있게 구성할 수 있다. 구성이 올바르게 되었을 때, Loghost는 다른 Machine에서 보내는 UDP Packet를 기다리며, 이 메시지를 Local Log file에 기록하게 된다. 다음의 절차는 Red Hat Linux에 대해 이런 기능을 설정하여 준다.

    1. Loghost에서, syslogd를 수행시키는 rc Startup Scrip에서 -r Parameter를 추가
    한다.
    2. 각각의 Machine에서, syslog.conf File에 다음을 추가한다.
    #
    # Send all message to the loghost, And let it filter them
    #
    ** @loghost

    그러나, 이런 기능은 외부 침입자에게 Loghost가 서비스 공격 및 자신의 Log file에 대한 보호를 하기 어렵게 만든다. 이런 기능은 Loghost가 방화벽의 보호 아래에 있거나, 특정 syslog Client에 제한적 접근을 할 수 있는 ipfwam 또는 ipchains와 같은 Kernel
    방화벽 기능과 연계되어 쓰일 경우에만 사용된다.

    syslog에 대한 man Page에서 해당 syntax, 여러 구성 예제 그리고 서비스 형태의 전체 List 및 보안 Level에 대해 다루고 있다. 여러 가능한 정보를 보기 위해, syslog, syslog.conf 그리고 syslogd의 man Page를 보는 것이 필요하다. syslog는 각각의 서비스에서 발생시키는 Client Library Function이고, syslogd는 syslog.conf에 의해 구성되는 Daemon이라는 것을 기억하여야 한다.


    Syslog 문제 해결


    syslog가 원하는 장소에 Message를 쓰지 못할 경우, 점검해야 될 것이 몇 가지 있다.

    첫째, 구성 File을 다시 읽을 수 있게 syslogd를 재시작시킨다. syslogd를 재시작시키는 한 방법은 syslogd에 Hangup Signal을 보내는 것인데, ps 명령어로 syslogd의 pid를 찾아 kill -HUP <pid>를 수행한다. 다른 방법으로는, Linux 또는 Solaris 환경에서 /etc/rc.d/init.d/syslog restart와 같이 Startup Scrip를 restart Parameter로 수행하는 것이다.

    다음은, 목적지 File이 존재하는지를 점검하여야 하는데, syslogd가 수정을 하기위해 반드시 존재하여야만 한다. touch <filename> 명령어로 Empty File을 만들 수 있다. syslog가 재시작되면, 해당 File에 적정한 메시지가 기록될 것이다.
    다른 Host로 메시지를 보낼 경우, 수신할 Host에서는 이 메시지를 받을 수 있게 구성되어야 한다. 각각의 특정 UNIX Version에 대해 이를 구성하는 방법에 대한 특정 명령을 알기 위해 syslogd의 man Page를 참조하라.


    Syslog를 사용하지 않는 서비스


    Web server는 자체 독립적인 Logging 구조를 가지는 좋은 예제가 된다. Web server log는 사용량이 많은 Machine에서는 하루에 몇 MegaBytes정도로 아주 큰 것이 보통이다. Log에는 요청된 모든 File의 이름과 요청을 수행할 때 발생된 오류 등을 보관한다. 추가적인 구성으로 요청한 Browser Type과 현 Page에서 사용자가 마지막으로 참조한 Page를
    보관할 수 있다.

    Apache Web server에 대한 Logging는 httpd.conf에 의해 구성되는데, /usr/local/etc/httpd 또는 표준 Red Hat RPM Distribution에서는 /etc/httpd/conf에 일반적으로 위치한다. 정규적으로 log를 사용하기 위해 쓰여져야 할 Line은 다음과 같다.

    LogFormat "%h %l %u %t \"%r\" %>s %b" common
    LogFormat "%(Referer)i -> %U" referer
    LogFormat "%{User-agent}i" agent

    CustomLog logs/access_log common
    CustomLog log/referer_log referer
    CustomLog log/agent_log agent

    LogFormat은 Format 특정자의 조합을 대표하여 나타내는 common, referer 및 agent와 같이 alias를 정의하는데, 여기에서 요청하는 Host를 나타내는 %h, 요청 받은 Page를
    나타내는 %r등이 있다. 이 Alias들은 결과적으로 CustomLog 항목에 사용되는데, Apache가 특정 Log File에 어떻게 항목을 쓰는지를 정의한다. (Log Directory는 목적지가 "/"로 시작하지 않을 경우, 구성 file에서 설정된ServerRoot Directory에 상대 Direcory임을 주의)
    위 구성은 Apache가 Pages accesses를 access_log에 쓰도록 하고있다. 현 Page를
    요청하기 바로 전, Browser에 의해 보여진 최종 Page를 referer_log에, 요청을 한 Browser Type을 agent_log에 기록하도록 되어 있다.

    여러 개의 Log file들에 해당 항목을 분산하는 방법 이외에, 이들을 하나의 Log File에 둘 수 있다. 다음의 정의는 각 요청에 대한 모든 정보를 access_log로 둘 수 있다.
    LogFormat "%h %l %u %t \"%r\" %>s %b
    \"%(Referer)i\" \"%{User-agent}i\"" combined

    CustomLog logs/access_log combined

    Apache에서의 오류에 대한 Logging은 오류의 정도에 따라 info, warn, error와 같은 여러 Level을 가지며, syslog와 비슷하다. 오류 Log에 보내지는 메시지의 최소 우선
    순위는 LogLevel에서 직접 조정된다.

    ErrorLog logs/error_log
    LogLevel warn

    Web Server가 자체 Log file을 유지하게 구성이 되면, 이 File들의 크기를 조정하여야 하며, 해당 File System이 Full이 되지 않게 조심하여야 한다. Server가 많이 사용
    되거나, 오류 Log가 갑자기 아주 크질 수 있게 되는 구성상의 문제가 있을 경우, 이와 같은 현상은 빨리 발생이 된다. 이 때는 오래된 Log File들을 삭제하는 대신, 체계적으로 이들을 압축, 보관하는 것이 필요한데 이것에 대한 내용이 아래에 계속된다.


    Log File들의 감시


    여러 Machine들에 대한 Log file의 정리 내용이 주어지면, 각각의 Machine에서 어떠한 일들이 벌어지고 있는지에 대해 알 수 있는 가장 좋은 방법은 각 Log file의 최신 항목들을 살펴보는 것이다. 어떤 시스템 관리자는 각각에 대해 tail -f <logfile> 을 사용하여 최신의 정보를 감시하는 것을 선호하는데, 이보다 좀더 편리하게 항목이 쓰여질 때, 주기적으로 이에 대해 통보 받을 수 있는 방법이 있다.

    첨부에 있는 logtail.pl script는 Log file이 최종 점검된 이후 발생된 항목에 대해
    통보한다. (Sys Admin Web Site인 www.sysadminmag.com 또는 ftp.mfi.com
    /pub/sysadmin 에서도 구할 수 있음)
    Usage: logtail.pl <logfile> <logposfile>

    <logfile> Parameter는 관찰될 Log file이며, <logposfile>은 수행될 때마다 <logfile>의 크기를 저장할 수 있는 기록가능한 File이다. 이 Script는 이전에 통보된 Log 부분은 생략하며, 최신의 항목만을 stdout에 표출시킨다.
    각 log file에 대해 logtail.pl을 cron job으로 수행시킬 때, 시스템 관리자는 최종 실행까지 만들어진 모든 항목이 포함되는 mail을 받게 될 것이다.

    #
    # Check the system log every day
    #
    55 3 * * * /usr/local/bin/logtail.pl /var/log/messages /var/log/messages.last

    #
    # Check the security log every day
    #
    56 3 * * * /usr/local/bin/logtail.pl /var/log/secure /var/log/secure.last

    #
    # Check the mail log every day
    #
    57 3 * * * /usr/local/bin/logtail.pl /var/log/maillog /var/log/maillog.last

    logtail.pl Script가 하루에 한번만 수행될 경우, 수행 시간을 Log Rotation이 되기
    직전에 두는 것이 중요한데(아래 참조), 이는 현 Log file이 Clear될 때, 모든 항목들이 전부 포함될 수 있도록 하기 위해서 이다. 매일 각 Machine에서의 Log File을 읽는 것은 번거러운 작업일 수 있으나, 메시지의 우선 순위에 따라 다른 Log로 적절히 분류되어 있으면 단순 정보가 아닌 메시지들은 특별한 관심을 가지고 읽을 필요가 있으며 이들은 logtail.pl Cron Job을 좀더 자주 수행하여(매분 정도) 새로운 몇 항목을 점검할 수 있다. 더 높은
    우선순위 File에서의 문제를 파악하기 위해, 단순 정보 File은 독립적으로 읽을 수 있다.

    이 Section에서 마지막으로 swatch라는 log에서 특정 Pattern을 점검하는 Utility를 소개한다. swatch는 원하는 Pattern(예를 들어 "panic")을 찾을 경우, Terminal Bell, mail 전송, 또는 다른 Program을 실행할 수 있다.
    Swatch는 http://www.stanford.edu/group/itss-css/security/Bestuse/software.html 에서 구할 수 있다.
    (첨부 참조)

    특정 machine 과 서비스에 대한 swatch 구성은 원하는 Log 항목과 관심을 가질 대상에 대한 약간의 경험 지식이 있어야 한다. 이 경험은 원시 Log File을 logtail.pl로 관찰하는 것이 가장 최선의 방법이다.


    Log File의 Rotating


    Log Rotation은 현재 log File을 다른 이름으로 저장하고, 현재 위치에서 다시 시작한다. 표준 UNIX 구성에서는 3~4 세대까지 Log file의 가지는데, 예를 들어 현재 Log file이 message 이면, 바로 이전은 message.1이고 계속 이런 형태로 진행된다.

    Solaris는 System Log Rotating에 대한 간단한 방법이 제공된다. 기본적으로 Root Account의 Cron 작업은 아래와 같은 간단한 Shell Scrip를 수행시키는데, 이는 현 System Log를 Save File로 이름을 변경하고, 기존 저장된 파일은 더 오래된 저장 File 이름으로 이동시키며, 결과적으로 가장 오래된 기존 File은 삭제 시킨다.

    # Solaris usr/lib/newsyslog
    #
    LOG=messages
    cd /var/adm
    test -f $LOG.2 && mv $LOG.2 $LOG.3
    test -f $LOG.1 && mv $LOG.1 $LOG.2
    test -f $LOG.0 && mv $LOG.0 $LOG.1
    mv $LOG $LOG.0
    cp /dev/null $LOG
    chmod 644 $LOG
    ...
    kill -HUP `cat /etc/syslog.pid`

    Red Hat Linux에서는 더욱 유연성을 가지는 logratate system을 소개하였다. 이것에
    의해 Log File의 전체 Set는 최상위 Level인 /etc/logrotate.conf 구성 File에 의해 제어 받을 수 있고, /etc/logrotate.d에 있는 개별적인 서비스에 관련된 구성 File에 의해 제어 받을 수 있다. 기본적으로는, logrotate 구성 file에 기록된 어떤 log file도
    주단위로 Rotate되고 4세대까지의 예전 Log file을 가질 수 있다. logrotate.conf에서 압축 기능이 설정되었을 경우, Rotation 동안 오래된 Log file들은 압축될 것이다.
    단지 하나의 구성 File이 전체 System Log에 대한 Rotation을 책임진다.

    # /etc/logrotate.d/syslog
    #
    /var/log/messages {
    postrotate
    /usr/bin/killall -HUP syslogd
    endscript
    }
    ...
    # similar entries for /var/log/{secure, maillog, spooler}

    이들 전략들은 모두 보관되는 log File들의 이름에 제한이 있는데, 단순히 원래 이름에 숫자의 확장자만을 더 붙이는 것이고, 위치 또한 현재 File과 동일 위치에 저장된다. 만약 보관되는 File이름이 해당 날짜에 따라 지정되고, 이들 보관 File들이 영구 저장에 별도로 할당된 영역으로 이동될 수 있으면 더욱 좋을 것이다. 다음 Section 은 이러한 Log File 보관과 Log Rotation 기능의 보완 방법에 대해 기술한다.


    Log File의 보관


    첨부에 있는 archive.pl Script는 임의의 File을 한 Directory에서 다른 Directory로 이동 또는 복사를 하고, 이동 또는 복사 중에 압축 또는 이름을 Timestamp에 의거하여 변경한다. 이 Script는 System에서 개별적으로, 또는 기존의 Log Rotation 설계와 통합되어 사용될 수 있다.

    Usage: archive.pl -- from <srcfile> --to <destdir>
    [ -- suffix <pattern>] [--ifexists]
    [--overwrite] [--compress]
    [--keepsrc] [--keepdate]
    [--keepbase] [--keepsuffix]

    선택 Parameter들은 Script가 보관전에 원시 또는 목적 File들이 존재하는지를 확인할 것인가, 그리고 보관되는 이름을 어떵게 지정할 것인가를 제어 할 수 있는 Boolean 스위치를 나타낸다.

    기본적으로, archive.pl은 '\..*' pattern 을 사용하여 확장자를 Matching하여 첫번째 Dot(.) 이후의 모든 것을 확장자로 인식한다. boot.log.0이라는 File에 대해서는 기본적으로 boot.19990801로 보관되어 바람직하게 되지 않는다. 이 File을 boot.log.19990801로 보관하기 위해, 확장자 Pattern을 '\.\d*'를 사용하여 숫자로 된 확장자 만을 인식할 수 있게 할 필요가 있다.

    Solaris newsyslog Script(위에서 언급된)는 가장 오래된 Log File을 제거하지 않고
    별도의 Directory에 Timestamp에 의해 이름을 변경하여 보관하도록 보완되어 있다. 다음과 같은 Line 이 Script의 첫 줄에 삽입되어 질 수 있다.

    /usr/local/bin/archive.pl -- from $LOG.3 --to archive
    --ifexists --compress -keepdate -keepbase
    이 Line은 messages.3을 현재 Directory에서 archive/ Directory로 이동시키며, Timestamp에 따라 이름이 변경되고 마지막으로 archive/messages.19990801.gz 라는 file로 압축되어 진다.

    Linux 환경에서, 유사하 명령을 logrotate 구성 File에 삽입시킬 수 있다. 다음은 수정된 Apache rotation File이다.

    # Enhanced /etc/logrotate.d/apache
    #
    /var/log/httpd/access_log {
    prerotate
    /usr/local/bin/archive.pl \
    -- from /var/log/httpd/access_log.3 \
    -- to /var/log/httpd/archive \
    -- ifexists --compress --keepdate \
    -- keepbase --suffix '\.\d*'
    endscript
    postrotate
    /usr/bin/killall -HUP httpd
    endscript
    }

    /var/log/httpd/error_log {
    prerotate
    /usr/local/bin/archive.pl \
    -- from /var/log/httpd/error_log.3 \
    -- to /var/log/httpd/archive \
    -- ifexists --compress --keepdate \
    -- keepbase --suffix '\.\d*'
    endscript
    postrotate
    /usr/bin/killall -HUP httpd
    endscript
    }

    Apache의 logrotate file에 대한 이 수정은 access_log.3 과 error_log.3을 Rotate되어 삭제되는 대신, 예를 들어 access log는 /var/log/httpd/archive/access_log.19990801.gz로 저장되어 Log File 분석 Tool에 의해 계속 점검될 수 있다.


    저장된 Log File들의 분석


    일단 Log file들이 영구적으로 보관되면, 시스템 관리자는 System 활동, 보안 침해, 구성상 문제 와 같은 이전 내용을 분석할 수 있다. System에서의 정상적, 비정상적 활동에 대한 유용한 자료를 가지고, 시스템 관리자는 swatch(이전 언급한)를 새로운 System의 Event를 감지하고 경고를 줄 수 있게 구성할 수 있다.

    보관된 Web Server Log와 관련하여 Server의 시작 시점에서 부터의 모든 Web server의 이전 활동에 대한 요약을 지속적으로 유지하는 것은 특별히 가치 있는 시도이다. Server의 활동에 대한 최신 요약을 고객에게 제시할 수 있다면 Web Site에 광고를 고려하는 고객이나, Web site의 Traffic을 이용하고자 하는, 또는 전체 Domain을 구매하려고 하는 잠재적인 투자자에게 깊은 감동을 줄 수 있을 것이다.

    이전 개요를 구성하기 위해서는 On-line으로 모든 이전 access log를 저장하고 이들을 시간대별, 또는 일별로 Analog와 같은 분석 Tool을 써서 처리하여야 한다.
    (첨부 FILE 또는 http://www/statslab.cam.ac.uk/~sret1/analog/ 참조)

    Analog 는 Web Server Log File들을 점검하여 Server Directory, 특정 Files, Browser Domains, 그리고 Browser Type에 따라, Access되어지고 몇몇 형태로 구성되어진 Page 및 files의 수 개요를 만들어 낸다.

    Analog 구성 File은 일반적으로 /usr/local/etc/httpd/analog/analog.cfg 또는 제공된 RPM에 의해 다른 곳에 저장된다. 이 구성 File은 분석될 Logs의 위치가 수정되고, Web Server Log가 기록되는 방법을 지정하는 Format 형식을 가져야만 한다. LOGFORMAT은 Apache 구성 File에서의 LogFormat line에 해당한다.

    # /usr/local/etc/httpd/conf/analog.cfg
    #
    LOGFORMAT (%S %j %u [%d/%M/%Y:%h:%n:%j] \
    %j %r %j" %c %b "%f" "%B" )
    LOGFORMAT COMMON

    LOGFILE /var/log/httpd/access_log*
    LOGFILE /var/log/httpd/archive/access_log*

    HOSTNAME "Company X"
    LOGO companyx.gif

    BROWSER ON
    FULLBROWSER ON
    REFERER ON
    REFSITE ON
    OUTFILE "home/httpd/html/status/current.html"

    DNSFILE "/usr/local/etc/httpd/analog/dnsfile.txt"
    DNS WRITE

    이 구성 File은 Analog가 httpd/ 와 httpd/archive/ Directory에 있는 Log Files을 해석하는 방법을 나타내고, Browser Types과 참조 Sites에 따라 Analog에서 다른
    개요를 만들 수 있게 하고 있다. 해당 개요의 결과는 수행되는 Web Site 계층의 status/ Directory에 기록 된다.

    최신 개요에 더하여, 최종적으로 완성해야 할 것은 Web Site 주기 동안 증대에 대한 이전 검토의 일별 개요를 보관하는 것이다. 다음 명령어는 archive.pl Script를 사용하여 Analog에서 발생되는 현재의 개요를 timestamp를 포함하는 다른 이름으로 변경을 시킨다. 그 결과 status/ Directory 아래에 모든 일별 개요들이 나타나게 된다.

    /usr/local/bin/archive.pl \
    --from /home/httpd/html/status/current.html \
    --to /home/httpd/html/stats -keepsrc \
    --keepdate --keepsuffix -suffix '\.html'

    보관된 개요들의 집합은 19990801.html 과 같은 이름을 가질 것이다.


    결 론


    자신의 Server에 대해 누구도 hacking을 시도한 적이 없다고 자랑하는 시스템 관리자는 자신의 System을 감시하는 방법을 모른다고들 한다. 일반 UNIX 서비스는 시스템 Log에 그들의 문제 유무와 활동 내용을 이미 기록하고 있고, 이는 시스템 관리자가 적어도 매일 점검해야 하는 가장 중요한 Files이다. 이번 Article에서 다룬 Filtering, 감시, 그리고 Logs의 보관 방법들은 UNIX 서비스에 대한 보안 위협과 일반적 문제를 찾아내는 중요한 Tool을 제공한다.
    Server의 Traffic에 재정이 의존되는 Web Site에 대해, 세심한 Log File 관리를 통해 얻은 기술이 바로 이익으로 나타난다는 것을 잊지 말아야 할 것이다.

    2006/09/08 12:45 2006/09/08 12:45
    이 글에는 트랙백을 보낼 수 없습니다
    출처 카페 > 컴하우스 / 아저씨
    원본 http://cafe.naver.com/comhouse/741
    *라벨명으로 마운트 하기
    일반적으로 신규 생성한 파티션을 마운트할 때, 다음과 같이 합니다.

    마운트 장치파일명 마운트 포인트
    [root@css ~]# mount /dev/hdaX /new

    하지만, 해당 파티션에 라벨을 주면, 더욱 간단하게 마운트 할 수 있습니다.
    파티션에 라벨을 주시려면 e2label 이란 명령어를 사용하시면 됩니다.
    E2label은 파티션에 라벨을 부여하거나, 라벨명을 확인할 때 사용됩니다.
    라벨을 부여한 이후부터는 좀 더 간단히 마운트하 실 수 있습니다.

    [root@css ~]# e2label /dev/hdaX /new
    [root@css ~]# mount /new

    일반적으로 라벨명은 이해를 쉽게 하기 위해서 디렉토리의 절대경로명은로 지정합니다.

    파티션의 라벨명은 rescue 모드에서 작업할 때도 유용하게 사용될 수 있습니다.
    2006/09/08 12:44 2006/09/08 12:44
    이 글에는 트랙백을 보낼 수 없습니다
    출처 블로그 > 명랑폐인
    원본 http://blog.naver.com/spy1217/40024565876

    *기존 서버 복제하기(rsync 이용-시간 상당히 단축된다)

    A 원본 서버, B 클론 서버

    cd로 리눅스 부팅(systemrescuecd-x86-0.2.15.iso)

    ip 세팅
    ]# net-set eth0

    sshd 가동]# /etc/init.d/sshd start

    패스워드 설정
    ]# passwd root
    (sshd 가동, pass 설정되면 원격에서 작업 가능하다)

    hdd는 mount되지 않기 때문에 기존 정보랑은 상관없음

    부팅한 B서버에서 기존 파티션 정보 다 날리고

    새로운 파티션 정보 수정하구 포멧(가급 A와 같은 정보로 세팅, A서버의 파티션 별 용량 보다 넉넉하게는 세팅해야 함)

    B 서버에 임의의 디렉토리를 만든다음에 각 파티션 별루 마운트

    예를 들어 A파티션 정보가 아래와 같다면

    Filesystem            Size  Used Avail Use% Mounted on
    /dev/sda1             981M  324M  607M  35% /
    /dev/sda2              14G  372M   13G   3% /home
    /dev/sda4             981M   17M  915M   2% /tmp
    /dev/sda3             3.9G  247M  3.5G   7% /var

    b 서버에 /test 를 생성한담에 mount
    mkdir /test, mkdir /test/var, /test/tmp, /test/home
    /test/            /dev/sda1
    /test/var         /dev/sda3
    /test/tmp         /dev/sda4
    /test/home        /dev/sda2

    그리구 rsync명령

    rsync --exclude="proc/" -avPze ssh root@A서버명:/ /test/

    proc만 제외시킨다

    chroot /test /bin/bash
    (/test dir을 /로 인식)

    grub라면 grub-install /dev/hda, lilo라면 lilo

    lable 사용한다면 e2lable로 파티션 재인식 시킨다(안그럼 kernel panic난다, lable 사실 상당히 짜증난다, 가급적이믄 장치명으로 설정하자)

    exit (다시 원래 상태로 돌아감)

    아까 proc을 exclude했으니 proc디렉토리 생성해주고 reboot
    mkdir /test/proc

    ※ mysql 데이터 복제시 mysqld stop 후에 rsync한다.(mysql root dir 권한 reset)

    ==========================================================================


    2001년 08월 31일 10시 14분 22초
    *********************************************************************
    호스트간의 데이터 동기화를 위한 rsync 설정
    *********************************************************************
    제목 : 호스트간의 데이터 동기화를 이한 rsync 설정
    작성자 : 문태준(taejun@taejun.pe.kr http://www.taejun.pe.kr)
    작성일 : 2000. 4. 12
    *********************************************************************


    참고자료 :
    http://www.taejun.pe.kr/board2/read.php3?table=linuxinfo&no=28&page=1
    rsync 이용 동기화하기 (박명순님 pms89@hitel.net 글)

    레드햇 리눅스 6 서버 - 파워북 출판사, 번역판중 rdist 관련 자료

    man page - rsync(1), rsyncd.conf(5)


    0. 들어가며
    서버 클러스터링으로 여러대의 서버를 운영하는 경우 각 호스트간의 자료를
    공유해야합니다. 공유기법에는 NFS도 있지만 NFS의 경우는 네트웍 트래픽을 무척이나
    높이므로 그 대신 rdist나 rsync를 이용할 수 있습니다. 이 글에서는 rsync를
    이용하여 각 호스트간의 자료를 동기화하는 방법을 설명합니다.


    1. rsync란 무엇인가?
    rsync는 rcp와 비슷한 동작을 하는 프로그램으로 rcp보다 더 다양한 옵션이 있고, 더
    효율적으로 데이터를 전송합니다. (출발지와 목적지 사이에 다른 부분만을 전송)
    파일크기의 변화나 시간의 변화등을 이용 동기화를 합니다.
    주요 특징은 다음과 같습니다.

    ㅇ 링크, device, 소유자, 그릅, 허가권 복사 지원
    ㅇ GNU tar와 비슷한 exclude, exclude-from 옵션 지원
    ㅇ rsh 또는 ssh 등 사용가능
    ㅇ root 권한이 필요없음
    ㅇ anonymous 또는 인증 rsync 서버 지원(미러링에 유용함)

    2. rsync 설정
    ㅇ 일반적인 배포판의 경우 프로그램이 들어있음. 다음과 같이 확인후 없으면
    프로그램 설치
    # rpm -qa | grep rsync
    rsync-2.3.1-2

    ㅇ rsync 2.3.1 이전 버전의 경우 "보안버그"가 있으므로 이전 버전이
    설치되어있다면 반드시 "2.3.1 이상 버전으로 업데이트"해야함

    ㅇ 동기화에 사용하는 프로토콜 : rsh, ssh를 사용할 수 있음. 이를 사용하지
    않더라도 원격 rsync 서버에 TCP 포트 873을 이용 접속할 수 있음. 873 포트를 이용할
    경우 inetd.conf 에 추가로 설정을 해야합니다.

    rsync stream tcp nowait root /usr/bin/rsync rsyncd --daemon

    --daemon은 대몬모드로 시작한다는 이야기이며 /etc/rsyncd.conf파일을 필요로
    합니다.

    또한 /etc/services 에 다음 내용이 있는지 확인하고 없으면 추가합니다.

    rsync 873/tcp # rsync



    추가하고 나서는 inetd 대몬을 다시 띄워야겠지요?
    # kill -HUP inetd_pid

    만약 ssh나 rsh를 사용하는 경우에는 inetd.conf를 수정할 필요가 없습니다.



    3. 설정파일 : /etc/rsyncd.conf
    예제를 보겠습니다. 다음 예제의 호스트를 www1이라고 하겠습니다.

    # cat /etc/rsyncd.conf

    [web]
    path = /home/www/htdocs
    comment = web
    uid = nobody
    gid = nobody
    use chroot = yes
    read only = yes
    hosts allow = www2.taejun.pe.kr
    max connections = 3
    timeout 600

    [web] 서비스명
    path 서비스할 디렉토리
    comment 설명
    uid 파일전송하는 사용자의 id. 기본값은 nobody
    gid 파일전송하는 사용자의 그룹 id. 기본값은 nobody
    use chroot 위의 path를 root 디렉토리로 사용. 보안상 필요함.
    read only 읽기전용
    hosts allow 호스트별 접속허용. 기본값은 all host이므로 보안을 유지하려면 반드시
    설정함
    max connections 동시접속자수
    timeout 클라이언트에서 접근시 타임아웃시간. anonymous 로 운영하는 경우 설정을
    해야 클라이언트가 죽었을 때 서버에서 접속을 해체할 수 있음.

    * put(클라이언트에서 서버로 올리는 경우)을 사용하기위해서는 read only = no 로
    설정을 해야됩니다.

    이 외에도 여러 가지 옵션이 있지만 실제로은 위의 옵션정도가 자주 사용됩니다. 현재
    rsync 자체적으로 암호화는 지원하지 않으며 사용자 인증만 지원합니다. 추후에는
    SSL을 지원할 예정이며, 만약 암호화를 사용하려면 ssh를 사용하면 됩니다.


    4. rsync 사용하기
    (접근 클라이언트를 www2.taejun.pe.kr이라고 가정함)

    rsync -avz --delete www1.taejun.pe.kr::web /home/taejun/~public_html

    -a는 아카이브 모드. 심볼릭 링크, 속성, 퍼미션, 소유권 등 보존
    -v 상세하게 보여움
    -z 전송시 압축을 함.

    --delete www1.taejun.pe.kr에서 web에 해당하는 내용(/home/www/htdocs)을
    ww2.taejun.pe.kr 의 /home/taejun/~public_html 로 가져오면서 www1(서버)에는 없는
    내용은 www2에서 삭제함. 만약 www2 차원에서 생성한 파일을 보관하려면 옵션 없앰.


    rsync -avz foo:src/bar /data/tmp
    다음 내용은 foo라는 호스트에서 src/bar 안의 내용을 지역호스트의 /data/tmp
    디렉토리로 옮기는 것입니다.

    여기서 알아두어야 할 것이 있습니다.
    만약 위에서 src/bar/ 라고 하면 어떻게 달라질까요? bar 는 그 디렉토리 자체까지
    포함해서 가져옵니다. 그렇지만 bar/ 라고 뒤에 디렉토리 표시를 하면 그
    디렉토리안에 있는 내용만 가지고 옵니다. 상당히 결과가 달라질 수 있겠지요.

    또한 : 과 ::의 차이는 무엇일까요? : 은 rsh나 ssh를 사용하는 것이며 :: 은 rsync
    자체에서 지원하는 기능을 이용 자료를 가져오는 것으로 873 TCP 포트를 사용합니다.
    상당히 헷갈리지요? : 에서 기본은 rsh를 이용하지만 -e ssh 옵션을 이용하여 ssh를
    사용할 수 있습니다. ssh를 사용하려면 비밀번호를 입력해야하는데 이것도 파일형태로
    만들어서 옵션에서 지정해주면 됩니다. 이에 대해서는 따로 설명하지는 않으며 man
    page를 참고하세요.

    -avz 등의 옵션이 있는데 이중 중요한 옵션만 설명을 하겠습니다.

    -v verbose (자세하게 보여줌)
    -a archive mode

    -u update only(새로운 파일을 덮어쓰지 않음)
    --delete 서버쪽에 없고 클라이언트쪽에만 있는 파일을 지움
    -z compress (전송시 압축을 함)
    --daemon 대몬 모드로 운영함 (이건 inetd.conf에 지정할 때 필요함)



    -a 는 -rlptg 와 동일합니다.
    -r recursive (하위 디렉토리까지 포함)
    -l 심볼릭 링크 재생성
    -p 퍼미션 업데이트
    -t 변경시간 전송 (이것이 없으면 전송한 시간으로 바뀜)
    -g 그룹이름 변경

    일반적으로 rsync는 길이와 time-stamp를 이용 파일을 비교합니다.

    이제 쉘 스크립트를 만들고 cron에 등록을 하여 주기적으로 데이터를 동기화하면
    됩니다.



    5. 마치며
    기본적으로 암호화를 지원하지 않는 것이 아쉽고 약간은 불편합니다. ssh를 쓰는 것도
    한가지 대안이지만 비밀번호를 넣어야하고 일일이 넣기 귀찮으면 파일형태로 지정할
    수 있는데 이런 방법도 보안문제가 생길 여지가 있겠지요.

    위에서 말을 한 대로 예전 패키지에는 보안 버그가 있으니 반드시 최근 패키지로
    업데이트를 하는 것! 잊지 마세요.

    ---- rsync.txt 내용 --------------------------


    *********************************************************************
    호스트간의 데이터 동기화를 위한 rsync 설정
    *********************************************************************
    제목 : 호스트간의 데이터 동기화를 이한 rsync 설정
    작성자 : 문태준(taejun@taejun.pe.kr http://www.taejun.pe.kr)
    작성일 : 2000. 4. 12
    *********************************************************************


    참고자료 :
    http://www.taejun.pe.kr/board2/read.php3?table=linuxinfo&no=28&page=1
    rsync 이용 동기화하기 (박명순님 pms89@hitel.net 글)

    레드햇 리눅스 6 서버 - 파워북 출판사, 번역판중 rdist 관련 자료

    man page - rsync(1), rsyncd.conf(5)


    0. 들어가며
    서버 클러스터링으로 여러대의 서버를 운영하는 경우 각 호스트간의 자료
    를 공유해야합니다. 공유기법에는 NFS도 있지만 NFS의 경우는 네트웍 트래
    픽을 무척이나 높이므로 그 대신 rdist나 rsync를 이용할 수 있습니다. 이
    글에서는 rsync를 이용하여 각 호스트간의 자료를 동기화하는 방법을 설명
    합니다.


    1. rsync란 무엇인가?
    rsync는 rcp
    ......생략
    이글은 문태준님의 강좌에서 펀글임다 참고 하세요 ^^

    글주신분 : 박명순(pms89@hitel.net)
    글을 제공해주신 박명순님께 감사드립니다.



    rsync설정 기초편입니다.

    rsync는 두 호스트사이의 데이터의 동기화를 위해서 사용되는 방법입니다.
    서버측과 클라이어트측의 동기화에 많이 사용이 되며 기본적으로는 파일크기의
    변화나 시간의 변화로 파일의 변경을 알고 데이타 동가화를 합니다.
    즉 변경이 없는 파일은 복사를 하지 안습니다. 그리고 복사하는 도중에 압축
    모드를 사용하나봅니다. 무지빨라요 단 io작업이 무지막지해서 로드가 많이
    걸립니다.

    R2의 경우 rsync는 들어있는데 보안문제로 inetd.conf에는 설정이 없습니다.
    따라서 추가적으로 설정을 해부어야 합니다.

    rsync stream tcp nowait root /usr/bin/rsync rsyncd --daemon

    위와 같은 줄을 추가해주시고
    /etc/rc.d/init.d/inet restart
    하시면 되고요
    다음에
    /etc/rsyncd.conf라는 rsync 서버호스트 설정 파일을 편집합니다.
    내용 예제는
    [web]
    path = /home/httpd/htdocs
    comment = web
    uid = root
    gid = root
    use chroot = yes
    read only = yes
    hosts allow = 211.40.179.62 211.40.179.60
    max connections = 2
    설명
    [web] 서비스명 (?)
    path 서비스할 디렉토리
    comment 설명
    uid 접근자에대한 권한 보통은 nobody임
    gid 상동 단 그룹
    use chroot 서비하는 디렉토리를 루트디렉토리로 사용하는거 보안상
    read only 읽기전용 ( rsync 는 get발고 put도 있음 )
    hosts allow 호스트별 접속허용
    max connections 동시접속
    * put을 사용하기위해서는 read only = no 로 설정을 해야됩니다.

    클라이언트측 설정

    GET
    /usr/bin/rsync -av --delete www1.csnet.co.kr::web /home/httpd/htdocs
    이러면 다운로드하고 서버에없어진거는 지우고....

    PUT
    /usr/bin/rsync -av --delete /home/httpd/htdocs www1.csnet.co.kr::web
    이러면 업로드됩니다.
    아직 다운에서는 uid gid 모두다 유지가 되는데 업로드는 uid는 유지가
    되는데 gid는 root로 바뀌는 현상이 있습니다. 잘모르겠습니다.
    참 설정에서 read only=no 가 설정되어야 합니다.

    서버측 공유명(맨페이지에서는 모듈이라고 하는거 같네요)을 보려면
    rsync www1.csnet.co.kr::
    만하면 공유명이 나옵니다.

    rsync -a www1.csnet.co.kr::web
    은 웹이라는 공유폴더의 파일리스트가 표기됩니다.

    rsync -av www1.csnet.co.kr::web 으로하면 파일리스트가 현재디렉토리에
    list라는 파일로 저장이 됩니다.

    -a 아카이브모드
    -v 자세한 내용을 보여줌
    --delete 서버에서 사라진 파일이 있으면 클라이언트측에서도 지움
    기본설정에서는 지우지는 안는다.
    www1.csnet.co.kr rsync서버이름
    web 서비스명
    /home/httpd/htdocs 로컬측 디렉토리

    대충 이런식으로 사용을 하면 됩니다.

    참고: 다음은 보안 설정을 추가하는 방법입니다
    rsync -av --delete -e ssh ~/public_html/ webserver:/home/rwa2/public_html/

    2006/09/08 12:43 2006/09/08 12:43
    이 글에는 트랙백을 보낼 수 없습니다
    Linux  2006/09/08 12:43
    출처 블로그 > 연금술사
    원본 http://blog.naver.com/blueruby/60022141621

    리눅스 표준시간 설정


    system-config-date 패키지 설치
    timeconfig 명령이용


    system-config-date 패키지가 안되어 있다면
    shell> cp -af /usr/share/zoneinfo/Asia/Seoul /etc/localtime

    2006/09/08 12:43 2006/09/08 12:43
    이 글에는 트랙백을 보낼 수 없습니다
    출처 블로그 > 마하나임의 세상쏘기
    원본 http://blog.naver.com/almdri1004/50005058382
    사용하는 서버의 /etc/crontab 에 아래와 같은 줄이 있습니다.

    0 0 * * 1 root rdate -s time.kriss.re.kr && clock -w

    그러니까 매주 한번씩 타임서버인 time.kriss.re.kr에서 시간을 읽어와서
    rdate -s 옵션으로 저장하고(man rdate 참조), clock 명령으로
    CMOS 시간값에 저장합니다.(man clock 참조).

    타임서버는 가까이 있는 신뢰할만한 타임서비스 서버를 적으면 좋겠지요.

    경험에 의하면 타임서버가 외국서버라 해도 시간대에 관계없이(타임서비스
    자체가 시간대정보까지 포함하는가 보죠.) 잘 작동합니다.

    *-- 몇몇 타임서버 -----------*

    time.kriss.re.kr
    time.bora.net
    time.nuri.net
    time-a.nist.gov


    제가 아는바로는 rdate -s 명령이나 date -s명령은 궂이 구분을 짓자면
    소프트웨어적인 시간을 설정하는 것으로 압니다.
    따하서 하드웨어 시간(CMOS)까지 조정해줘야(clock -w) 리부팅후 조정시간이
    반영되겠지요.

    하두 오래전 일이라 매뉴얼페이지를 다 뒤져볼수는 없지만 어렴풋한 기억으론
    위의 말이 맞을것 같습니다.

    제 경우 1주일에 한번씩 재설정하고 있긴 하지만(제 보드도 TYAN 입니다.)
    항상 몇초에서 몇분씩 틀리긴 하더군요.  어긋나는 시간을 최소화하자는 취지에서
    매주 1회 돌리고 있답니다.

    타임서버에서 자주 시간값을 읽어와 재설정하는것도 좋긴 하지만
    간혹 cron이나 at등의 스케줄에 영향받는 프로그램을 고려해야할것입니다.

    예컨대 이런 문제도 발생할 수 있겠지요.

    10시 1분에 일일 자료백업을 하도록 cron에 설정해두고, 10시 정각에
    타임서버에 접속하여 시간을 재설정했는데 타임서버의 시간이 10시 2분이었다고
    치죠.
    그렇다면 10시 1분은 그냥 지나친 결과이기 때문에 예정된 작업은 수행되지
    않을겁니다.

    아무튼 date 명령으로 출력된 시간을 하드웨어(CMOS)에 기록하기 위해서는
    clock -w 명령을 사용하면 되고, 리부팅시 초기에 CMOS 시간을 참조할 것이므로
    조정된 시간이 반영될테지요.


    [lawwal@ ~]# echo;echo -n "System : "; date;echo -n "CMOS : ";clock -r;
    echo -n "Time Server : "; rdate time.kriss.re.kr;echo

    System : Tue Sep  7 10:50:44 KST 1999
    CMOS : Tue Sep  7 10:50:57 1999  -0.562593 seconds
    Time Server : [time.kriss.re.kr]   Tue Sep  7 10:50:55 1999


    [lawwal@ ~]# rdate -s time.kriss.re.kr && clock -w


    [lawwal@ ~]# echo;echo -n "System : "; date;echo -n "CMOS : ";clock -r;
    echo -n "Time Server : "; rdate time.kriss.re.kr;echo

    System : Tue Sep  7 10:53:33 KST 1999
    CMOS : Tue Sep  7 10:53:34 1999  -0.171902 seconds
    Time Server : [time.kriss.re.kr]   Tue Sep  7 10:53:33 1999
    2006/09/08 12:42 2006/09/08 12:42
    이 글에는 트랙백을 보낼 수 없습니다
    Linux  2006/09/08 12:36
    출처 블로그 > .
    원본 http://blog.naver.com/mnnclup/80019079402
    SELinux와 아파치 HTTP의 디렉토리 접근에 대한 이해를 돕기 위해서, 위의 베타 문서 중 "3. 간단한 설정" 편을 번역해 보았습니다.

    길게 썼지만, ls -aZ로 확인하고, chcon으로 보안 식별자를 변경하고, 에러가 나면 /var/log/messages를 본다는 것이 요약입니다. (ls -aZ는 SELinux가 활성화되어 있어야만 동작합니다.)

    인용:

    아주 간단한 하나의 웹사이트-html파일은 /var/www/html에 있지만, CGI 스크립트, 가상 호스팅, 그리고 다수의 웹 관리자는 없는 그런 웹 사이트-를 가지고 있다고 가정하자. CGI등의 고급 주제는 "6. 가상 호스팅 , CGI 스크립트 그리고 suEXEC"에서 다루어 질 것이다.

    보안 목표는 아파치 HTTP는 오직 정적인 웹 내용물을 읽기만 할 뿐이며, 내용물을 작성하거나, 데이타베이스 소켓에 접속하거나, 사용자의 홈 디렉토리를 읽거나 하는 등의 다른 것들을 하지 않도록 확인하는 것이다.

    기본 설정으로, 페도라 SELinux 정책은 아파치 HTTP가 CGI 스크립트를 수행하고, 사용자의 홈 디렉토리 내용을 직접 읽는 것을 허용한다. 이러한 조건을 비활성화가 하려면, system-config-securitylevel을 실행하고, SELinux 탭을 누른후, Apache 밑에, "Allow httpd CGI support" 그리고 "Allow httpd to read home directories"를 지정하지 않는다. 다른 방법으로는, 터미널에서 다음의 명령을 실행해도 된다.

    코드:

    setsebool httpd_enable_cgi false
    setsebool httpd_enable_homedirs false


    SELinux 와 boolean들에 대해서는 "8.1 간단한 사용자 맞춤 설정"에서 논의될 것이다.

    "2. 시작하기"에서, 아파치 HTTP 프로세스는 httpd_t로 꼬리표가 붙었고 그래서 SELinux 제한이 적용되었음을 언급하였다. SELinux에서는, 시스템의 모든 대상, 즉 일반적인 파일, 네트워크 포트, 프로세스, 파일 디스크립터 등이 그것과 연관된 보안 식별을 가진다. 여기에 간단한 웹사이트의 파일에 대한 식별이 있다.

    코드:

    ls -aZ /var/www/
    drwxr-xr-x  root     root     system_u:object_r:httpd_sys_content_t .
    drwxr-xr-x  root     root     system_u:object_r:var_t          ..
    drwxr-xr-x  root     root     system_u:object_r:httpd_sys_script_exec_t cgi-bin
    drwxr-xr-x  root     root     system_u:object_r:httpd_sys_content_t error
    drwxr-xr-x  root     root     system_u:object_r:httpd_sys_content_t html
    drwxr-xr-x  root     root     system_u:object_r:httpd_sys_content_t icons
    ls -aZ /var/www/error
    drwxr-xr-x  root     root     system_u:object_r:httpd_sys_content_t .
    drwxr-xr-x  root     root     system_u:object_r:httpd_sys_content_t ..
    [...]
    drwxr-xr-x  root     root     system_u:object_r:httpd_sys_content_t include
    -rw-r--r--  root     root     system_u:object_r:httpd_sys_content_t noindex.php
    -rw-r--r--  root     root     system_u:object_r:httpd_sys_content_t README


    다시 한번, 식별의 세번째 요소인, httpd_sys_content_t 타입이 중요한 부분이다. 보안 정책은 httpd_t(아파치 HTTP)가 이 타입으로 된 파일과 디렉토리를 읽는 것을 허용하며, 이는 etc_t와 같은 다른 중요한 타입들도 마찬가지다.

    지금 시점에서,
    http://localhost를 웹 브라우저를 띄어, 기본 페도라 코어나 레드햇 엔터프라이즈 리눅스 페이지가 보이는지 점검해보자. 다음으로, /var/www/html 안에 hello.html 같은 새로운 파일을 만드는 것을 시도해 보고 그것은 웹 브라우저에서 볼 수 있는지 확인해보자.

    코드:

    $ echo "Hello world" > /var/www/html/hello.html
    $ ls -aZ /var/www/html/hello.html
    -rw-r--r--  root  root  system_u:object_r:httpd_sys_content_t hello.html


    /var/www/html에 새로운 파일이 만들어질 때, 기본으로 httpd_sys_content_t 타입이 상위(부모) 디렉토리로부터 상속됨을 유념하자. 이 방법으로 아파치 HTTP (httpd_t로 수행중인)가 새 파일을 읽을 수 있다.

    system-config-securitylevel을 사용해 아파치 HTTP가 홈 디렉토리를 읽을 수 있도록 설정된 SELinux boolean을 커 놓았을 때, 이는 httpd_t domain이 user_home_dir_t를 읽을 수 있는 권한이 없도록 한다. user_home_dir_t는 사용자의 홈 디렉토리에 지정된 타입이다. 아파치 HTTP는 상위의 디렉토리(사용자 홈 디렉토리를 의미)를 사용할 수 없으므로, 아파치 HTTP는 사용자 홈 디렉토리에 있는 웹 내용물을 포함한 어떤 파일도 사용할 수 없게된다.

    코드:

    ls -aZ /home/walters
    drwx------  walters  walters  root:object_r:user_home_dir_t    .
    drwxr-xr-x  root     root     system_u:object_r:home_root_t    ..
    -rw-r--r--  walters  walters  user_u:object_r:user_home_t      anaconda-ks.cfg
    -rwxr-xr-x  walters  walters  user_u:object_r:user_home_t      anaconda.log
    ...


    아마 갖게 될지도 모르는 한가지 문제는 mv와 cp 명령의 차이점이다. 새로운 내용물(about.html)을 웹 사이트에 추가한다고 가정하자. about.html을 홈 디렉토리에서 작성을 한 후,
    코드:

    sudo mv /home/walters/about.html /var/www/html

    로 나중에 그것을 웹 디렉토리로 옮기면, 그 화일에 연관된 식별을 기본적으로 저장하게 되는 것이 문제다. cp는, 새로운 파일을 생성하므로, 부모(웹) 디렉토리의 식별을 상속한다. 예를 들어, 위에 언급된 mv의 결과는 이것이다.

    코드:

    ls -aZ /var/www/html/
    drwxr-xr-x  root     root     system_u:object_r:httpd_sys_content_t .
    drwxr-xr-x  root     root     system_u:object_r:httpd_sys_content_t ..
    -rw-r--r--  root     root     system_u:object_r:httpd_sys_content_t index.php
    -rw-r--r--  walters  walters  system_u:object_r:user_home_t about.html


    아파치 HTTP를 수행하고, 웹 브라우저에서 about.html을 열려고 시도하면, "금지된(Forbidden)" 에러가 난다. 그리고, /var/log/messages를 보면 아래와 비슷한 메세지를 볼 것이다.

    코드:

    Oct 19 17:54:59 hostname kernel: audit(1098222899.827:0): avc:  \
    denied  { getattr } for  pid=19029 exe=/usr/sbin/httpd \
    path=/var/www/html/about.html dev=dm-0 ino=373900 \
    scontext=root:system_r:httpd_t tcontext=user_u:object_r:user_home_t \
    tclass=file


    이 메세지가 말하는 것은 httpd_t가 user_home_t 타입을 가지는 파일을 접근할 수 없었다는 것이다. /home/walters의 목록에서 본 것처럼, user_home_t는 그 홈 디렉토리의 안의 많은 파일에 사용된다. 기본 보안 정책은 httpd_t가 user_home_t 타입에 대한 어떠한 접근도 허용하지 않는다.

    파일의 식별을 바꾸어 아파치 HTTP가 그 파일을 읽도록 하려면, chcon을 사용하여 할 수 있다.

    코드:

    chcon -t httpd_sys_content_t /var/www/html/about.html


    화일의 보안 식별자가 제대로 되었는지 확인하자.

    코드:

    ls -aZ /var/www/html/
    drwxr-xr-x  root     root     system_u:object_r:httpd_sys_content_t .
    drwxr-xr-x  root     root     system_u:object_r:httpd_sys_content_t ..
    -rw-r--r--  root     root     system_u:object_r:httpd_sys_content_t index.php
    -rw-r--r--  walters  walters  system_u:object_r:httpd_sys_content_t about.html


    chcon은 유닉스 명령 chmod와 비슷하다. 예를 들어, 한 디렉토리와 그 안의 모든 파일들의 타입을 재귀적(디렉토리 하위의 모든 것에 대해)으로 변경한다면, 다음과 같이 한다. -R 스위치는 재귀적으로 작동하고, -h 선택은 symlinks 따르지 말도록 (거의 모든 경우에 원해지는) 하는 것을 뜻한다.
    코드:

    chcon -R -h -t httpd_sys_content_t /path/to/directory


    파일의 꼬리표를 변경할 수 있는 다른 명령은 restorecon이다. 이 명령은 파일의 기본 꼬리표로 복귀하고자 할 때 유용하다. 예를 들어,
    코드:

    restorecon -v -R /var/www/

    수행해서 /var/www/ 디렉토리의 모든 파일 꼬리표를 재설정할 수 있다. 내부적으로, restorecon은 /etc/selinux/targeted/contexts/files/file_contexts 파일을 읽으며, 그 파일은 파일 경로를 보안 식별자에 대응한 정규식의 집합을 가지고 있다.
    2006/09/08 12:36 2006/09/08 12:36
    이 글에는 트랙백을 보낼 수 없습니다
    웅쓰:웅자의 상상플러스
    웅자의 상상플러스
    전체 (379)
    게임 (5)
    영화 (2)
    기타 (23)
    맛집 (5)
    영어 (2)
    대수학 (3)
    형태소 (5)
    Hacking (9)
    Linux (112)
    HTML (48)
    Application_developing (48)
    Web_developing (102)
    Window (11)
    «   2024/11   »
              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
    1. 2016/01 (1)
    2. 2015/12 (3)
    3. 2015/10 (3)
    4. 2015/03 (2)
    5. 2015/01 (4)