'OS/LINUX'에 해당되는 글 57건

  1. 2007.10.25 Grep 계열 명령어
  2. 2007.10.25 [LINUX] iptables
  3. 2007.10.25 iptables
  4. 2007.10.17 [Linux] mrtg setting
  5. 2007.07.23 SELinux 에 대하여
  6. 2007.07.21 [linux] 리눅스의 각종 데몬들
  7. 2007.07.03 LINUX RPM 관련 명령어
  8. 2007.04.12 C쉘 설정파일(.cshrc)
  9. 2007.03.09 Xmanager 접속을 위한 리눅스 설정하기
  10. 2007.02.15 crontab 명령
OS/LINUX2007. 10. 25. 20:22
반응형
grep 계열 명령어

1.grep 명령어

1.1 grep의 의미

grep : 파일 전체를 뒤져 정규표현식에 대응하는 모든 행들을 출력한다.
egrep : grep의 확장판으로, 추가 정규표현식 메타문자들을 지원한다.
fgrep : fixed grep 이나 fast grep으로 불리며, 모든 문자를 문자 그래도 취급한다. 즉, 정         규표현식의 메타문자도 일반 문자로 취급한다.

1.2 grep의 동작 방법

grep에서 사용하는 정규표현식 메타문자
메타문자
기    능
사용 예
사용 예 설명
^
행의 시작 지시자
'^love'
love로 시작하는 모든 행과 대응
$
행의 끝 지시자
'love$'
love로 끝나는 모든 행과 대응
.
하나의 문자와 대응
'l..e'
l 다음에 두 글자가 나오고 e로 끝나는 문자열을 포함하는 행과 대응
*
선행문자와 같은 문자의 0개 혹은 임의개수와 대응
' *love'
0개 혹은 임의 개수의 공백 문자 후에 love로 끝나는 문자열을 포함한 행과 대응
[]
[] 사이의 문자 집합중 하나와 대응
'[Ll]ove'
love나 Love를 포함하는 행과 대응
[^ ]
문자집합에 속하지 않는 한 문자와 대응
'[^A-K]love'
A와 K 사이의 범위에 포함되지 않는 한 문자와 ove가 붙어있는 문자열과 대응
\<
단어의 시작 지시자
'\< SPAN>
love로 시작하는 단어를 포함하는 행과 대응(vi,grep에서 지원)
\>
단어의 끝 지시자
'love\>'
love로 끝나는 단어를 포함하는 행과 대응
(vi,grep에서 지원)
\(..\)
다음 사용을 위해 태그를 붙인다.
'\(lov\)ing'
지정된 부분을 태크1에 저장한다. 나중에 태그값을 참고하려면 \1을 쓴다. 맨 왼쪽부터 시작해 태그를 9개가지 쓸 수 있다. 왼쪽 예에서는 lov가 레지스터1에 저장되고 나중에 \1로 참고할 수 있다.
x\{m\}
문자 x를 m번 반복한다.
'o\{5\}'
문자 o가 5회 연속적으로 나오는 모든 행과 대응
x\{m,\}
적어도 m번 반복한다.
'o\{5,\}'
문자 o가 최소한 5회 반복되는 모든 행과 대응
x\{m,n\}
m회 이상 n회 이하 반복한다.
o\{5,10\}'
문자 o가 5회에서 10회 사이의 횟수로 연속적으로 나타나는 문자열과 대응

grep의 옵션
옵션
동작 설명
-b
검색 결과의 각 행 앞에 검색된 위치의 블록 번호를 표시한다. 검색 내용이 디스크의 어디쯤 있는지 위치를 알아내는데 유용하다.
-c
검색 결과를 출력하는 대신, 찾아낸 행의 총수를 출력한다.
-h
파일 이름을 출력하지 않는다.
-i
대소문자를 구분 하지 않는다.(대문자와 소문자를 동일하게 취급).
-l
패턴이 존재하는 파일의 이름만 출력한다.(개행문자로 구분)
-n
파일 내에서 행 번호를 함께 출력한다.
-s
에러 메시지 외에는 출력하지 않는다. 종료상태를 검사할 때 유용하게 쓸 수 있다.
-v
패턴이 존재하지 않는 행만 출력한다.
-w
패턴 표현식을 하나의 단어로 취급하여 검색한다.

# grep -n '^jack:' /etc/passwd
(/etc/passwd 파일에서 jack을 찾는다. jack이 행의 맨 앞에 있으면 행 번호를 화면으로 출력한다.)

1.3 grep과 종료 상태
grep은 파일 검색의 성공 여부를 종료 상태값으로 되돌려준다.
패턴을 찾으면 0, 패턴을 찾을 수 없으면 1, 팡리이 존재하지 않을 경우 2
sed,a자 등은 검색의 성공 여부에 대한 종료 상태값을 반환하지 않는다. 다만 구문 에러가 있을 경우에만 에러를 보고한다.

2. 정규표현식을 사용하는 grep의 예제
# grep NW datafile
# grep NW d*
(d로 시작하는 모든 파일에서 NW를 포함하는 모든 행을 찾는다.)
# grep '^n' datafile
(n으로 시작하는 모든 행을 출력한다.)
# grep '4$' datafile
(4로 끝나는 모든 행을 출력한다.)
# grep TB Savage datafile
(TB만 인자이고 Savage와 datafile은 파일 이름이다.)
# grep 'TB Savage' datafile
(TB Savage를 포함하는 모든 행을 출력한다.)
# grep '5\.' datafile
(숫자 5, 마침표, 임의의 한 문자가 순서대로 나타나는 문자열이 포함된 행을 출력한다.)
# grep '\.5' datafile
(.5가 나오는 모든 행을 출력한다.)
# grep '^[we]' datafile
(w나 e로 시작하는 모든 행을 출력한다.)
# grep '[^0-9]' datafile
(숫자가 아닌 문자를 하나라도 포함하는 모든 행을 출력한다.)
# grep '[A-Z][A-Z] [A-Z]' datafile
(대문자 2개와 공백 1개, 그리고 대문자 하나가 연이어 나오는 문자열이 포함된 행을 출력한다.)
# grep 'ss* ' datafile
(s가 한 번 나오고, 다시 s가 0번 또는 여러번 나온 후에 공백이 연이어 등장하는 문자열을 포함한 모든 행을 출력한다.)
# grep '[a-z]\{9\}' datafile
(소문자가 9번 이상 반복되는 문자열을 포함하는 모든 행을 출력한다.)
# grep '\(3\)\.[0-9].*\1 *\1' datafile
(숫자 3,마침표,임의의 한 숫자,임의 개수의 문자,숫자 3(태그),임의 개수의 탭 문자,숫자 3의 순서를 갖는 문자열이 포한된 모든 행을 출력한다.)
# grep '\<>
(north로 시작하는 단어가 포함된 모든 행을 출력한다.)
# grep '\' datafile
(north라는 단어가 포함된 모든 행을 출력한다.)
# grep '\<[a-z].*n\>' datafile
(소문자 하나로 시작하고, 이어서 임의 개수의 여러 문자가 나오며, n으로 끝나는 단어가 포함된 모든 행을 출력한다. 여기서 .*는 공백을 포함한 임의의 문자들을 의미한다.)

3. grep에 옵션 사용
# grep -n '^south' datafile
(행번호를 함께 출력한다.)
# grep -i 'pat' datafile
(대소문자를 구별하지 않게 한다.)
# grep -v 'Suan Chin' datafile
(문자열 Suan Chin이 포함되지 않은 모든 행을 출력하게 한다. 이 옵션은 입력 파일에서 특정 내용의 입력을 삭제하는데 쓰인다.
# grep -v 'Suan Chin' datafile > black
# mv black datafile
)
# grep -l 'SE' *
(패턴이 찾아진 파일의 행 번호 대신 단지 파일이름만 출력한다.)
# grep -w 'north' datafile
(패턴이 다른 단어의 일부가 아닌 하나의 단어가 되는 경우만 찾는다. northwest나 northeast 등의 단어가 아니라, north라는 단어가 포함된 행만 출력한다.)
# grep -i "$LOGNAME" datafile
(환경변수인 LOGNAME의 값을 가진 모든 행을 출력한다. 변수가 큰따옴표로 둘러싸여 있는 경우, 쉘은 변수의 값으로 치환한다. 작은따옴표로 둘러싸여 있으면 변수 치환이 일어나지 않고 그냥 $LOGNAME 이라는 문자로 출력된다.)

4. egrep
egrep(extended grep) : grep에서 제공하지 않는 확장된 정규표현식 메타문자를 지원  한다.
                                     grep와 동일한 명령행 옵션을 지원한다.
egrep에서 지원하는 확장 메타문자
메타문자
기능
사용 예
사용 예 설명
+
선행문자와 같은 문자의 1개 혹은 임의 개수와 대응
'[a-z]+ove'
1개 이상의 소문자 뒤에 ove가 붙어있는 문자열과 대응. move,approve,love,behoove 등이 해당된다.
?
선행문자와 같은 문자의0개 혹은 1개와 대응
'lo?ve'
l 다음에 0개의 문자 혹은 하나의 문자가 o가 나오는 문자열과 대응. love,lve 등이 해당된다.
a|b
a 혹은 b와 대응
'love|hate'
love 혹은 hate와 대응.
()
정규표현식을 묶어준다
'love(able|ly)'
lovable 혹은 lovely와 대응.
'(ov)+'
ov가 한 번 이상 등장하는 문자열과 일치.

4.1 egrep 예제
# egrep 'NW|EA' datafile
(NW나 EA가 포함된 행을 출력한다.)
# egrep '3+' datafile
(숫자 3이 한 번 이상 등장하는 행을 출력한다.)
# egrep '2\.?[0-9]' datafile
(숫자 2 다음에 마침표가 없거나 한 번 나오고, 다시 숫자가 오는 행을 출력한다.)
# egrep ' (no)+' datafile
(패턴 no가 한 번 이상 연속해서 나오는 행을 출력한다.)
# egrep 'S(h|u)' datafile
(문자 S 다음에 h나 u가 나오는 행을 출력한다.)
# egrep 'Sh|u' datafile
(패턴 Sh나 u를 포함한 행을 출력한다.)

5. 고정 grep 과 빠른 grep
fgrep : grep 명령어와 동일하게 동작한다. 다만 정규표현식 메타문자들을 특별하게 취급하지
          않는다.
# fgrep '[A-Z]****[0-9]..$5.00' file
([A-Z]****[0-9]..$5.00 이 포함된 행을 출력한다. 모든 문자들을 문자 자체로만 취급한다.)
반응형

'OS > LINUX' 카테고리의 다른 글

텔넷 putty ssh-keygen으로 자동 로그인하기  (0) 2007.10.26
LINUX 방화벽 프로그램 iptables  (0) 2007.10.26
[LINUX] iptables  (0) 2007.10.25
iptables  (0) 2007.10.25
[Linux] mrtg setting  (0) 2007.10.17
Posted by [PineTree]
OS/LINUX2007. 10. 25. 20:18
반응형
 

IPTABLES 을 사용하여 커널수준의 방화벽을 구성할 수 있다.

==============================================================================
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -F INPUT
iptables -F OUTPUT

# 웹서버일경우 80으로 들어오는 요청과 1.1.1.1 에서들어오는 ssh 요청을
# 받아들인다.
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp -s 1.1.1.1 --dport 22 -j ACCEPT

# 1초에 15번 이상의 HTTP 접근을 할경우 (DOS공격) 접근을 차단한다.

# 이기능을 사용하려면 커널컴파일 및 iptables 패치가 필요하다. (리눅스서버 보완관리 실무 P.298 참조)
iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 15 -connlimit-mask 24 -j DROP

# 메일서버의 경우 동시에 5개이상 SMTP 접근자(스팸머)의 경우 5분동안
# 접근을 제한한다.
iptables -A INPUT -m recent --name spammer --rcheck --seconds 300 -j drop
iptables -A INPUT -p tcp --syn --dport 25 -m connlimit --connlimit-above 5 -m recent --name spammer --set -j DROP

# STRING 필터기능
# MSN 문자열이들어간 패킷 차단
iptables -A FORWARD -m string --string "messenger.msn.com" -j DROP
# 싸이월드로 접속차단
iptables -A FORWARD -p tcp --dport 80 -m string --string "Host: cyworld.nate.com" -j DROP

# 포트스캔을 차단한다.
iptables -A INPUT -m psd -j DROP

# 만약서버가 해킹당해 DOS공격지로 사용될때 적용시킴.
# DNS 쿼리이외에 UDP 패킷이 나가는 것을 방지
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p udp ! --dport 53 -m state --state NEW -j DROP

# 이외 모든 접근을 차단한다.
iptables -A INPUT -j DROP

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

 

참고)

 

# DoS 공격 방지를 위한 설정
/sbin/iptables -t nat -A syn-flood -m limit -limit 12/s \ --limit-burst 24 -j RETURN
/sbin/iptables -t nat -A syn-flood -j DROP


# ssh 정책
/sbin/iptables -A INPUT -p tcp --dport 22 -m owner --uid-owner 0 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 22 -m owner --gid-owner 0 -j ACCEPT

반응형

'OS > LINUX' 카테고리의 다른 글

