2010년 5월 12일 수요일

SU 명령 제한한

일반사용자들이 수퍼유저계정으로 변경을 하려면su라는 명령어를 쓰게된다.



만약 su명령을 몇몇 사람들에게만 쓸수 있게 하려한다면 다음과 같이하면 된다.

]# vi /etc/pam.d/su

#%PAM-1.0

auth sufficient /lib/security/pam_rootok.so

# Uncomment the following line to implicitly trust users in the "wheel" group.

#auth sufficient /lib/security/pam_wheel.so trust use_uid

# Uncomment the following line to require a user to be in the "wheel" group.

#auth required /lib/security/pam_wheel.so use_uid => 주석을 제거한다.

auth required /lib/security/pam_stack.so service=system-auth

account required /lib/security/pam_stack.so service=system-auth

password required /lib/security/pam_stack.so service=system-auth

session required /lib/security/pam_stack.so service=system-auth

session optional /lib/security/pam_xauth.so

위 설정은 wheel 그룹에 속한 사용자들만이 su 명령을

쓸수 있다는 것을 말한다.

wheel은 이러한 목적으로 사용될 수 있는 특별한 계정이다. 따라서 wheel 이외의 그룹은 위와같이 사용될 수없다.

위 설정에서 wheel 그룹에 속한 사람만이 su 명령을 사용할 수있게 했으므로 su 명령을 써야하는 계정이 있다면 wheel 그룹에 추가시켜 주어야한다. 만약 in4mania 라는 계정을 wheel 그룹으로 추가하려면 다음과 같이한다.

다음 명령에서 G는 그룹을 나타내며, 10은 wheel 에 해당하는 값이다.

]# usermod -G10 in4mania

sysstat

[root@localhost src]# wget http://perso.orange.fr/sebastien.godard/sysstat-9.0.6.1.tar.gz
[root@localhost src]# tar -xvzf ./sysstat-9.0.6.1.tar.gz
[root@localhost src]# cd ./sysstat-9.0.6.1
[root@localhost src]# ./configure --prefix=/usr/local/sysstat
[root@localhost sysstat-9.0.6.1]# make && make install

설치 자체는 매~우 간단하다.

log data 를 위한 파일 생성.

[root@localhost bin]# ./sar -A
Cannot open /var/log/sa/sa15: 그런 파일이나 디렉토리가 없음
해당하는 위치에 sa15 파일 생성.

[root@localhost bin]# touch /var/log/sa/sa15
[root@localhost bin]# ./sar -A
Invalid system activity file: /var/log/sa/sa15

활용법

sysstat슈트에 포함된도구-iostat,sar,sa1,sa2,sadf,sadc,pmstat
(http://perso.orange.fr/sebastien.godard/)


1.iostat

CPU 에 대한 통계와 I/O장치와 디스크 파티션에 대한 통계 테이터들을 보여주는것으로 iostat명령을 처음수행하게되면 시스템이 부팅되고 난이후로부터의 정볼르 보여주고,두번째부터는 이전에 명령을 수행한 시점부터의 통계테이터를 보여줍니다.

2.mpstat

CPU와 연관된 통계테이터들을 보여주는 프로그램으로 둘이상의 cpu가 존재할 경우 0번cpu가 첫번째 cpu를 의미하여 모든프로세서의 활동에 대한 평균을 나타낸다.
%irq 인터럽트를 처리하기위해 소모된 cpu시간의 백분율
%soft 소프트웨어적으로 발생한 인터럽트를 처리하기 위해 소모된 cpu시간의 백분율
%intr/s cpu에 유입된 인터럽트의 초당개수

3.sadc

system Activity data Collector의 이니셜로 된명령으로 말그대로 지정된 시간 간격으로 지정된 횟수만큼 시스템 성능과 관련된 데이터들을 이진파일형태로 저장합니다.데이터가 저장된 파일은 통상 /var/log/sa/sa??형태로 기록되며 ??은 명령이 수행된 날짜를 나타낸다.
ex)1초간격으로 10개의 시스템 활동관련 데이터 레코드를 /tmp/datafile에기록하는명령은
# /usr/lib/sa/sadc 1 10 /tmp/datafile

