2010년 6월 9일 수요일

리눅스 로그

로그파일

내 용

/var/log/messages

모든 데몬의 시스템 로그

/var/log/cron

crond 데몬 로그파일

/var/log/maillog

sendmail,pop등의 메일관련 데몬의 로그

/var/log/secure

보안인증 관련 메시지

/var/log/xferlog

ftp(proftpd, vsftpd) 로그

/dev/console

콘솔 로그

/var/log/dmesg

부팅될 당시에 각종 메시지들을 저장

/var/log/wtmp

시스템 전체 로그인 기록을 저장

/var/log/utmp

현재 로그인 사용자에 대한 기록

/var/log/lastlog

각 계정들의 최근 로그인 기록

/var/log/spooler

uucp, new 장치에서 위급상태(crit)이상인 메시지 기록

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이 존재하고 있다.
이를 수정하여 자신에게 맞추거나 또는 새롭게 생성하
면 되겠다.

2010년 4월 27일 화요일

FTP 명령어어

- ascii : 전송모드를 ASCII 모드로 설정한다 (ascii 또는 as)

- binary : 전송모드를 binary 모드로 설정한다. (binary 또는 b)

- bell : 명령어 완료시에 벨소리를 나게 한다.(bell)

- cd : remote 시스템의 디렉토리를 변경한다.

- cdup : remote 시스템에서 한단계 상위디렉토리로 이동한다(cdup)

- chmod : remote 시스템의 퍼미션을 변경한다(chmod 123 index.htm)

- close : ftp 접속을 종료한다.

- delete : remote 시스템의 파일을 삭제한다.(delete duck2.txt)

- dir : remote 시스템의 디렉토리 내용을 디스플레이한다

- disconnect : ftp를 종료한다.

- exit : ftp를 종료하고 빠져나간다.

- get : 지정된 파일 하나를 가져온다.

- hash : 파일전송 도중에 "#" 표시를 하여 전송 중임을 표시한다.(진행 중이라는 것을 표현한다.)

- help : ftp 명령어 도움말을 볼 수 있다.

- lcd : local 시스템의 디렉토리를 변경한다. (lcd 디렉토리명)

- ls : remote 시스템의 디렉토리 내용을 디스플레이한다,

- mdelete : 여러 개의 파일을 한 꺼번에 삭제 할 때 사용한다.

- mget : 여러 개의 파일을 한 꺼번에 가져오려 할 때 사용한다.

- mput : 여러 개의 파일을 한 꺼번에 올리려고 할 때 사용한다.

- open : ftp 접속을 시도한다. ( open 192.168.100.231 또는 open ftp.storage.co.kr)

- prompt : 파일 전송시에 확인 과정을 거친다. on/off 토글

- pwd : remote 시스템의 현재 작업디렉토리를 표시한다.

- quit : ftp 접속을 종료하고 빠져나간다.

- rmdir : 디렉토리를 삭제한다.

마운트

(1) 파일시스템(하드디스크) 마운트

먼저 파일시스템에 대한 마운트를 알아보자. 파일시스템이라하면 하드디스크 파티션의 사용환경, 즉 파티션 포맷의 종류라고 보면

되겠다. 어떤 포맷을 사용한 파티션이냐에 따라 마운트하는 옵션이 달라질 수 있으므로, 현재 마운트하고자 하는 파티션의 포맷 상태를 잘

확인해 두어야 한다. 최근에는 그냥 마운트 명령만을 사용해도 포맷에 관계없이 자동으로 마운트가 이루어지는 추세이지만,

포맷별 마운트 옵션을 알아두면 추후에 유용하게 활용이 가능하다.


아래 예제를 보면서 하나씩 확인해 보도록 하자.

# mount /dev/hda1 /mnt/win ; 가장 일반적인 마운트 명령이다. 별다른 옵션을 사용하지 않았으며 대부분의 리눅스 시스템에서

자동으로 체크하여 마운트를 수행한다. 하드디스크의 가장 첫번째 파티션(hda1)에 Windows를 설치하였다면, /mnt 디렉터리 아래에

win이라는 디렉터리를 만들고 여기에 마운트를 걸어주면 된다.

# mount -t vfat /dev/hda1 /mnt/win98 ( 언마운트 => # umount /mnt/win98 )
; Windows가 설치된 파티션이 FAT 방식으로 포맷되어 있는 경우 사용한다. FAT, FAT16, FAT32 모두 사용이 가능하며 리눅스

시스템에서는 이들을 통칭해서 vfat이라는 명칭으로 사용한다.

# mount -t ntfs /dev/hda2 /mnt/winxp ( 언마운트 => # umount /mnt/winxp )
; Windows가 설치된 파티션이 NTFS 방식으로 포맷되어 있는 경우 사용한다. NTFS의 경우 아직 리눅스에서 완벽히 호환이 되지는 않는

다. 그러므로 읽기(Read)로만 활용하는 것이 대부분이고 쓰기(Write)는 사용하지 않는 것이 좋다. 이 부분은 다시 다루도록 하자.

# mount -t msdos /dev/hda1 /mnt/dos
; Windows가 아닌 DOS를 설치하였다면 이 옵션을 사용하자. 아직도 DOS를 사용하는 사람은 없으리라 생각되지만 적어 보았다.