LINUX 방화벽 프로그램 iptables  (0) 2007.10.26
Grep 계열 명령어  (0) 2007.10.25
iptables  (0) 2007.10.25
[Linux] mrtg setting  (0) 2007.10.17
SELinux 에 대하여  (0) 2007.07.23
Posted by [PineTree]
OS/LINUX2007. 10. 25. 20:16
반응형

테스트용으로 사용하는 리눅스 서버에 있는 데이터베이스에 접근을 하려면

 

SSH 밖에 열려있지 않아서 불편해서 사무실에서 사용하는 ip 대역만

 

MySQL 데이터베이스에 직접 접근 할 수 있도록 열기로 했습니다.

 

리눅스 서버에는 iptables 를 사용해서 제한하고 있습니다.

 

현재 설정을 보려면 다음을 입력합니다.

 

# iptables -L

 

추가를 하겠습니다.

 

# iptables -A INPUT -p TCP -s xxx.xxx.xxx.0/24 --destination-port 3306 -j ACCEPT

 

이제 xxx.xxx.xxx.0 ~ 255 까지의 IP 대에서 접근이 가능합니다.

 

-A : 새로운 rule 을 추가하는 옵션 (INPUT, FORWARD, OUTPUT)

-p : 사용할 프로토콜을 지정 (TCP, UDP)

-s : 사용할 ip 주소를 지정

--destination-port : 사용할 포트를 지정

-j : 패킷처리방법을 지정(ACCEPT, DROP, REJECT)

 

추가했던 chain rule 을 제거하는 방법

 

# iptables -D INPUT -p TCP -s xxx.xxx.xxx.0/24 --destination-port 3306 -j ACCEPT

 

주의사항

위에서 처럼 명령을 사용해서 처리했을 경우 리부팅하면 추가된 설정이 없어지고 적용되지 않습니다.

부팅시에 적용하려면 보통 /etc/init.d/iptables 시작 스크립트에 내용을 기록해 둡니다.

 

반응형

'OS > LINUX' 카테고리의 다른 글

Grep 계열 명령어  (0) 2007.10.25
[LINUX] iptables  (0) 2007.10.25
[Linux] mrtg setting  (0) 2007.10.17
SELinux 에 대하여  (0) 2007.07.23
[linux] 리눅스의 각종 데몬들  (0) 2007.07.21
Posted by [PineTree]
OS/LINUX2007. 10. 17. 02:42
반응형
MRTG(Multi Router Traffic Grap her)는 펄(Perl)과 C 언어로 구성돼 있고, 유닉스와
NT에서 동작한다. 일, 주, 월, 년 간으로 트래픽 발생량을 그래프화해 보여주므로
시간대별 흐름을 파악하는데 좋은 분석 도구가 될 수 있다.

대체적으로 MRTG는 네트워크 장비인터페이스별 트래픽 분석, CPU나 메모리 사용률
분석, 모뎀별 포트 사용률 분석 등에 사용되고 있다. 그러나 트래픽 모니터링 뿐만
아니라, SNMP 값(MIB 값)을 이용해 다양한 모니터링이 가능하고 외부 프로그램을
사용할 수 있기 때문에 다양한 변형이 가능하며, MRTG가 생성하는 로그 값을 가공해
새 DB의 구축에도 응용할 수도 있다.

MRTG의 주요 기능

기본적으로 네트워크 장비가 SNMP를 지원한다면 MRTG를 사용할 수 있다. MRTG의 가장
큰 장점이라면 결과치의 흐름을 알 수 있기 때문에 사업 계획을 세우는 자료로 활용할
수 있고, 로그값을 가공해 여러 용도로 이용할 수 있는 것.

로그값을 가공하는 데는 여러 방법이 있겠지만, 필자는 주로 펄 언어를 사용했다.
그러나 PHP를 이용하면 복잡한 CGI 프로그램이 없어도 쉽게 웹 상에서 활용할 수 있을
것이다. 주로 활용되는 분야는 다음과 같다.

·장비의 특정 인터페이스에 대한 트래픽 모니터링

(그림 1)은 MRTG를 이용한 라우터에 관한 일간 그래프다. KT-IX와 155Mbps로 연결된
라우터의 1개 포트에 대한 트래픽을 보여주고 있다.

·CPU 사용률 모니터링

(그림 2)는 주간 그래프로, 라우터의 CPU 사용률을 보여주고 있다. 이를 통해
입출력이 같음을 알 수 있다.

·RAS 장비에 대한 포트 사용률 모니터링

(그림 3)은 가입자들이 014XY로 접속한 포트 수를 보여준다. 이 값은 RAS 장비에서
현재 접속한 사용자 수를 읽어와서 펄 언어로 작성된 프로그램을 이용해 가공한 후,
MRTG를 이용한 그래프 작성법을 이용했다.

·특정 서버에 대한 세션 수 측정

(그림 4)는 일간 그래프로, 프록시 서버의 TCP 세션 수를 보여 준다. 사용된 OID는
‘1.3.6.1.2.1.6. 9.0’.

·MRTG의 로그 값 분석

:
966919200 1545 2958 1545 2958
966918900 1505 2927 1545 2958
966918600 236 1942 236 1942
:

MRTG 그래프는 이 로그 값을 기초로 해서 만들어진다. 형식은 unix time, current_in,
current_out, max _in, max_out로 나타난다. 유닉스 시간은 1970년 1월 1일을 0으로
해서 1초마다 카운트한 값이다. 로그 시간을 보면 5분마다 쌓이는 것을 볼 수 있다.
각 레코드가 공백으로 구분돼 있기 때문에, C언어나 펄 언어 등을 이용해서
current_in 값을 배열로 저장해, 매일 특정 시간대의 평균 트래픽 등을 계산하는데
이용할 수 있다.

유닉스에서 MRTG 구축하기

MRTG는 소스 코드로 제공되기 때문에 다운로드 받은 후 컴파일하는 작업이 필요하다.
따라서 컴파일하기 위해서는 C 컴파일러가 설치돼 있어야 한다. 그외 유닉스에서
MRTG를 수행하는 데 필요한 프로그램으로써는 Perl, gd, libpng, zlib가 있어야 한다.
그리고 웹으로 공유하기 위해서는 웹 서버가 필요하다.

① GCC 설치하기