4.sadf

sadc나 sar등의 명령에 의해 수집된 데이터들은 이진파일형식이므로 vi에디터와 같은 편집기로는 그내용을 확인할 수없다.이때 사용하는 명령이 바로 sadf이며 다양한 형식으로 출력할 수있다.
(주의 할점은 sar,sadc등의 명령과 동일한 버젼이 상ㅇ되어야 정상적으로 데이터파일을 읽을수 있다.)
데이터 파일을 지정하지 않으면 /var/log/sa/sa??파일이 입력파일로 사용된다.

5.sar

시 스템활동정보를 모으고, 리포트를 작성하거나 저장하는 명령어로,sysstat슈트의 핵심이라고 할수 있으며,운영체제에서 누적하고 있는 각종 시스템 활동 카운터의 내용을 볼수 있는 도구이다. 뿐만아니라 sadc,sar등의 명령에 의해 생성된 데이터파일을 이용해서 분석할 수있는 보고서를 작성하는데도 사용된다.

option

Usage: ./sar [ options ] [ [ ] ]
Options are:
[ -A ] [ -b ] [ -B ] [ -C ] [ -d ] [ -h ] [ -m ] [ -p ] [ -q ] [ -r ] [ -R ]
[ -S ] [ -t ] [ -u [ ALL ] ] [ -v ] [ -V ] [ -w ] [ -W ] [ -y ]
[ -I { [,...] | SUM | ALL | XALL } ] [ -P { [,...] | ALL } ]
[ -n { [,...] | ALL } ]
[ -o [ ] | -f [ ] ]
[ -i ] [ -s [ ] ] [ -e [ ] ]


[root@localhost bin]# ./sar -h
Usage: ./sar [ options ] [ [ ] ]
Main options and reports:
-b I/O and transfer rate statistics
-B Paging statistics
-d Block device statistics
-I { | SUM | ALL | XALL }
Interrupts statistics
-m Power management statistics
-n { [,...] | ALL }
Network statistics
Keywords are:
DEV Network interfaces
EDEV Network interfaces (errors)
NFS NFS client
NFSD NFS server
SOCK Sockets (v4)
IP IP traffic (v4)
EIP IP traffic (v4) (errors)
ICMP ICMP traffic (v4)
EICMP ICMP traffic (v4) (errors)
TCP TCP traffic (v4)
ETCP TCP traffic (v4) (errors)
UDP UDP traffic (v4)
SOCK6 Sockets (v6)
IP6 IP traffic (v6)
EIP6 IP traffic (v6) (errors)
ICMP6 ICMP traffic (v6)
EICMP6 ICMP traffic (v6) (errors)
UDP6 UDP traffic (v6)
-q Queue length and load average statistics
-r Memory utilization statistics
-R Memory statistics
-S Swap space utilization statistics
-u [ ALL ]
CPU utilization statistics
-v Kernel table statistics
-w Task creation and system switching statistics
-W Swapping statistics
-y TTY device statistics

6.sa1,sa2

이두명령어는 쉘스크립트로 sa1경우에는 시스템의 활동과 관련되 데이터를 매일모으고 이진형식의 파일로 저장하는 명령어이며, sa2경우에는 매일의 보고서를 /var/log/sa/디렉토리에 기록하는 명령입니다.
sa1경우는 sdac명령을 활용하도록 작성된명령으로 crontab에 등록되어 많이 사용된다.
반면 sa2같은경우는 sar명령을 활용하도록 작성된 스크립트로 역시 crontab에 등록되어사용된다.


#매시간마다 sadc 데이터 저장.
#*/60 * * * * root /usr/lib/sa/sa1 1 1

*/60 * * * * root /usr/local/sysstat/lib/sa/sa1 1 1

#23:59분에 sar 데이터 저장.
#53 23 * * * root /usr/lib/sa/sa2 -A

59 23 * * * root /usr/local/sysstat/lib/sa/sa2 –A


캐쉬 메모리가 과다하게 많다고 느껴질때 캐쉬 삭제.