# mount -t ext3 /dev/hda3 /mnt/linux
; Linux가 설치된 파티션을 마운트할때 사용한다. 리눅스에서는 ext2, ext3, xfs, jfs, vfs, reiserfs 등 다양한 파일시스템을 사용할 수

있으며, 최근 가장 많이 사용되는 파일스스템(포맷)이 ext3이다. 이런 ext3 파일시스템을 마운트할때 위와 같은 옵션을 사용하면 된다.

# mount -t vfat /dev/sda1 /mnt/usb ; usb 장치인식, 우선 mnt 폴더안에 usb 폴더를 생성해줘야 한다.


(2) 주변장치 마운트 - CD-ROM, Tape 장치, Floppy디스크 등 다양한 주변장치를 마운트할 수 있다.


# mount /dev/cdrom ; CD-ROM을 마운트할때 사용하는 명령이다. 위에서 보면 마운트할 위치는 따로 지정을 하지 않았는데,

이는 설치시 CD-ROM과 같은 장치는 이미 /etc/fstab과 같은 마운트 설정 파일에 자동으로 인식이 되어 있으므로, 마운트 명령을 길게

사용하지 않더라도(생략하더라도) 마운트가 가능하기 때문이다.

# mount /dev/cdrom /mnt/cdrom ( 언마운트 => # umount /mnt/cdrom )
; CD-ROM 마운트 명령을 생략하지 않고, 모두다 사용해 준다면 위와 같은 명령이 될 것이다.

# mount /dev/fd0 /mnt/floppy ( 언마운트 => # umount /mnt/floppy )
; 플로피디스크는 fd0라는 장치명을 가지고 있으므로, 이 장치명을 사용하여 마운트를 시킬 수 있다.

# mount /dev/st0 /mnt/tape ( 언마운트 => # umount /mnt/tape )
; 서버와 같은 시스템에서는 주기적인 백업을 수행하는데, 예전부터 많이 사용되어온 테이프 장치로 백업하기 위해서는 테이프 장치를

위와 같은 명령으로 마운트해 주어야 한다.


(3) ISO 이미지 마운트 - 최근 많이 사용되고 있는 ISO 이미지 파일을 사용하기 위해서는 아래와 같이 마운트를 해주면 된다.

=======================================================================
# mount -t iso9660 -o loop /root/OpenEdition30/HLOE30_disc1.iso /mnt/iso
=======================================================================

ISO 이미지 파일 생성 및 사용에 대한 자세한 설명은, 앞서 리눅스가산다에 올려진 내용이 있으므로 이를 참조하자.
( http://www.haansoftlinux.com/magazine/magazineView.php?no=996&page=0&catalog=1 )

(4) Samba 마운트 - Samba 프로토콜을 사용하는 파일공유 서버를 Samba 마운트 기능으로 연결할 수 있다. Windows에서 보는

"네트워크 공유"에 해당하는 것으로 Samba 프로토콜을 사용하는 공유디렉터리는 모두 마운트할 수 있다.

================================================================================
# smbmount //192.168.0.1/linux /mnt/smb

# mount -t smbfs -o username=root //192.168.0.1/linux /mnt/smb

# mount -t smbfs -o username=root,password=gksrmfrhkzjavbxj,workgroup=haansoft

//192.168.0.1/linux /mnt/smb
================================================================================

Samba 마운트 방식은 기존 마운트와 동일하며, -t(Type) 옵션에 smbfs(samba-filesystem)을 명시하고, -o 옵션에 연결시 필요한

다양한 정보들(ID,Password, 공유그룹 등)을 입력하게 된다. 패스워드의 경우 보안상 바로 기록하지 않는 것이 좋으며, 명령에서

패스워드를 명시하지 않으면 다음 단계에서 자동으로 패스워드를 물어오므로 이때 입력하는 것이 좋다.

마운트 대상을 기록하는 부분에는 공유호스트명(또는 IP)과 공유디렉터리명을 순서대로 입력한다.


(5) NTFS 마운트 고급옵션

앞서 잠깐 말했듯이 NTFS 파일시스템의 경우, 마운트 및 사용에 많은 주의가 요구된다. 아래의 내용을 통해서 다시 확인해 보도록 하자.

============================================================================================
# mount /dev/hda1 /mnt/hda1 -t ntfs -r -o umask=0222,uid=xxx ( 언마운트 => # umount /mnt/hda1 )
============================================================================================

[설명]

-t ntfs: 파일 시스템 종류가 ntfs 라는 것을 명시함
-r: 읽기 전용. ntfs는 Microsoft가 아직 스펙을 발표(공개) 하지않아 쓰기 기능은 사용하지 않는것이 좋음.
-o: 옵션
umask=0222: 읽기 전용과 관련된 명령어.
uid: xxx 에 실제 사용자 아이디 적는다. 이걸 적지 않으면 root 에서만 읽기 가능.

※ 부팅시 자동으로 마운트 하기 위해서는 /etc/fstab 파일을 편집기(vi 추천)로 열어서 마지막에 다음 한 줄을 기록한다.
/dev/hda1 /mnt/hda1 ntfs ro,umask=0222,uid=xxx 0 0 ;파티션 명칭과 uid 등은 적절히 수정해서 사용한다.