웹(http://gcc.gnu.org)에서 다운로드 받아서 인스톨하면 된다.

② Perl 설치하기

웹에서(www.perl.com) v5.005 이상을 다운로드 받아서 설치한다. 이미 설치가 돼 있는
경우, 버전 확인은 ‘perl -v’로 알 수 있다.

gzip -d stable.tar.gzip (stable이라는 이름에서 최신의 안정된 버전 이라는 뜻으로
추정)
tar -xvf stable.tar
mv ./stable*/ /usr/local/perl/ (프로그램은 주로 /usr/local/ 디렉토리로
이동시킨다)
cd /usr/local/perl
rm -f config.sh(기존에 설치된 config shell 파일을 지움)
sh Configure (configure 파일 생성)
make (소스 파일이므로 컴파일 함)
make test
make install(컴파일 후 인스톨 함)

③ 그래픽 생성용 라이버러리 만들기

MRTG가 생성하는 그래픽 파일의 형식이 PNG라고 위에서 언급했다. 이를 위해 gd
라이브러리가 필요하고, 이 gd 라이브러리는 2개의 라이브러리(zlib, libpng)가
설치돼 있어야 컴파일이 가능하다.

a. zlib(그래픽 파일을 압축함)

웹(www.info-zip.org/pub/infozip/zlib)에서 최신 버전을 다운받아 설치한다.

gzip -d zlib.tar.gz
tar -xvf zlib.tar
mv ./zlib*/ /usr/local/zlib/(program은 주로 /usr/local/ 디렉토리로 이동)
cd /usr/local/zlib
./configure
make
make test
make install

b. libpng(zlib의 그래픽 파일을 PNG 포맷으로 변형)

웹(www.libpng.org/pub/png)에서 다운로드 한다.

gzip -d libpng-1.0.8.tar.gz (stable 이라는 이름에서 최신의 안정된 버전을 말하는
것 같음)
tar -xvf libpng-1.0.8.tar
mv ./libpng*/ /usr/local/libpng/(program은 주로 /usr/local/ 디렉토리로 이동)
cd /usr/local/libpng
cp scripts/makefile.std makefile(scripts 디렉토리 밑에서 해당 OS에 맞는 makefile
선택해서 makefile로 복사함)
make test
make install

c. gd

웹(www.boutell.com/gd)에서 다운로드 한다.

gzip -d gd-1.8.3.tar.gz (stable 이라는 이름에서 최신의 안정된 버전을 말하는 것
같음)
tar -xvf gd-1.8.3.tar
mv ./gd*/ /usr/local/gd/ (program은 주로 /usr/local/ 디렉토리로 이동)
cd /usr/local/gd
make
make install

④ MRTG 설치하기

웹(http://ee-staff.ethz.ch/~oetiker/webtools/ mrtg/pub/beta)에서 최신 버전을
다운로드 한다.

gzip -d mrtg-2.9.0pre21.tar.gz | tar -xvf (gzip과 tar를 한꺼번에 실행함)
mv ./mrtg*/ /usr/local/mrtg/
cd /usr/local/mrtg
./configure --with-gd=/usr/local/src/gd
--with-z=/usr/local/src/zlib
--with-png=/usr/local/src/libpng(라이버러리들이 있는 위치를 지정해줌)
make

MRTG가 이상없이 설치됐다면 run 디렉토리 밑에 mrtg, cfgmaker와 같은 실행 파일이
만들어지게 된다. run 디렉토리 밑에 있는 실행 파일들은 꼭 이 위치가 아니더라도
실행하는 데는 지장이 없다.

⑤ cfg 파일 생성

이제 cfgmaker를 이용해 mrtg.cfg 파일(꼭 이름이 mrtg.cfg일 필요는 없다. cfg
성격에 맞게, router.cfg, switch.cfg 등의 이름을 만들어 주면 된다)을 형식에 맞게
만들어서 실행하면 된다.

cfgmaker --global ‘WorkDir: /home/httpd/mrtg’
--global ‘Options[_]: bits,growright’
--output /home/httpd/mrtg/mrtg.cfg
community at router.abc.xyz

WorkDir은 결과 파일이 만들어질 디렉토리를 말한다. 옵션은 여러 가지가 있는데,
비트를 선택하지 않으면 바이트가 기본값이 되고, growright는 그래프를 오른쪽에서
왼쪽 순서로 그리도록 한다.

Output은 mrtg.cfg 파일이 생성되는 경로를 지정하는 것이고, 마지막 줄은 실제
모니터링 하려고 하는 네트워크 장비를 적어 준다. 여기서 community는 장비마다 SNMP
값을 갖고 올 때 사용하는 고유값인데, 기본적으로 public을 사용한다.
router.abc.zyz는 네트워크 장비의 IP 주소나 호스트명을 적으면 된다.

⑥ MRTG 실행

/usr/local/mrtg/run/mrtg /home/httpd/mrtg/mrtg.cfg

이렇게 실행하면 그 결과 값이 /home/httpd/mrtg 디렉토리 밑에 만들어진다. 처음
실행하면 경고 메시지가 뜨는데, 이는 비교할 수 있는 로그값이 없기 때문이므로
걱정하지 않아도 된다. 위의 명령을 2, 3번 정도 반복하면 정상적인 트래픽을 볼 수
있다.

⑦ 5분마다 MRTG 실행하기

위의 명령이 주기적으로 실행되게 하기 위해서는 crontab을 이용하면 된다. 만일 매
5분마다 실행하기 위해서는 crontab 파일에 다음 한 줄을 추가하면 된다(crontab
파일은 시스템마다 다른데, 우리 환경의 경우 /var/spool/cron/crontabs/root 파일을
이용한다).

0,5,10,15,20,25,30,35,40,45,50,55 * * * *
[CODE]<mrtg-bin>/mrtg <path to mrtg-cfg>/mrtg.cfg[/CODE]

그리고 이를 적용하려면 ‘crontab root’ 하면 된다.

⑧ 아파치 서버 설치

마지막으로 html 파일들을 웹 브라우저를 통해 보기 위해서는 웹 서버를 구동해야
되는데, 유닉스 시스템에서 가장 많이 사용되어지는 아파치(Apache) 서버에 대해
간단히 설명하겠다(보다 자세한 것은 아파치 홈페이지를 참조하기 바란다). 먼저
웹(www.apache.org /dist)에서 최신 버전을 다운로드 받아 설치한다.

gzip -d apapche_1.3.12.tar.gz | tar -xvf
mv ./apache*/ /usr/local/apache/
cd /usr/local/apache
./configure
make
make install
conf/httpd.conf 파일 수정작업(기본적인 웹서버로 동작하기 위해 필요한 설정을 하는
곳)
/usr/local/apache/bin/apachectl start(아파치를 실행)

윈도우 NT에서 MRTG 설치하기

윈도우 NT에서의 MRTG 설치는 간단하다. 윈도우 NT용 펄(perl) 프로그램과 MRTG를
다운로드 받아서 설치하면 된다.

① 펄 설치하기

웹에서(www.ActiveState.com)에서 ActivePerl 616을 다운 받아 설치한다. 설치 후에는
경로가 제대로 설정됐는지 [제어판] → [시스템] → [환경변수]에서 확인.

② MRTG 설치하기

MRTG도 마찬가지로 MRTG
사이트(http://ee-staff.ethz.ch/~oetiker/webtools/mrtg/pub/beta)에서 윈도우 NT용
최신버전을 다운로드 받아서 설치만 하면 된다(윈도우 NT용은 확장자가 .zip인 파일).
이전 버전에서는 MRTG 파일을 수정해야 됐지만, 이제는 그럴 필요가 없다. MRTG
설치가 끝나면 이제 실제 cfg 파일을 만든 후 MRTG가 제대로 동작하는지 확인하는
과정만 거치면 된다.

③ cfg 파일 생성하기

c:>perl cfgmaker public@10.10.10.1 --global “WorkDir: c:” -output mrtg.cfg

(IP주소가 10.10.10.1인 라우터인 경우 인터페이스별로 고유의 포트 번호를 가진 cfg
파일을 만들게 된다)

④ MRTG 실행하기

c:>perl mrtg mrtg.cfg

이렇게 실행하면 유닉스도 마찬가지지만 에러 메시지가 나타나는데, 2번 더 반복하면
더 이상 에러 메시지없이 정상 그래프를 출력하게 된다. 유닉스와 마찬가지로 5분마다
MRTG를 실행하기 위해서는 윈도우 NT의 AT 스케줄러를 이용하거나 MRTG 스태틱
업데이터(Static Updater) 서비스를 사용할 수도 있지만, 간단히 mrtg. cfg 파일에
‘RunAsDamon: yes’를 추가하면 된다.

전용회선 가입자별로 MRTG 화면 보여주기

ISP나 그외 전용회선을 구축해 회선 임대를 하는 공공기관이나 학교 등에서는 해당
가입자별로 ID와 패스워드를 부여해 접속한 ID별로 MRTG 그래프를 볼 수 있도록 할 수
있다. 이때 이용되는 것은 펄 언어와 아파치 서버(물론 GCI를 처리하는 다른 언어도
사용 가능).

한 ISP와 전용회선으로 연결된 랜드라는 회사에 ID와 패스워드를 부여해 이 ID로 자기
회사의 전용회선 트래픽을 볼 수 있도록 ID 입력창→ 인증창→ MRTG 화면의 순서를
거치면 된다.

① ID와 패스워드 정하기

랜드 - ID: land, 패스워드: ld1234

② cfg 파일 생성

mrtg.cfg파일에 land 라는 이름으로 등록하자. 여기서 WorkDir은 /home/httpd/MRTG/
설정.

③ mrtg 실행

‘mrtg mrtg.cfg’를 실행하면, /home/httpd/MRTG/밑에 land-day.png, land-week.png,
land-mon th.png, land-year.png, land.html 파일이 생성된다.

④ ID별로 디렉토리 생성해 작업하기

ID와 같은 이름으로 home/httpd/land 라는 디렉토리를 만들자.

home/httpd/land 디렉토리에 .htpasswd파일과 .htaccess파일을 생성해 아래와 같이
수정한다. 이 파일의 역할은 웹 상에서 이 디렉토리로 접근하려면 ID와 패스워드를
물어보는 역할을 한다.

mrtg# cat .htaccess
AuthName MRTG (이 값은 시스템마다 다름)
AuthType Basic
AuthUserFile /home/httpd/land/.htpasswd ( 패스워드가 저장된 파일 지정)
AuthGroupFile /dev/null
[CODE]<Limit GET POST> require valid-user </Limit>[/CODE]
mrtg# cat .htpasswd
land:z5EPIRJHqBQV (암호화된 패스워드)

⑤ Symbolic Link 설정 단계

현재 MRTG 결과 파일들은 ‘/home/httpd/MRTG/’에 저장되어 있고, 외부에서 ID별로
접속할 때는 ‘/home/httpd/land/로 연결되도록 구성하고자 한다. 이 경우 실제
파일들이 있는 위치를 ‘ln’명령을 사용하여 symbolic link를 시킬 수 있다.

mrtg# pwd
/home/httpd/land
mrtg# ln -s /home/httpd/MRTG/land-day.png
mrtg# ln -s /home/httpd/MRTG/land-week.png
mrtg# ln -s /home/httpd/MRTG/land-month.png
mrtg# ln -s /home/httpd/MRTG/land-year.png
mrtg# ln -s /home/httpd/MRTG/land.html

⑥ 웹 상에서 입력한 ID를 구분하는 프로그램

마지막으로 웹 상에서 ID(land)를 입력하고 ‘/home /httpd/land/land.html’ 창이
뜨도록 하면, 이 디렉토리에는 ‘.htaccess’파일이 있기 때문에 인증창이 뜨게 된다.
다시 말해 웹페이지에서 ID를 입력받도록 페이지를 만들고, CGI를 이용해 ID별로 해당
MRTG 그래프가 뜨도록 하면 된다. 필자는 CGI 프로그램을 펄을 이용해 작성해 봤다.

[ 웹페이지상에서 ID를 입력 받는 부분]

[CODE]<form method=”GET” action=”http://www.mrtg.co.kr/cgi-bin/id.pl”> <b> ID: </b><INPUT type=”text” name=”fname”>[/CODE]

[펄 프로그램 (id.pl)]

웹페이지에서 넘어온 ID를 이름(fname)과 값(id)으로 분리하는 작업

[CODE] $qs = $ENV{‘QUERY_STRING’}; # ‘fname&land’ 와 같은 형식으로 넘어오기 때문에, ‘&’를 기준으로 분리해 저장 @qs = split(/&/, $qs); foreach $i (0 .. $#qs) { # convert plus chars to spaces $qs[$i] =~ s/+/ /g; # convert the hx characters $qs[$i] =~ s/%(..)/pack(“c”, hex($1))/ge; # split each one into name and value ($name, $value) = split(/=/, $qs[$i],2); # $value변수에 ‘land’가 할당된다. # create the associative element $qs{$name} = $value; } # 실제 html 형식으로 출력하는 부분. print “Content-type: text/html”, “”; print “<HTML>”, “”; print “<HEAD><TITLE>$value MRTG 트래픽</TITLE></HEAD>”, “”; # mrtg.co.kr이라는 도메인을 운영할 경우 아래와 같이 사용 가능 print “\u8221”http://www.mrtg.co.kr/$value/$value.html\u8221”>”, “”; print “</HTML>”, “”; [/CODE]
이상으로 MRTG에 대한 기본적인 내용과 설치 방법, 그리고 몇 가지 응용 예를
살펴봤다. 이외에도 MRTG를 활용해 수 있는 일이 많다.


--------------------------------------------------------------------------------

MRTG 지원 가능한 플랫폼

리눅스 1.2.x, 2.0.x, 2.2.x
SunOS 4.1.3
솔라리스 2.4, 2.5, 2.5.1, 2.6, 7
AIX 4.1.4, 4.2.0.0
HP-UX 9,10,11
IRIX 5.3, 6.2
BSDI BSD/OS 2.1, 4.x, 3.1
NetBSD(sparc)
FreeBSD 2.1.x, 2.2.x, 3.1, 3.4
OpenBSD 2.5, 2.6
디지탈 유닉스 4.0
SCO 오픈 서버 5.0
Reliant UNIX
NeXTStep 3.3
OpenStep 4.2
윈도우 NT 3.51, 4.0, 2000

--------------------------------------------------------------------------------

MRTG 이용해 라우터 포트와 CPU 사용률 체크하기

아래의 cfg 파일은 시스코 카탈리스트 5500 장비에서 MRTG를 이용해 모니터링할 수
있는 방법을 설명한 것으로써 3번과 5번 포트 사용률과 CPU 사용률을 보여주고 있다.

WorkDir: D: (윈도우 NT인 경우),
WorkDir: /home/httpd/mrtg (유닉스인 경우)

Interval: 5 (5분마다 반복)
RunAsDamon: yes (운영체제로 하여금 매 5분마다 mrtg를 실행하도록 함)

3번 포트의 경우 기본적인 키워드만 사용한 경우로써, 10Mbps 이더넷 포트에 대한
트래픽을 보여준다.

MaxBytes는 125×대역폭(bit)를 의미하므로, 10Mbps인 경우 1250000가 된다.
[CODE] Target[cat5500_3]: 3:public@10.10.10.1 MaxBytes[cat5500_3]: 1250000 Title[cat5500_3]: LC-Bridge (sample-device): ether0 PageTop[cat5500_3]: <H1>Traffic Analysis for ether0</H1> <TABLE> <TR><TD>System:</TD><TD>LC-Bridge inAndover</TD></TR> <TR><TD>Maintainer:</TD><TD>Administrator</TD></TR> <TR><TD>Interface:</TD><TD>ether0(3)</TD></TR> <TR><TD>IP:</TD><TD>sample-device(10.10.10.1)</TD></TR> <TR><TD>Max Speed:</TD> <TD>1250.0 kBytes/s (ethernetCsmacd)</TD></TR> </TABLE> [/CODE]
5번 포트의 경우 추가의 키워드를 적용했고, 웹 페이지에 나타나는 부분도 수정을
했음. 키워드에 관해서는 ‘doc/co nfig.txt’를 참조.

[CODE] Target[cat5500_5]: 5:public@10.10.10.1 MaxBytes[cat5500_5]: 1250000 Title[cat5500_5]: Catalyst 5500 Port 5번 PageTop[cat5500_5]: <H1> Catalyst 5500 Port 5번 트래픽 </H1> <TABLE> <TR><TD>Interface:</TD><TD>Ethernet 1/5</TD></TR> <TR><TD>IP:</TD><TD>10.10.1.1</TD></TR> <TR><TD>Max Speed:</TD> <TD>10.0 Mbit/s (ethernetCsmacd)</TD></TR> </TABLE> [/CODE]
### XScale YScale------------
XScale[cat5500_5]: 1.5
YScale[cat5500_5]: 1.5
WithPeak[cat5500_5]: ymw
Unscaled[cat5500_5]: ymwd
Options[cat5500_5]: growright, bits
Colours[cat5500_5]: GREEN#00eb0c,BLUE#1000ff,DARK GREEN#006600,VIOLET#ff00ff
YLegend[cat5500_5]: Bits per Second
ShortLegend[cat5500_5]: b/s
Legend1[cat5500_5]: Incoming Traffic in Bits per Second
Legend2[cat5500_5]: Outgoing Traffic in Bits per Second
Legend3[cat5500_5]: Maximal 5 Minute Incoming Traffic
Legend4[cat5500_5]: Maximal 5 Minute Outgoing Traffic
LegendI[cat5500_5]: In:
LegendO[cat5500_5]: Out:

카탈리스트 5500의 CPU 사용률을 보기 위해서는 포트 번호 대신 특정 OID(Object ID =
MIB값)가 필요하다. mrtg는 기본적으로 인력과 출력의 2개 값이 필요하므로, CPU
사용률과 같이 값이 하나인 경우에는 ‘&’를 기준으로 같은 OID를 적어 주면
된다.

Target[cat5500_cpu]:1.3.6.1.4.1.9.2.1.58.0&1.3.6.1.4.1.9.2.1.58.0:public@10.10.10.1
RouterUptime[cat5500_cpu]: public@10.10.10.1
MaxBytes[cat5500_cpu]: 100
Title[cat5500_cpu]: CPU LOAD
PageTop[cat5500_cpu]:

CPU Load %


Unscaled[cat5500_cpu]: ymwd
ShortLegend[cat5500_cpu]: %
XSize[cat5500_cpu]: 380
YSize[cat5500_cpu]: 100
YLegend[cat5500_cpu]: CPU Utilization
Legend1[cat5500_cpu]: CPU Utilization in % (Load)
Legend2[cat5500_cpu]: CPU Utilization in % (Load)
Legend3[cat5500_cpu]:
Legend4[cat5500_cpu]:
LegendI[cat5500_cpu]:
LegendO[cat5500_cpu]: Usage
Options[cat5500_cpu]: gauge

출처 : http://www.linuxc.net
반응형

'OS > LINUX' 카테고리의 다른 글

[LINUX] iptables  (0) 2007.10.25
iptables  (0) 2007.10.25
SELinux 에 대하여  (0) 2007.07.23
[linux] 리눅스의 각종 데몬들  (0) 2007.07.21
LINUX RPM 관련 명령어  (0) 2007.07.03
Posted by [PineTree]
OS/LINUX2007. 7. 23. 22:47
반응형

<출처 : 수퍼유저코리아> - http://www.superuser.co.kr/home/lecture/?leccode=10637

 

각종 리눅스관련 트러블슈팅을 처리하다보면 공부해야할것들이 참 많다.
요즘 자주 거론되는 문제가 SELinux 관련된 문제들인데, SELinux 라면 아직 못들어본 사람이 꽤 많이 있을것이다.

SELinux의 내부적인 구현원리 같은 부분은 이 문서에 다루고자 하는 내용이 아니다.
SELinux의 아키텍처나 코드에 대한 부분을 더 많이 알기위해서는 IBM의 기술문서(http://www-128.ibm.com/developerworks/kr/library/l-selinux/index.html) 을 참고하거나 NSA의 홈페이지(http://www.nsa.gov/selinux/)등를 참고하기 바란다.
필자는 단지 여러분이 시스템을 관리하면서 새롭게 만나게되는 SELinux에 관련된 문제를 이문서를 통해서 해결할수 있기를 바랄뿐이다.

작성자 : (주)수퍼유저코리아, http://www.superuser.co.kr 서버팀

 

차례(전체목차)

1. SELInux(Security-Enhanced Linux) 란?

2. SELinux 정책이란 무엇인가?

3. SELinux 설치여부 확인

4. SELinux 기본설정 - /etc/sysconfig/selinux

5. SELinux 서비스 설정 - setenforce

6. SELinux 서비스 설정 - chcon

7. SELinux 서비스 설정 - setsebool

8. 사용중인 정책을 교체하는 방법은?

9. SELinux LOG

10. Audit2allow

11. avc: denied

12. 참고문헌 또는 URL

 

1. SELInux(Security-Enhanced Linux) 란?

top

SELinux 란 미 국가 보안국 (U.S. National Security Agency)리 오픈소스커뮤니티에 릴리즈한 Linux의 보안 강화 버전(코드 포함)으로서 리눅스 보안 모듈 구조체(Linux Security Modules(LSM) framework)를 이용하여 리눅스 커널에 의무 접근 제어(Mandatory Access Control - MAC)를 구현하는 것이다. Fedora Core3부터 기본으로 적용되기 시작하였고, 현재 대부분의 최신 리눅스 배포판에서 지원되고있다.

SELinux에 대한 이해를 돕기위해서 DAC, MAC를 잠깐 이야기 해보자.

표준 리눅스 보안은 Discretionary Access Control - DAC 모델을 따른다. DAC 모델에서, 파일과 자원에 대한 결정권은 오직 해당 객체(objects)의 사용자(user id)에게 있고 소유권(ownership)에 따라 이뤄진다. 각 사용자와 그 사용자에 의해 실행된 프로그램은 자기에게 할당된 객체에 대해 전적으로 자유재량권을 갖는다. 이러한 상황에서는, 악의 있는 일반 혹은 루트 사용자(예로, setuid와 setgid)가 실행시킨 결함이 있는 소프트웨어를 통해 주어진 객체로 원하는 어떠한 일을 해도 막아낼 방법이 없으며 보안 정책을 시스템 전체에 걸쳐 시행되도록 할 방법이 없다.

반면에 SELinux하에서 MAC는 모든 주체(subjects - 사용자, 프로그램, 프로세스)와 객체(파일, 디바이스)에 대해서 국부적으로 허가(granular permissions)해 줄 수 있다. 응용프로그램에서 불필요한 부분은 제외하고 오직 필요한 기능에 대해서만 사용 권한을 안전하게 부여하는것이 가능하다.

SELinux는 모든 주체 (사용자, 프로그램, 프로세스) 및 객체 (파일과 장치)에 각각 다른 권한을 부여할 수 있게 해줍니다. 따라서 사용자는 한 응용 프로그램에게 그 프로그램이 제대로 작동하는데 필요한 권한만 안전하게 부여할 수 있다.

 

2. SELinux 정책이란 무엇인가?

top

SELinux 정책은 사용자, 프로그램, 프로세스 그리고 이들의 동작 대상인 파일과 디바이스를 포함한 시스템 전체, 즉, 모든 주체와 객체에 대한 접근 허가(access permissions)를 포함한 패키지를 이야기한다. 페도라에서 사용가능한 정책 패키지는 strict , targeted 두가지가 있다.

페도라코어에서 SELinux 정책으로 strict policy 를 적용함으로 인해서 다양한 사용자들이 많은 문제점을 일으킴으로 인해서(일반사용자들이 SELinux를 사용하기 위해서는 수준높은 전문기술이 필요하다) 현재 RHEL4 에서는 보다 완화된 정책패키지 targeted poicy 가 설치시 기본으로 제공된다.

targeted policy는 자주 문제시되는 부분들만 우선적으로 적용시키고, 나머지는 표준 리눅스 보안과 동일하게 운영되도록 적용한 정책이다.

현재, targeted policy 에서는 dhcpd, httpd(apache.te), named, nscd, ntpd, portmap, snmpd, squid 그리고 syslogd 데몬에 대해서 관리한다.
이 데몬들에 대한 정책 파일은 /etc/selinux/targeted/src/policy/domains/program에서 찾을 수 있다.

 

3. SELinux 설치여부 확인

top

SELinux 를 사용하고 있는지를 확인하는 방법은 보안문맥을 확인하는 방법으로 알 수 있다.

파일, 사용자, 프로세스등의 문맥을 확인할 때는 -Z 라는 새 옵션을 이용해서 확인할 수 있다.

ls -lZ /etc/selinux

-rw-r--r-- root root system_u:object_r:selinux_config_t config

drwxr-xr-x root root system_u:object_r:selinux_config_t targeted

-Z옵션을 이용해서 보안문맥을 보여주는데 이 결과를 통해서 "system_u" 사용자, "object_r" 역할, "selinux_config_t" 타입을 확인할수 있다. 이런 문맥으로 SELinux의 정책에 비교해서 허용하거나 거부하게 되므로 문맥이 확인가능하다면 SELinux 를 사용중인 것이다.

파일 이외에 프로세스와 사용자에도 각각 아래처럼 보안문맥을 확인할수 있다.

root@example# ps axZ | grep squid

user_u:system_r:squid_t 3912 ? Ss 0:00 squid -D

user_u:system_r:squid_t 3915 ? S 9:10 (squid) -D

user_u:system_r:squid_t 3916 ? Ss 0:01 (unlinkd)

root@example# id

uid=0(root)

gid=0(root)groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)

context=root:system_r:unconfined_t


 

RedHat 의 SELinux 패키지 경우에는 sestatus -v 라는 명령을 이용해서 현재 SELinux의 사용상태를 아래와 같이 확인할수 있다.

[root@ns selinux]# sestatus -v

SELinux status: enabled

SELinuxfs mount: /selinux

Current mode: enforcing

Mode from config file: enforcing

Policy version: 18

Policy from config file:targeted

Policy booleans:

allow_ypbind active

dhcpd_disable_trans inactive

httpd_disable_trans active

httpd_enable_cgi active

httpd_enable_homedirs active

httpd_ssi_exec active

httpd_tty_comm inactive

httpd_unified active

mysqld_disable_trans inactive

named_disable_trans active

named_write_master_zonesactive

nscd_disable_trans active

ntpd_disable_trans inactive

portmap_disable_trans inactive

postgresql_disable_transinactive

snmpd_disable_trans inactive

squid_disable_trans inactive

syslogd_disable_trans inactive

winbind_disable_trans inactive

ypbind_disable_trans inactive

Process contexts:

Current context: root:system_r:unconfined_t

Init context: user_u:system_r:unconfined_t

/sbin/mingetty user_u:system_r:unconfined_t

/usr/sbin/sshd user_u:system_r:unconfined_t

File contexts:

Controlling term: root:object_r:devpts_t

/etc/passwd root:object_r:etc_t

/etc/shadow system_u:object_r:shadow_t

/bin/bash system_u:object_r:shell_exec_t

/bin/login system_u:object_r:bin_t

/bin/sh system_u:object_r:bin_t -> system_u:object_r:shell_exec_t

/sbin/agetty system_u:object_r:sbin_t

/sbin/init system_u:object_r:init_exec_t

/sbin/mingetty system_u:object_r:sbin_t

/usr/sbin/sshd system_u:object_r:sbin_t

/lib/libc.so.6 system_u:object_r:lib_t -> system_u:object_r:shlib_t

/lib/ld-linux.so.2 system_u:object_r:lib_t -> system_u:object_r:ld_so_t

[root@ns selinux]#

 

4. SELinux 기본설정 - /etc/sysconfig/selinux

top

배포판마다 서비스 설정방법은 차이가 있다. 필자가 테스트한 레드햇과 페도라 배포판에서는 /etc/sysconfig/selinux 파일에서 SELinux 의 사용가능한 모드를 설정한다.

/etc/sysconfig/selinux 파일의 내용

# This file controls the state of SELinux on the system.

# SELINUX= can take one of these three values:

# enforcing - SELinux security policy is enforced.

# permissive - SELinux prints warnings instead of enforcing.

# disabled - SELinux is fully disabled.

SELINUX=enforcing

# SELINUXTYPE= type of policy in use. Possible values are:

# targeted - Only targeted network daemons are protected.

# strict - Full SELinux protection.

SELINUXTYPE=targeted

이 파일에는 두부분의 설정이 있는데 SELINUX 의 상태(enforcing, permissive, disabled)를 설정하는 부분과 활성화시킬 보안정책(strict 또는 targeted 중 하나)을 결정하는 SELINUXTYPE 이라는 부분이 있다.

disabled - SELinux 보안 제어를 사용하지 않으려면 disalbed 옵션을 선택한다. disalbed 설정은 보안 제어 기능을 끄고 시스템이 보안 정책을 사용하지 않도록 설정한다.

permissive - 이것을 선택하면 서비스 거부 메시지를 통보받을 수 있다. permissive 상태로 설정하면 자료와 프로그램에 이름을 할당한 후 로그를 기록하지만 보안 정책을 사용하지는 않는다. permissive 상태는 SELinux를 처음 접하는 경우 처음부터 이 기능을 완전히 활성화하지 않고 우선 이 정책을 사용해서 일반 시스템 작업시 어떠한 영향을 미치는지 알아보려는 경우 좋은 시작점이 될 수 있다. 그러나 경고 옵션을 선택시 가끔씩 보안경고 대상이 아닌 것을 경고 대상으로 탐지하는 오류(false positive)나 경고 대상인 것을 탐지하지 않는 오류(false negative)가 발생할 가능성도 있으니 주의가 필요하다.

enforcing - SELinux를 완전히 활성화하시려면 enforcing 옵션을 선택하자. enforcing 옵션을 선택하면 추가 시스템 보안을 위해 모든 보안 정책 (예, 허가가 없는 사용자가 특정한 파일이나 프로그램에 접근하는 것을 거부하기)을 사용한다. SELinux가 완전히 실행되어도 아무런 지장을 받지않고 일반적인 시스템 작업을 수행할 수 있다고 자신하시경우 이 옵션을 선택한다.

 

5. SELinux 서비스 설정 - setenforce

top

SELinux의 서비스 상태를 변경해야 하는 필요가 있을때는 직접 /etc/sysconfig/selinux 파일에서 SELINUX=enforcing , 또는 SELINUX=permissive 처럼 수정해서 변경하는 방법도 있지만 setenforce 라는 명령어를 이용할수 있다.

"setenforce 0" 이라고 명령을 내리는것은 SELINUX=permissive 와 동일한 결과이며, "setenforce 1" 은 enforcing 모드를 의미한다. 시스템에서 SELinux 를 완전히 사용하지 않으려면 /etc/sysconfig/selinux 파일에서 SELINUX=disabled 처럼 설정하거나 시스템 부팅시에 부트로더의 파라미터로 selinux=0 이라고 주고 부팅하면 된다. (grub 을 사용하는 경우라면 grub 화면에서 e 를 누르고 편집모드로 들어간뒤에 kernel 줄의 맨 뒤에 selinux=0 을 적어주고 ESC, 그리고 b 를 눌러서 부팅하면 된다.)

sentenforce 명령은 sysadm_r 권한을 갖고 수행해야 한다; 그러기 위해, newrole 명령을 사용하거나, 아니면, su -를 사용하여 root 로 사용자 전환을 하면, 자동으로 sysadm_r 권한을 얻을 수 있다.

 

6. SELinux 서비스 설정 - chcon

top

SELinux 의 보안문맥을 변경해야 하는 경우에는 chcon 이라는 명령을 사용할수 있다.

아파치를 사용중에 분명히 디렉토리를 생성했는데도 에러가 난다면 아래처럼 http_user_content_t 를 해당 DocumentRoot 에 적용해줌으로 해결해 줄수있다.

chcon -R -t httpd_user_content_t /home/사용자계정/public_html

 

7. SELinux 서비스 설정 - setsebool

top

S[root@ns ~]# cat /etc/selinux/targeted/booleans

allow_ypbind=1

dhcpd_disable_trans=0

httpd_disable_trans=1

httpd_enable_cgi=1

httpd_enable_homedirs=1

httpd_ssi_exec=1

httpd_tty_comm=0

httpd_unified=1

mysqld_disable_trans=0

named_disable_trans=1

named_write_master_zones=1

nscd_disable_trans=1

ntpd_disable_trans=0

portmap_disable_trans=0

postgresql_disable_trans=0

snmpd_disable_trans=0

squid_disable_trans=0

syslogd_disable_trans=0

winbind_disable_trans=0

ypbind_disable_trans=0

RHEL4의 경우 전환가능한 시스템의 SELinux 설정값들을 나타내는 파일은 /etc/selinux/targeted/booleans 파일이다. 파일안의 각 항목은 system-config-securitylevel 이라는 어플리케이션이나 setsebool 이라는 명령을 이용해서 변경시킬수 있으며 setsebools 을 이용하는 경우 -P 옵션을 사용하지 않으면 설정파일은 변경되지 않고 현재의 설정만 바뀌지만 -P 옵션을 같이 사용하면 /etc/selinux/targeted/booleans 파일의 내용까지 같이 변경되어 시스템 리부팅후에도 적용된다.

 

8. 사용중인 정책을 교체하는 방법은?

top

배정책 교체는 가볍게 취할 사안이 아니다.

연구 목적으로 시험 장비(test machine)에서 새 정책을 시도하는 이외, 생산 시스템(production system)에서는 다른 정책으로 교체하기 전에 현황을 심각하게 고려해야 한다.

교체 작업은 간단하다. 이는 매우 안전한 방법이지만, 우선 시험 시스템에서 일차 시도해 보는 것이 바람직하다.

한 가지 방법은 system-config-securitylevel을 사용하여 정책을 바꾸고 재명명(relabel)하도록 파일 시스템을 설정하는 것이다.

수작업 절차는 다음과 같다:

1. /etc/selinux/config을 편집하고 SELINUXTYPE=policyname으로 정책 유형을 바꾼다.

2. 재부팅하여 돌아올 수 있는 지 확인하기위해, SELINUX=permissive모드로 설정한다. 이렇게 하면, SELinux는 정확한 정책하에서 가동될 것이지만, 만일 부정확한 파일 문맥 명명(labeling)과 같은 문제가 있으면 로그인하도록 할 것이다.

3. sysadm_r 역할을 갖춘 root로 파일 시스템을 재명명한다(relabel):

id -Z

root:sysadm_r:sysadm_t

fixfiles relabel

옵션 -l /path/to/logfile을 사용하여 표준 출력으로 로그를 볼 수 있고, 옵션 -o /path/to/file을 사용하여 검토(checked)되거나 재명명(relabel ed)된 모든 파일 리스트를 저장할 수 있다.

4. 시스템을 재부팅한다. 새 정책하에서의 재시작은 모든 시스템 프로세스가 적절한 문맥에서 시작되고 정책 변경으로 인한 모든 문제가 드러나게 한다.

5. sestatus -v 명령으로 발효된 변경사항을 확인한다. Permissive 모드로 가동된 새 시스템에서, avc: denied 메시지를 /var/log/messages에서 확인한다. 이들은 새 정책하에 문제없이 시스템이 가동되도록 해결해야 할 문제들을 표시해 준다.

6. 새 정책하에서 시스템이 만족스럽게 돌아갈 때, SELINUX=enforcing 으로 바꿔 실행 권한을 부여한다. 실시간에 enforcing을 활성화 시키기 위해 재부팅하거나 setenforce 1 을 실행한다.

 

9. SELinux LOG

top

SSELinux 의 로그는 /var/log/messages 파일에 아래처럼 나타난다.

kernel: audit(1114070701.193:0): avc: denied { read } for pid=24216

exe=/usr/libexec/mysqld name=mysql dev=cciss/c0d0p6 ino=16408

scontext=user_u:system_r:mysqld_t tcontext=root:object_r:var_lib_t

tclass=dir

이 로그는 아래와 같이 해석할수 있다.

- 읽기 요청이 거부되었다.

- PID 24216을 가진 프로세스가 read를 시도한다

- 해당프로세스는 /usr/libexec/mysqld 이다

- /dev/cciss/c0d0p6 에서 작동되고 있다

- inode 는 16408이다.

- 프로세스의 SELinux 문맥은 user_u:system_r:mysqld_t 이다.

- tcontext=root:object_r:var_lib_t : 이파일이 읽기를 시도하는 파일은 var_lib_t 타입의 root 소유파일이다.

SELinux LOG 각 항목의 의미

audit(timestamp) - This field states that it's an audit message from SELinux and that it was logged at timestamp time (in seconds since Jan. 1st, 1970).

avc - This message was from the SELinux access vector cache. Pretty much every message you are likely to see is from this cache.

denied | accepted - This field indicates whether the action was denied or accepted. You may see logs of accepted messages in some cases (like reloading the policy).

{ read | write | unlink | ... } - This field shows the type of action that was attempted, such as reading a file, writing, unlinking, loading policy, etc.

for pid=<pid> - This is the process ID that attempted the action.

exe=<executable>- This is the path to the executable that started the process.

name=<name> - This is the name of the target on which the action was attempted.

dev=<device> - This is the device on which the target file is located.

ino=<inode-number> - This is the inode of the target of the action.

scontext=<security context> - This is the process's security context. This contains user, role, and type.

tcontext=<target context> - This is the security context of the target of this action, for example, the file, directory, etc.

tclass=<target class> - This is the class of the target object, such as directory, file, device node, or something else.

 

10. Audit2allow

top

정책 작성자에게 유용한 도구는 /usr/bin/audit2allow 인데 이것은 /var/log/messages의 avc 메시지를 SELinux에 의해 사용될 수 있는 규칙으로 번역해준다. 사용이 불가능하다면 policycoreutils 패키지에 속해있으므로 yum install policycoreutils 처럼 설치 가능하다.

audit2allow명령은 세가지 방법으로 입력을 받을 수 있다. 기본은 표준입력 (stdin)이다. -i 옵션을 사용하면 /var/log/messages 로부터 입력을 읽을 수 있고 -d옵션을 사용하면 dmesg 출력으로부터 입력을 읽을 수 있다.

 

11. avc: denied

top

이 메시지는 현재 실행된 SELinux 정책이 그 응용프로그램의 동작을 허락하지 않기 때문이다. 이러한 일에는 여러 가지 사유가 존재한다.

첫째, 응용프로그램이 접근하려는 파일중 하나가 잘못 명명되어있을 수 있다. 만일 AVC 메시지가 특정 파일을 참조한다면, ls -alZ /path/to/file 을 수행하여 현재 참조하는 파일명(current label)을 조사해 보라. 만일 그것이 잘못되어 보이면, restorecon -v /path/to/file 을 시도해보라. 만일 파일과 관련된 매우 많 은 거부(denials) 상황이 존재하면, fixfiles relabel 을 수행하거나, 반복적으로 디렉토리 경로를 재명명하기 위해서 -R옵션과 함께 restorecon 을 수행하고 싶을 수 있다.

다른 때에는, 거부(denials) 현상은 정책에 의해 거부되도록 프로그램에 설정을 바꿔서 발생될 수 있다. 예를 들면, 만일 Apache를 8800포트로 바꾸면, 보안 정책, apache.te,도 관련하여 바꿔야 할 필요가 생긴다. 정책 작성에 관한 상세한 정보가 필요하면, 외부연결 리스트(External Link List)를 보라.

 

12. 참고문헌 또는 URL

top

Home of the SELinux project - http://www.nsa.gov/selinux/

The Un-Official SELinux FAQ - http://www.crypt.gen.nz/selinux/faq.html

SELinux link zoo - http://www.crypt.gen.nz/selinux/links.html

Ubuntu Linux SELinux pages - https://www.ubuntulinux.org/wiki/SELinux

2005.8 Sys Admin Magazine - http://www.samag.com/documents/s=9820/sam0508a/0508a.htm

NSA SELinux FAQ - http://www.nsa.gov/selinux/info/faq.cfm

SELinux community page - http://selinux.sourceforge.net

UnOfficial FAQ - http://www.crypt.gen.nz/selinux/faq.html

Writing SE Linux policy HOWTO - https://sourceforge.net/docman/display_doc.php?docid=21959&group_id=21266

Getting Started with SE Linux HOWTO: the new SE Linux (Debian) - https://sourceforge.net/docman/display_doc.php?docid=20372&group_id=21266

반응형

'OS > LINUX' 카테고리의 다른 글

iptables  (0) 2007.10.25
[Linux] mrtg setting  (0) 2007.10.17
[linux] 리눅스의 각종 데몬들  (0) 2007.07.21
LINUX RPM 관련 명령어  (0) 2007.07.03
C쉘 설정파일(.cshrc)  (0) 2007.04.12
Posted by [PineTree]
OS/LINUX2007. 7. 21. 18:56
반응형

◈  리눅스의 각종 데몬들

 

Redhat 8.0 System services description

작성자: 박경랑 (연세대학교 슈퍼컴퓨팅 , lanx@parallel.yonsei.ac.kr)
작성일: 2003. 4. 10 연속으로 해킹 두번 당하고 만듦 -_-

 

Name Description Port Etc
FreeWnn 일본어 변환 엔진: Kana-to-Kanji 변환 시스템의 network-extensible 버젼
http://www.freewnn.org 
   
Aep1000 aep1000/2000 coprocessor 드라이버    
amanda 네트워크를 통해 여러 host의 데이터를 backup 서버에 저장/복원하는 backup 시스템 http://www.amanda.org    
amandaidx amanda server package 의 일부    
Amd demand에 의해 device들이나 NFS host들을 마운트 시킬 수 있는 automount daemon (커널에 의한 지원이 필요없음) http://www.nber.org/amd.html    
amidxtape amanda server package 의 일부    
anacron Periodic command scheduler. cron과 달리 시스템이 계속 켜있지 않다고 가정
하루보다 더 작은 단위의 스케쥴을 수행. http://anacron.sourceforge.net/
   
apmd apm service를 지원하기 위한 daemon    
arpwatch 하드웨어 이터넷 주소와 IP 주소 쌍을 모니터링하는 툴로 로컬 네트워크에서 위장 IP를 탐지할 수 있다.    
atalk Appletalk network protocol을 이용하여 Macintosh computer들과 통신하게 하는 package. http://www.cs.mu.oz.au/appletalk/atalk.html    
atd 나중에 수행하려고 등록한 작업을 실행한다. 즉 command들을 정해진 시간에 실행되게 예약하고 load average가 충분히 낮을 때 수행한다.    
autofs amd 보다 더 발전적인 automount 시스템. 커널의 파일 시스템 코드가 automount의 mount point가 다른 보통의 기본적인 파일 시스템 상의 어디에 있는지를 알고 autofs는 그곳에서 mount point를 가져온다. http://kldp.org/HOWTO/mini/html/Automount/    
bcm5820 BCM5820 Cyptonet 드라이버를 load/unload한다    
bgpd Border Gateway Protocol 4 (BGP-4) protocol daemon (zebra와 같이 사용하기 위한 routing engine - BGPv4, BGPv4+, BGPv4-)
http://www.pointless.net/~jasper/zebra-html/zebra_65.html
   
bootparamd bootparamd server는 옛 sun workstation 들을 linux box를 통해서 net boot가 가능하게 한다. 현재 rarp와 함께 거의 쓰이지 않는데, 이를 대신해서 bootp와 dhcp가 사용된다    
cWnn 중국어 변환 엔진    
canna 일본어 변환 엔진    
chargen chargen server ver.TCP. chargen: 단순 문자열 발생 서비스 19  
chargen-udp chargen server ver.UCP    
comsat 새 메일이 왔을 때, comsat 서버는 biff client에게 이를 통보해준다.    
crond crond    
cups-lpd lagacy lpt protocol을 이용해서 CUPS와 통신하는 것을 가능하게 하는 서비스    
daytime daytime ver.TCP    
daytime-udp daytime ver.UCP    
dbskkd-cub 일본어 관련    
dhcpd dhcpd    
dhcrelay dhcp에 대한 relay 제공    
echo echo ver.TCP    
echo-udp echo ver.UDP    
eklogin 암호화된 kerberized rlogin server.(kerberize 5를 이용하여 암호화됨)    
finger finger    
firstboot 처음에 시작된느 드루이드 스타일의 프로그램    
gpm gpm란, 마우스를 사용한 'cut- and-paste'를, X 상에서 가능한것처럼, Linux의 가상 단말기 사이에서도 가능하도록 하는 프로그램이다    
gssftp gssftp    
httpd httpd    
identd 각각 tcp connection에 대해서 user의 식별을 가능하게 함. TCP port number를 통해서 서버시스템의 connection의 소유자를 인식하는 character string을 제공한다.    
imap imap    
imaps imap    
innd usenet news server    
ip6tables iptable을 이용한 packet filitering firewall의 자동화 서비스    
ipchains ipchain을 이용한 packet filitering firewall의 자동화 서비스    
ipop2 ipop    
ipop3 ipop    
iptables iptables를 사용하여 자동적으로 패킹 필터링을 한다.
http://www.linux.co.kr/theme/pageview.html?ca=200108&pageid=40&casub=iptables&st=Iptables로 기본적인 firewall 구축하기
   
ipvsadm 리눅스 가상 서버를 설치한다.
http://www.linuxvirtualserver.org/
   
irda IrDA 적외선 프로토콜
http://kldp.org/KoreanDoc/html/Kernel-KLDP/specirda.html
   
iscsi      
isdn      
kWnn Korean Conversion Engine    
kadmin The kadmin utility communicates with the kadmind server over the network, and they use Kerberos to handle authentication
http://www.redhat.com/docs/manuals/linux/RHL-7.3-Manual/ref-guide/s1-kerberos-server.html
   
keytable 키보드맵과 시스템폰트를 로드하는 역할을 수행하며 다른 프로그램을 구동시키지 않는다    
klogin kerberos rlogin
http://web.mit.edu/kerberos/www/
   
kotalk      
kprop      
krb5-telnet      
krb524      
krb5kdc      
kshell      
ktalk      
kudzu 부팅시에 새롭게 설치된 하드웨어에 대한 정보를 설정하는 데몬
http://linuxcommand.org/man_pages/kudzu8.html
   
ldap      
lpd line 프린터 데몬으로 부팅될 때 호출된다
http://www.linuxprinting.org/lpd-doc.html
   
mars-nwe NetWare 호환 파일 프린터 서버    
mdmonitor software RAID monitoring and management    
micronode_ctl ?script to apply cpu microcode    
mysqld      
named Named는 인터넷 도메인 네임 서버이며 /etc/named.con파일을 기본적으로 읽어 사용한다.
http://kldp.org/HOWTO/html/DNS-HOWTO/index.html
   
netdump http://www.redhat.com/support/wpapers/redhat/netdump/index.html    
netdump-ser      
netfs NFS, 삼바, 노벨 드라이버의 익스포트파일을 마운트 하는 역할을 한다
   
network      
nfs      
nfslock NFS file locking Server    
ntalk C++과 Ncurses 라이브러리로 작성된 채팅 프로그램
http://www.ntalk.prv.pl/
   
ntpd NTPv4를 위한 데몬
http://www.ntp.org/index.html
   
ospff6d RFC2178에 명시되어 있는 OSPFv2 라우팅 프로토콜 제공 데몬 (IPv6)    
ospfd RFC2178에 명시되어 있는 OSPFv2 라우팅 프로토콜 제공 데몬
http://www.rrf.ru/doc/zebra/ospfd.html
   
pcmcia      
pop3s      
portmap RPC(Remote Procedure Call)서비스를 위한 포트를 할당하는 역할을 하는 데몬    
postgresql      
privoxy Advanced Filtering을 제공하는 web proxy
http://www.privoxy.org/
   
psacct 프로세스 통계 관련한 패키지
http://kldp.org/HOWTO/mini/html/Process-Accounting/Process-Accounting.html#toc4
   
pxe A Preboot Execution Environment Server, PXE based 머신에서 네트워크 부팅을 할수 있게 해준다.
http://www.kegel.com/linux/pxe.html
   
radvd 라우터 통보 데몬으로 IPv6 라우터로써 Linux에서 동작한다.
http://v6web.litech.org/radvd/
   
random http://man.kldp.org/man/man4/random.4.html    
rarpd 사용자 레벨 reverse ARP 데몬 프로그램
http://www.gsp.com/cgi-bin/man.cgi?section=8&topic=rarpd
   
rawdevice raw devices를 block devices (하드 드라이브 파티션)으로 할당하는 스크립이다. /etc/sysconfig/rawdevices 참고
http://people.redhat.com/jrfuller/cms/ch-software.html
   
rexec executes command on remote host. username과 passwd기반  http://www.mkssoftware.com/docs/man1/rexec.1.asp    
rhnsd Red hat Network service. 레드헷 리눅스의 온라인 업데이트 데몬http://www.redhat.com/docs/manuals/RHNetwork/ref-guide/rhnsd.html    
ripd zebar 라우트 엔진을 지원하는 라우팅 컴포넌트
http://www.rrf.ru/doc/zebra/ripd.html
   
ripngd ripngd는 네트워크 라우팅 테이블을 관리하는 데몬으로 IPv6에 대한 라우팅 정보 프로토콜을 사용한다.
http://www.rrf.ru/doc/zebra/ripngd.html
   
rlogin rlogin는 원격 호스트상의 터미널 세션을 시작한다.
http://kldp.org/Translations/html/Cluster_QuickStart-KLDP/Cluster_QuickStart-KLDP.html#toc4start a terminal session on the remort host. (rlogind) http://www.mkssoftware.com/docs/man1/rlogin.1.asp
   
routed Routed는 네트워크 라우팅 테이블을 관리하기 위해 부팅시 호출된다.
http://www.usinglinux.org/doc/translations/ko/NET3-4-HOWTO
   
rsh executes command on other hosts.인증된 호스트의 특정 포트만 인증하여 사용 가능  http://www.mkssoftware.com/docs/man1/rsh.1.asp    
rstatd 서버의 각종 성능 통계자료를 제공, rup로 볼 수 있다.    
rsync ftp server의 addtion 두서버 양쪽의 파일을 비교하여 다른부분만 전송. http://samba.anu.edu.au/rsync/ 873  
rusersd ruser명령어가 되게해주는 서버    
rwalld remote wall (메시지 broadcast) server    
rwhod remote who가 되게해주는 서버    
saslauthd SASL authentication server.    
sendmail mail을 받는 서버    
servers an internal xinetd services. listing active servers. 9099  
services an internal xinetd services. listing active services. 9098  
sgi_fam File Alteration Monitor. File이 변화되었을 때 알려주는 기능. 중요한 파일의 변경 여부 탐지, GUI 파일매니저와 연동, http://oss.sgi.com/projects/fam    
smartd Self-Monitoring Analysis and Reporting Technology System. Hard disk fiailure 방지를 위해 주로 쓴다고함.  http://csl.cse.ucsc.edu/smart.shtml    
smb Samba의 smbd와 nmbd를 시작함. http://www.samba.org    
snmpd Simple network managerment protocol  http://geekcorp.com/snmpd/    
snmptrapd Simple network managerment protocol. trap daemon    
spamassassin SpamAssassin is a mail filter to identify spam. http://spamassassin.org/    
squid Internet object cache. 웹 프락시 캐쉬 http://www.squid-cache.org/ 3128  
swat Samba web admin tool.  http://www.samba.org 901  
syslog 커널 메시지를 읽어 기록한다. 514  
tWnn chinese conversion engine.    
talk remote host와 채팅할 수 있는 데몬.    
telnet telnet ^^;    
tftp ftp server using tftp (trivial file transfer protocol). 69  
time time server rdate를 지원하기 위한 것. tcp version    
time-udp time server rdate를 지원하기 위한 것. udp version 37  
tux thread-kernel based http server. http://www.tux.org    
ups 전원이 없을 때 자동으로 shutdown 시킴.    
vncserver Start VNC(virsual network computing) server. http://www.uk.research.att.com/vnc/    
vsftpd very secure file transfer daemon    
winbind samba win bind deamon. http://www.samba.org    
wine window emulator. http://www.winehq.com/    
wu-ftpd 일반적인 ftp 데몬. 21  
xfs x-font server http://www.suse.de/~mfabian/suse-cjk/xfs.html.    
xinetd service wrapper. http://www.xinetd.org    
yppasswdd NIS사용자들의 패스워드 데이터베이스관리.    
ypserv NIS구동을 위한 server프로그램. http://kldp.org/HOWTO/html/NIS/NIS-HOWTO-8.html    
ypxfrd NIS master와 slave간의 전송속도 향상.    
zebra GNU routing manager.  routing server나 refelctor를 구성하고자 할 때 사용. http://www.zebra.org 2600~6  
반응형

'OS > LINUX' 카테고리의 다른 글

[Linux] mrtg setting  (0) 2007.10.17
SELinux 에 대하여  (0) 2007.07.23
LINUX RPM 관련 명령어  (0) 2007.07.03
C쉘 설정파일(.cshrc)  (0) 2007.04.12
Xmanager 접속을 위한 리눅스 설정하기  (0) 2007.03.09
Posted by [PineTree]
OS/LINUX2007. 7. 3. 22:07
반응형
레드햇 계열 리눅스는 패키지의 설치와 관리에 있어서 rpm를 사용 합니다. ( 한컴리눅스 / 와우리눅스 모두 레드햇 계열 입니다.)

일단 리눅스를 설치해 놨는데, 보안이나 기타 이유로 패키지를 안쓰거나, 제거 하거나, 또 새로운 패키지를 설치하거나 버젼업된 패키지를 설치 해야 할때 싶은데 어떻게 해야하는지 모른다면 레드햇계열 리눅스의 사용은 미궁에 빠져 버리게 됩니다. 따라서 패키지의 설치와 관리를 하는 rpm 명령어의 숙지와 사용은 레드햇 계열에서는 필수라고 할수 있습니다.

rpm 명령어는 어떤 패키지를 설치하고, 어떤 패키지에 어떤 프로그램들이 들어있나 확인을 하고, 시스템 프로램들이 어떤 구조로 되어 있는가 추적하고 최적화 하는 방법을 알 수 있게 해 줍니다.

# rpm 명령어와 함께 # find 명령어,  # ps -aux | grep , # file 명령어를 이용해서 시스템 전체의 설치된 패키지를 조회하고 관리를 할 수 있습니다. ( # 은 리눅스 쉘(root) 프롬프트 입니다.  // **. 은 주석처리로 설명 부분 입니다. )
=========================================================================================
1. rpm 설치하기
1) 설치하기
-U 옵션   : 기존의 것을 삭제하고 업그레이드하며 아무 메시지도 보여주지 않습니다.
-Uv 옵션  : 기존의 것을 삭제하고 업그레이드하며 패키지 이름을 보여 줍니다.
-Uvh 옵션 : 기존의 것을 삭제하고 업그레이드하며 그 설치 진행과 과정 # 표시로 자세히 보여줍니다.
// **. 보통 (ivh 보다) -Uvh 옵션을 쓰면 됩니다.
// **. 설치할경우 패키지파일전체 이름을 주고, 삭제/조회는 rpm 버젼 번호까지만 주면 됩니다.
    mrtg 패키지전체 이름 :  mrtg-2.9.17.i386.rpm  // **. i386 은 386 CPU 호환 버젼을 말합니다.
    mrtg 패키지 버젼     :  mrtg-2.9.17

예)
# rpm -U  mrtg-2.9.17.i386.rpm
# rpm -Uv mrtg-2.9.17.i386.rpm
# rpm -Uvh mrtg-2.9.17.i386.rpm

부가 옵션들
--nodeps : 의존성관계에 있는 다른 패키지가 설치되어 있지 않다해도 강제 설치 합니다.
--force : 버전을 무시하고 강제로 설치 합니다. ( rpm 버전을 강제로 다운 그레이드 할때 사용합니다. )
예)
# rpm -Uvh mrtg-2.9.17.i386.rpm --nodeps