[root@localhost ~]# echo 3 > /proc/sys/vm/drop_caches

alias

홈 디렉토리 안의 .bashrc에 추가

alias delcaches='echo 3 > /proc/sys/vm/drop_caches'

2010년 5월 11일 화요일

리눅스 디스크 용량

du -h --max-depth=1 .

--max-depth=1 현재 단계의 바로 한단계 아래 용량 정보까지 보기
--max-depth=2 현재 단계의 바로 아래 두단계 용량 정보까지 보기


du -h --max-depth=1 *
* 이 들어가면 두단계 아래도 나온다..?

2010년 5월 3일 월요일

crontab

]#crontab -l <-- 크론의 설정내용을 출력함
]#crontab -e <-- 설정 내용을 수정함
]#crontab -r <--설정 내용을 삭제함
-----------------------------------------------------------------------------

cron은 일정관리 명령어로서 일정관리 파일(crontab)에 따라 주기적인 명령을
수행한다. 이 일정관리 파일에는 명령이 수행될 시간, 수행할 로그인명 등이
포함된다. 시스템에 따라서 /usr/lib/crontab이나 /etc/crontab파일이 있으며
crontab디렉토리가 따로 존재할 수도 있다.

crontab은 7개의 필드로 구성되는데 6번째 필드는 생략하여도 무방하다.
+----------------------------------------------+
| 분 | 시간 | 날짜 | 달 | 요일 | 사용자 | 명령 |
+----------------------------------------------+
상기의 형식에서 사용자필드는 명령이 수행될 사용자명을 지정하고 명령필드는
수행하고자 하는 명령어와 인자를 적어주면 된다. 시간을 나타내는 1~5번째의
필드는 그 시간들을 무시하고자 할때 *로 표시하게 된다. 요일필드의 경우에는
월요일부터 금요일까지를 나타내며 순서대로 1~5로 표시하게 된다. 그리고 하나의
필드에 중복된 내용을 기재하고자 하면 콤마(,)로 구분하면 된다. 연속된 내용을
기록하고자 하면 하이픈(-)을 이용하여 기간을 나타낸다. 또한 슬래쉬(/)를 사용한
내용도 있는데 이는 시간의 경우에 23-7/2라면 23시부터 07시까지 매 2시간마다
라는 의미를 가지고 있다. 시간필드에서 */2라면 매 2시간마다라고 해석하면 된다.

0,30 * 1,15 * 1-5 fsck -y
상기의 예에서 보면 매달 1일과 15일날 30분마다 요일에 관계없이 fsck -y명령을
실행하도록 되어 있다.(위의 예는 있을 수 없는 상황이겠지만 예로 들어본다.)
이러한 방식으로 명령어필드에 여러가지의 내용을 넣을 수 있다.

20 1 * * * root find /tmp -atime +3 -exec rm -f () ';'
매일 새벽 1시 20분에 3일간 접근하지 않은 /tmp내의 파일을 삭제하는 내용
0 4 * * * root find / -xdev -name core +7 -exec rm -f {}';'
매일 새벽 4시 정각에 지난 일주일간 접근하지 않은 core파일들을 삭제한다.
-xdev옵션은 독립형시스템이면 사용하지 않아도 된다.

수정하는 방법은 리눅스의 경우에는 crontab -e명령으로 에디팅을 할 수 있다.
수정하기 전에 지금 등록된 crontab을 보고자 하면 -l옵션을 사용하고 등록된
내용을 삭제하려면 -d옵션을 사용하면 된다.(-r옵션을 사용하는 유닉스도 있다.)
실행결과는 메일로 알려주게 되므로 자신의 메일을 읽어보면 된다.

crontab을 직접 고칠 수 없는 상황이면 crontab을 -l옵션을 사용하여 새로운
화일명으로 리다이렉션 받아서 편집한 뒤에 crontab filename의 형태로 등록하면
된다.
리눅스의 경우에는 /var/spool/cron/crontabs/에 자신의 계정을 화일명으로
crontab이 존재하고 있다.
이를 수정하여 자신에게 맞추거나 또는 새롭게 생성하
면 되겠다.