-- force --nodeps 사용시 다른 패키지에 문제가 없는가를 주의 해야 합니다.
# rpm -Uvh mrtg-2.9.17.i386.rpm  --force --nodeps

2) -i 옵션 : 기존의 것을 삭제하고 처음 설치합니다.
예) # rpm -i mrtg-2.9.17.i386.rpm

=========================================================================================
2. rpm 지우기
-evv 옵션 : 아래와 같이 삭제를 하는 동안에 상세한 설명을 보여줍니다.
예)
# rpm -evv mrtg-2.9.17

부가 옵션들
--test  : 실제로 삭제를 하지 않고 잘지워지는가 테스트만 해보는 옵션 입니다.
--nodeps : 의존성에 관여하지 않고 지우는 옵션입니다. // **. 의존성 있는 패키지가 안돌아 갈 수 있습니다. 주의를 요하는 옵션 입니다.
-- allmatches 옵션  : rpm 이 아래와 같이 중복으로 설치 되어 있을 경우 해결 방법
# rpm -qa | grep tux  // **. 중복으로 설치 되었 습니다.
tux-2.1.0-2
tux-2.1.0-2

# rpm -e tux  // **. 삭제가 안됩니다.
error: "tux" specifies multiple packages
# rpm -e tux --allmatches  // **. --allmatches 옵션으로 지웁니다.

--noscript 옵션 : rpm 이 스크립트 에러 인하여 지워지지 않을 경우조 지웁니다.  
# rpm -e canna --noscripts  // **. --noscripts 옵션으로 지웁니다.


=========================================================================================
rpm 조회하기 부분은 옵션이 가장 많고, 가장 많이 사용 하는 부분 입니다.

3. rpm 조회하기
1) -qa 옵션 조회
-qa           : 설치 되어 있는 모든 패키지를 알아 봅니다. // **. 좌악 올라 갑니다.
-qa | grep    : 질의한 패키지가 설치 되어 있는지 알아본다 //  **. 가장 많이 사용 합니다.
-qa | grep -i : 질의한 패키지를 찾을 때 대소문자를 구분하지 않고 물어 봅니다. // **. 대소문자 구별 안하고 찾아주므로 이 옵션 사용이 편합니다. 대부분 패키지는 소문자 이기는 하지만 가끔은 대문자가 있습니다.
-qa | wc -l   : 현재 설치 되어 있는 총패키지 수

예 )
# rpm -qa  // **. 시스템에 설치된 모든 패키지를 보여 줍니다.
# rpm -qa | grep canna  // **.canna란 이름의 패키지가 설치 되어 있는지 알아 봅니다.
# rpm -qa | grep -i canna  // **. 대 소문자를 구별하지 않고 알아 봅니다.
# rpm -qa | wc -l  // **. 시스템에 설치된 총 패키지 수를 알아 봅니다. 보통 몇백 단위 입니다.

2) rpm에 대한 다른 조회
-qf : 화일로 패키지 알아내기. 설치 되어 있는 화일이 어느 패키지에 속해 있는지 알아봅니다.
-qi : 패키지 정보 알아보기. 패키지에 대한 설명을 보여줍니다.
-ql : 패키지 목록 알아 봅니다.
-qc :  /etc/ 밑에 설치 되는 설정 화일만 알아 본니다.

예)
# rpm -qf /bin/ls     // **. ls 란 명령어가 어느 패키지에 속해 있는지 알아 봅니다.  
# rpm -qf $(which 특정프로그램이름) // **. 경로를 잘 모를 경우 사용 합니다.
   ex) rpm -qf $(which ls)
# rpm -qi setup      // **. setup 이란 패키지가 어떤 패키지 인가 알아 봅니다.
# rpm -ql setup  
# rpm -qc setup

=========================================================================================
4. -q 의 부가 옵션들
1) -q --requires  : 패키지가 필요한 모듈 (의존성)
예) # rpm -q --requires setup  // **. dump 라는 패키지가 설치되기전에 먼저 설치가 선행되어야 하는 패키지들 입니다. 없으면 설치가 안됩니다.

2) -q --whatrequires : 의존성 걸린 패키지 알아내기
예) # rpm -q  --whatrequires  xmms // **. xmms에 의존하는 패키지를 보여 줍니다. 함부로 지우면 의존설 걸린 패키지들은 안돌가는 사태가 발생할 수 있습니다.

3) -q --whatprovides module-info  : 모듈이 설치 되어 있는 패키지 알아 봅니다.
예) # rpm -q --whatprovides module-info

4) -q --scripts : 패키지가 설치 되기전 또는 설치 된후에 실행되는 스크립트를 알아 봅니다.
5) -q --queryformat : 패키지의 정보를 알아볼때 문자열을 출력해준다.

5. 기타 확장 옵션들
1) -qlv          : 패키지 목록 자세한 정보를 알아 봅니다.
예 ) # rpm -qlv setup

2) -ql --dump   :  패키지 덤프 화일을 봅니다.
3) -qcf          : 화일과 관련된 설정 화일을 알아봅니다. .
4) -qdf       : 패키지와 관련된 문서 화일을 보는 옵션 입니다.  // **. 패키지 괸련한 문서는 대부분 /usr/share/doc 아래에 있습니다.
예) # rpm -qdf /sbin/dump

5) -qpil : 원하는 패키지로 부터 패키지 정보와 설치되는 곳의 정보를 알아 봅니다.
  // **. qi옵션과 ql 옵션의 합침형 입니다.
예) # rpm -qpil mrtg-2.9.17.i386.rpm

6) --querytags : 문자열 출력시에 사용되는 태그 값을 알아 본다.
예) # rpm --querytags
HEADERIMAGE
HEADERSIGNATURES
HEADERIMMUTABLE
.
7) # rpm -qlp  // **. RPM 으로 설치 안되었을때 검색 합니다.
반응형

'OS > LINUX' 카테고리의 다른 글

SELinux 에 대하여  (0) 2007.07.23
[linux] 리눅스의 각종 데몬들  (0) 2007.07.21
C쉘 설정파일(.cshrc)  (0) 2007.04.12
Xmanager 접속을 위한 리눅스 설정하기  (0) 2007.03.09
crontab 명령  (0) 2007.02.15
Posted by [PineTree]
OS/LINUX2007. 4. 12. 18:57
반응형

음... 2001년 어느 토요일 오후.

퇴근 안하고 앉아서,

서버의 .cshrc 를 열어서 각 명령어들이 무슨 역할을 하는지 찾아보았다.

아마도, 뭔지도 모르고 사용하는 것이 맘이 안좋아서 그랬던 듯 싶다.

 

C쉘에 해당되는 이야기이다.

리눅스 서버설정을 위해 사용했던 파일내용이다.

----------------------------------------------------------------------------------------

umask 022

#user, group, other 4:읽기방지, 2:쓰기방지, 1:실행방지
#새로 만들어지는 파일은 -rwxr-xr-x 로 만들어지게 됩니다.

stty erase ^H                     #erase 키를 mapping 합니다. ( ctrl + v h)
stty cs8 -istrip -parenb       #한글입력설정

set host=`hostname`           # '' 는 문자열이고, ` ` 는 안의 명령어를 실행시킨다. hostname 이라는 명령을 실행시켜서 host 에 값을 입력했다.
set history=40                   # history 를 볼때, 40 건씩 보겠다.
set noclobber                   # 덮어쓰기 방지
set filec                           # ESC 를 누르면, 파일명 자동완성기능
set autolist                       # 파일명 자동완성기능

set prompt="[`whoami`@`hostname -s`:${cwd}]"

unset autologout               #자동로그아웃을 방지합니다.

set -o vi                          # 명령라인에서 vi 처럼 기존 사용했던 명령어를 j, k  키를 사용해서 위 아래로 이동한다.

 

alias setprompt 'set prompt="[`whoami`@`hostname -s`:${cwd}]"'
alias cd 'chdir \!* && setprompt'
alias ls '/bin/ls -aF'         # file, directory를 구분 표기
alias cd.. 'cd ..'
alias cp 'cp -i'
alias l 'ls -al | more'
alias dir 'ls -alCF \!* |more'
alias rm 'rm -i'                 # 삭제여부를 질문한다
alias h history

if (! $?prompt) goto cshrc_end

 

setprompt

----------------------------------------------------------------------------------------

* history  명령어

Expression Use

!!

마지막 명령의 반복수행

!n

history 버퍼에서 n번째 명령어 수행

!-n

history 버퍼에서 마지막명령에서 n번째 명령어 수행

!text

버퍼의 명령어들중에서 text로 시작하는 최근의 명령어 수행

!?text

버퍼의 명령어들중에서 text를 포함하는 최근의 명령어 수행

!:n

마지막 명령어의 n번째 단어 수행

!$

마지막 명령어의 마지막 단어 수행

!*

마지막 명령어의 모든 변수들 수행

^old^new

앞선 명령어의 oldnew로 대체하고 수행

반응형

'OS > LINUX' 카테고리의 다른 글

[linux] 리눅스의 각종 데몬들  (0) 2007.07.21
LINUX RPM 관련 명령어  (0) 2007.07.03
Xmanager 접속을 위한 리눅스 설정하기  (0) 2007.03.09
crontab 명령  (0) 2007.02.15
LINUX usb 인식해서 사용하기  (0) 2007.02.10
Posted by [PineTree]
OS/LINUX2007. 3. 9. 19:03
반응형
Xmanager 접속을 위한 리눅스 설정하기 2006-11-14 10:01:48

Windows 등에서 리눅스 시스템으로 원격 접속이 가능한 프로그램 중 대표적인 것으로 Xmanager가 있다. 이 Xmanager는 Windows를 사용하다가 리눅스를 접하는 사용자라면 누구나 한번쯤은 사용해 보았을 법한 프로그램이기도 하다.

그러나 이 Xmanager를 사용하기 위해서는, 접속하고자 하는 리눅스 시스템에서 일부 설정을 수정해야 한다. 리눅스에서는 기본적으로 Xmanager와 같은 XDMCP 기능을 사용하는 프로그램의 접속을 막도록 설정이 되어 있기 때문인데, 리눅스의 X윈도우 환경이 Gnome 인지, KDE 인지에 따라서도 설정하는 부분이 약간씩은 다르다.

오늘은 이 Xmanager 접속을 허용하기 위한 설정법에 대해 Gnome과 KDE로 구분하여 알아보도록 하자.

 

 
Gnome에서의 설정

1. 리눅스 시스템의 런레벨(Run-Level)이 "5"인지 확인한다.

 

여기서 런레벨이라는 것은 부팅시 어떠한 모드로 부팅될 것인가를 말하는 것으로, 그래픽 모드는 "5"번, 텍스트 모드는 "3"번이다.

Xmanager는 GUI(그래픽 유저 인터페이스)를 지원하므로 접속하고자 하는 리눅스 시스템의 사용모드도 그래픽모드(Run-Level 5)로 되어 있어야 한다.

리눅스 설치시 대부분 그래픽 모드로 설치를 하므로 크게 문제될 부분은 아니지만, 서버로 사용하는 시스템에 있어 텍스트 모드로 설치하는 경우도 있으므로 이 부분에 대해 간단히 확인하고 넘어가도록 하자.

런레벨은 /etc/inittab 파일에서 쉽게 확인이 가능하다.

#
# inittab       This file describes how the INIT process should set up
#               the system in a certain run-level.
#
# Author:       Miquel van Smoorenburg, <miquels@drinkel.nl.mugnet.org>
#               Modified for RHS Linux by Marc Ewing and Donnie Barnes
#

# Default runlevel. The runlevels used by RHS are:
#   0 - halt (Do NOT set initdefault to this)
#   1 - Single user mode
#   2 - Multiuser, without NFS (The same as 3, if you do not have networking)
#   3 - Full multiuser mode
#   4 - unused
#   5 - X11
#   6 - reboot (Do NOT set initdefault to this)
#
id:5:initdefault:

# System initialization.
si::sysinit:/etc/rc.d/rc.sysinit

 

위에서 보듯이 "id" 뒷 부분의 값이 "3"인지 "5"인지에 따라 모드가 바뀌므로, 그래픽모드로 사용하고자 한다면 이 숫자를 "5"로 변경하자.

 

 

2. XDMCP 접속 허용 (custom.conf)

 

앞에서도 말했듯이 Xmanager는 XDMCP 방식을 사용하여 리눅스 시스템에 접속을 하게 된다. 그러므로 리눅스 시스템에서는 이 XDMCP 기능이 접속할 수 있도록 허용하는 설정을 해주어야 하는데, Gnome에서는 gdm (Gnome Display Manager)을 사용하므로 아래의 경로에 있는 gdm 설정파일에서 수정한다.

 

# vi /etc/gdm/custom.conf          # 한글과컴퓨터 리눅스 데스크톱 3.0 (오픈에디션 3.0)의 경우

# vi /etc/X11/gdm/custom.conf    # 한글과컴퓨터 리눅스 데스크톱 2.0 (오픈에디션 2.0)의 경우

 

※ 타 리눅스를 사용하는 경우, 설정 파일의 경로가 다를 수 있으므로 이럴땐 하단에 명시한 Xmanager 제작사에 가서 확인해 보도록 한다.

 

...

[security]

DisallowTCP=false

AllowRemoteRoot=true

 

[xdmcp]

Enable=1

...

 

custom.conf 파일의 [security] 섹션 아래에 DisallowTCP 값을 false로 선언하고, [xdmcp] 섹션 아래에 Enable 값을 1로 설정한다.

만약 root 관리자로의 원격 접속을 희망한다면, AllowRemoteRoot의 값을 true로 선언하는 것을 추가하면 된다.

 

 

3. X윈도우 재시작

 

위 와 같이 설정을 마쳤다면, X윈도우를 재시작해야 한다. 변경된 설정으로 X윈도우가 가동되어야 외부에서의 접속이 가능하므로 반드시 X윈도우를 재시작하기 바란다. 로그아웃만 해서는 안된다. init 3 명령과 init 5 명령으로 런레벨 자체를 변경하는 것이 좋다.

(또는 이런 과정들이 복잡하다 생각되면 그냥 재부팅을 해도 된다. ^^)

그리고 Windows에 설치된 Xmanager를 사용하여 접속을 시도해보자. 잘 되는가?

 

 

KDE에서의 설정

KDE 에서도 Gnome의 경우와 같이 XDMCP 관련 설정파일을 수정함으로써 해결할 수 있지만, Gnome 보다 수정해야할 항목이 조금 더 많다고 볼 수 있다. 그리고 한글과컴퓨터 리눅스의 기본 로그인 매니저가 gdm (Gnome Display Manager)으로 되어 있기 때문에, 이를 kdm (KDE Display Manager)으로 바꾸거나, 또는 Gnome과 KDE 양쪽에서의 XDMCP 수정을 모두 해주어야 하는 불편함이 있다.

일단 하나하나 알아보도록 하자.

 

1. 리눅스 시스템의 런레벨(Run-Level)이 "5"인지 확인한다.

이는 앞에서 본 내용과 동일하다. 런레벨 확인이 우선이겠다.

 

 

2. XDMCP 접속 허용 (1) (xdm-config)

KDE의 기본 로그인 매니저인 kdm (KDE Display Manager)의 설정파일은 아래에 있다.

# vi /etc/X11/xdm/xdm-config

 

...

!DisplayManager.requestPort:     0

설정파일의 제일 하단을 보면,

DisplayManager.requestPort:    0

이라고 설정되어 있는데 이 라인의 앞쪽에 느낌표(!)을 넣어 주석처리를 한다.

 

 

3. XDMCP 접속 허용 (2) (Xaccess)

다음으로 아래 경로에 있는 Xaccess 파일을 열어...

#* #any host can get a login window

위와 같이 되어있는 라인 앞쪽의 주석(#)을 해제한다.

 

# vi /etc/X11/xdm/Xaccess

 

...

* #any host can get a login window

...

 

 

4. XDMCP 접속 허용 (3) (kdmrc)

다음으로 kdmrc 파일을 열어 [Xdmcp] 섹션의 Enable 값을 true로 변경한다.
# vi /etc/X11/xdm/kdmrc

 

...

[Xdmcp]
Enable=true

...

 

 

5. 로그인 매니저 변경 (또는 gdm 설정)

이 것으로 설정파일들은 수정이 완료되었다. 하지만 앞에서 언급하였듯이 한글과컴퓨터 리눅스 데스크톱(또는 오픈에디션)은 기본 로그인 매니저가 gdm (Gnome Display Manager)로 되어 있으므로 아래의 2가지 방법중 한가지 방법을 더 처리해 주어야 한다.

 

① 앞서 다룬 gdm 설정도 같이 수행한다.

② 로그인 매니저를 gdm에서 kdm으로 변경한다. (변경 방법은 아래 Tip 참조)

 

 

6. X윈도우 재시작

 

위와 같이 설정을 마쳤다면, X윈도우를 재시작해야 한다. 변경된 설정으로 X윈도우가 가동되어야 외부에서의 접속이 가능하므로 반드시 X윈도우를 재시작하기 바란다.  로그아웃만 해서는 안된다. init 3 명령과 init 5 명령으로 런레벨 자체를 변경하는 것이 좋다.

(또는 이런 과정들이 복잡하다 생각되면 그냥 재부팅을 해도 된다. ^^)

그리고 Windows에 설치된 Xmanager를 사용하여 접속을 시도해보자. 잘 되는가?

 

Tip! Tip! Tip!

로그인 매니저 변경방법 (gdm --> kdm)

 

# vi /etc/sysconfig/desktop

 

DESKTOP="GNOME"                      # 기본 로그인 세션
DISPLAYMANAGER="KDE"           # 기본 로그인 매니저

 

/etc/sysconfig/desktop 파일을 열어서 ...

DISPLAYMANAGER의 값을 KDE로 수정한다. (해당 항목이 없다면 위의 예를 보고 직접 추가하자.)

 

※ 참고로, DESKTOP 항목은 기본으로 구동되는 세션을 말하는 것으로 ID와 패스워드를 넣었을때 어느 X윈도우로 로그인할 것인지를 설정하는 것이다.

 

※ 이상의 설명은 "한글과컴퓨터 리눅스 데스크톱" (또는 오픈에디션)을 기준으로 설명하였다. 다른 리눅스를 사용하거나 Xmanager 프로그램에 대한 좀 더 자세한 설명을 원한다면 Xmanager 홈페이지를 방문해보기 바란다.

http://www.netsarang.co.kr/

 

(위 URL에서 Xmanager의 30일 평가판 제품도 받아서 사용해 볼 수 있다.)

반응형

'OS > LINUX' 카테고리의 다른 글

LINUX RPM 관련 명령어  (0) 2007.07.03
C쉘 설정파일(.cshrc)  (0) 2007.04.12
crontab 명령  (0) 2007.02.15
LINUX usb 인식해서 사용하기  (0) 2007.02.10
호스트네임 변경  (0) 2006.10.11
Posted by [PineTree]
OS/LINUX2007. 2. 15. 08:15
반응형

crontab 명령
목적
cron 작업을 제출, 편집, 나열 또는 제거합니다.

구문
crontab [ -e | -l | -r | -v | File ]


설명
crontab 명령은 cron 작업을 제출, 편집, 나열 또는 제거합니다. cron 작업은 cron 디먼이 정기적으로 계획된 간격으로 수행하는 명령입니다. cron 작업을 제출하려면, crontab 명령을 -e 플래그와 함께 지정하십시오. crontab 명령은 편집 세션을 호출하여 crontab 파일을 작성할 수 있게 합니다. 이 파일에 각 cron 작업에 대한 항목을 작성합니다. 각 항목은 cron 디먼에 맞는 양식이어야 합니다. 항목 작성에 대한 내용은 crontab 파일 항목 형식을 .

사용자가 항목 작성을 마치고 파일을 종료할 때, crontab 명령이 그것을 /var/spool/cron/crontabs 디렉토리에 복사한 후, 사용자의 현재 사용자 이름에 대해 명명된 파일에 배치합니다. 사용자 이름을 갖는 파일이 crontabs 디렉토리에 이미 존재하는 경우, crontab 명령은 기존 파일위에 겹쳐씁니다.

다른 방법으로, File 매개변수를 지정하여 crontab 파일을 작성할 수 있습니다. 파일이 존재할 경우, 그 파일은 cron 디먼이 예상하는 형식이어야 합니다. 파일이 없을 경우, crontab 명령이 편집기를 호출합니다. EDITOR 환경 변수가 있을 경우, 명령은 지정하는 편집기를 호출합니다. 그 외에는 crontab 명령이 vi 편집기를 사용합니다.

crontab 파일의 내용을 나열하려면, crontab 명령에 -l 명령을 지정하십시오. 기존 파일을 제거하려면, -r 플래그를 사용하십시오.

cron 디먼
cron 디먼은 crontab 파일 항목에 따라 명령을 수행합니다. 사용자가 cron 작업의 출력을 표준 출력 또는 오류로 재지정하지 않는 한, cron 디먼은 사용자에게 모든 명령 출력 또는 오류를 메일로 전송합니다. crontab 파일에서 cron 작업을 잘못 지정하면, cron 디먼은 작업을 수행하지 않습니다.

cron 디먼은 cron 디먼이 초기설정될 때만 crontab 파일을 시험합니다. crontab 명령을 사용하여 crontab 파일에 변경을 수행할 때, 변경을 나타내는 메세지가 cron 디먼으로 전송됩니다. 이것으로 새로운 또는 변경된 파일에 대해 정기적으로 계획된 간격으로 오버헤드를 점검하지 않아도 됩니다.

crontab 명령 사용에 대한 제어
/var/adm/cron/cron.allow 및 /var/adm/cron/cron.deny 파일은 crontab 명령을 사용할 수 있는 사용자를 제어합니다. 루트 사용자는 이 파일을 작성, 편집 또는 삭제할 수 있습니다. 이 파일의 항목은 한 행에 이름이 한 개 있는 사용자 로그인 이름입니다. 사용자의 로그인 ID가 둘 이상의 로그인 이름과 연관되는 경우, crontab 명령은 사용자가 실제로 사용 중인 로그인 이름과 상관없이 /etc/passwd 파일에 있는 첫번째 로그인 이름을 사용합니다.

다음은 cron.allow 파일의 한 예입니다.

root
nick
dee
sarah
cron.allow 파일이 있을 경우, 로그인 이름이 여기에 나타나는 사용자들만이 crontab 명령을 사용할 수 있습니다. 루트 사용자의 로그 이름이 cron.allow 파일에 반드시 나타나야 합니다. 시스템 관리자는 사용자의 로그인 이름을 cron.deny 파일에 나열하여 그 사용자가 crontab 명령을 사용할 수 없게 할 수 있습니다. cron.deny 파일만이 존재하는 경우, 파일에 나타나지 않는 모든 사용자가 crontab 명령을 사용할 수 있습니다.

다음 중 하나에 해당되는 경우, crontab 명령을 사용할 수 없습니다.

cron.allow 파일과 cron.deny 파일이 존재하지 않습니다(루트 사용자만 허용).
cron.allow 파일이 존재하지만 사용자의 로그인 이름이 나열되어 있지 않습니다.
cron.deny 파일이 존재하고 사용자의 로그인 이름이 나열되어 있습니다.
cron.allow와 cron.deny 파일이 둘다 존재하지 않는 경우, 루트 사용자 권한을 갖는 사람만이 crontab 명령으로 작업을 제출할 수 있습니다.

crontab 파일 항목 형식
crontab 파일은 각 cron에 대한 항목을 포함합니다. 항목들은 개행 문자로 분리됩니다. 각 crontab 파일 항목은 다음 형태로 공백이나 탭으로 분리된 6개 필드를 포함하고 있습니다.


minute(분)  hour(시)  day_of_month(일)  month(월)  weekday(요일)  command(명령)
이들 필드는 다음 값을 승인합니다.

minute(분) 0 - 59
hour(시) 0 - 23
day_of_month(일) 1 - 31
month(월) 1 - 12
weekday(요일) 일요일부터 금요일까지를 나타내는 0 - 6
command(명령) 쉘 명령

각 필드에 대해 반드시 값을 지정해야 합니다. command 필드를 제외하고, 필드 다음에 들어갈 수 있습니다.

지정된 범위에 있는 숫자. 5월에 명령을 수행하려면, 월 필드에 5를 지정하십시오.
두 수를 대시로 분리하여 두 수 자체도 포함하는 범위를 나타내는 범위 지정. 화요일부터 금요일까지 cron 작업을 수행하려면, weekday 필드에 2-5를 입력하십시오.
숫자들을 쉼표로 분리하여 나열한 숫자 리스트. 1월의 첫날과 마지막 날에 명령을 수행하려면, 일 필드에 1,31을 입력합니다.
*(별표)는 모든 허용되는 값을 의미합니다. 매 시간마다 작업을 수행하려면, hour(시) 필드에 별표를 지정하십시오.
주: 앞에 역슬래시(% 포함)가 오는 모든 문자는 문자 그대로 처리됩니다. 날짜의 지정은 두 필드(날짜와 요일)에 의해 이루어질 수 있습니다. 둘다를 요소로 지정할 경우, 둘다 고수하십시오. 예를 들어 다음과 같이 입력합니다.
0 0 1,15 * 1 command
이 명령은 모든 월요일뿐만 아니라 각 달의 1일과 15일에 command를 수행합니다. 단 하나의 필드로 날짜를 지정하려면, 다른 필드는 *를 포함해야 합니다.

명령 지정
cron 디먼은 선택된 날짜와 시간의 여섯 번째 필드에 지정된 명령을 수행합니다. 여섯 번째 필드에 %(퍼센트 기호)를 포함하면, cron 디먼은 그 앞에 오는 모든 것을 명령 호출로서 취급하고, 퍼센트 기호(\%)를 탈출하지 않는 한 그 뒤에 오는 모든 것을 표준 입력에 사용 가능하게 만듭니다. 공백 행과 첫번째 비공백 문자가 번호 기호(#)인 행을 무시됩니다.

주: 쉘은 명령 필드의 첫번째 행만을 수행합니다. 모든 다른 행은 명령에 표준 입력으로 사용 가능하게 됩니다.
cron 디먼은 사용자의 HOME 디렉토리에서 서브쉘을 시작합니다. 사용자가 로그인되지 않았을 때 수행하도록 명령을 계획하고 사용자의 .profile 파일에 있는 명령을 수행하려면, 명령은 반드시 명시적으로 사용자의 .profile 파일을 읽어야 합니다.

cron 디먼은 모든 쉘에 대해 HOME, LOGNAME, SHELL(=/usr/bin/sh) 및 PATH(=/usr/bin)를 정의하는 디폴트 환경을 제공합니다.

플래그
-e 사용자의 crontab 파일의 사본을 편집하거나 또는 아직 crontab 파일이 없으면 편집 세션을 시작합니다. 편집이 완료될 때, 항목이 사용자의 crontab 파일로서 설치됩니다. 편집 세션은 EDITOR 환경 변수에 의해 지정되는 편집기를 사용하여 시작됩니다. 디폴트 편집기는 vi입니다.
-l crontab 파일을 나열합니다.
-r crontab 디렉토리에서 사용자 crontab 파일을 제거합니다.
-v cron 작업의 상태를 나열합니다.

보안
감사(audit) 이벤트: 감사(auditing) 서브시스템이 적절하게 구성설정되고 사용 가능한 경우, crontab 명령은 명령이 실행될 때마다 다음 감사 레코드(이벤트)를 생성합니다.

이벤트 정보
CRON_JobRemove cron 작업을 제거한 사용자와 시기를 나열합니다.
CRON_JobAdd cron 작업을 추가한 사용자와 시기를 나열합니다.

감사 이벤트 선택 및 그룹화하는 방법과 감사 이벤트 데이타 수집 구성설정 방법에 대한 자세한 내용은 AIX Version 4.3 System Management Guide: Operating System and Devices에 있는 "감사 기능 설정"을 참조하십시오.

종료 상태
이 명령은 다음과 같은 종료값으로 복귀합니다.

0 성공적으로 완료되었습니다.
>0 오류가 발생하였습니다.

예제
mycronjobs이라는 파일을 /var/admn/cron/crontabs 디렉토리에 복사하려면, 다음과 같이 입력하십시오.
crontab mycronjobs
매 시간마다 콘솔에 시간을 기록하려면, 다음과 같이 입력하십시오.
0 * * * * echo The hour is `date` .
>/dev/console
모든 월요일, 수요일 및 금요일 오전 6시 30분에 calendar 명령을 수행하려면, 다음과 같이 입력하십시오.
30 6 * * 1,3,5 /usr/bin/calendar
일년 내내 매일 6시 30분에 calendar 명령을 수행하려면, 다음과 같이 입력하십시오.
30 6 * * * /usr/bin/calendar
8월 동안 매일 자정에 maintenance라는 스크립트를 수행하려면, 다음과 같이 입력하십시오.
0 0 * 8 * /u/harry/bin/maintenance
명령에 대한 표준 입력에 대해 텍스트를 정의하려면, 다음과 같이 입력하십시오.
0 16 * 12 5 /usr/sbin/wall%HAPPY HOLIDAY!%Remember to
turn in your time card.
%(퍼센트 기호) 뒤에 오는 텍스트가 다음과 같이 wall 명령에 대한 표준 입력을 정의합니다.
HAPPY HOLIDAY!
 
Remember to turn in your time card.
파일
/var/adm/cron/FIFO crontab 또는 at 명령으로 새 작업이 제출될 때 cron 디먼으로 메세지를 전송하는 명명된 파이프.
/var/spool/cron/crontabs crontab 스풀 영역을 지정합니다.
/var/adm/cron/cron.allow  crontab 명령에 대한 액세스가 허용되는 사용자 리스트를 지정합니다.
/var/adm/cron/cron.deny crontab 명령에 대한 액세스가 거부되는 사용자 리스트를 지정합니다.
 

반응형

'OS > LINUX' 카테고리의 다른 글

C쉘 설정파일(.cshrc)  (0) 2007.04.12
Xmanager 접속을 위한 리눅스 설정하기  (0) 2007.03.09
LINUX usb 인식해서 사용하기  (0) 2007.02.10
호스트네임 변경  (0) 2006.10.11
아이피 변경  (0) 2006.10.11
Posted by [PineTree]