4. ftpd(ftp 서버 서비스) |
1) 경로 : /etc/init.d/ftpd
2) 요약 : 파일 전송 프로토콜의 서버 데몬
3) 사용 방법 : ftpd [옵션]
4) 옵션
-A : AUTH 매커니즘을 통해 인증된 사용자만 접속을 허용
-d : syslog에 디버깅 로그를 저장
-l : 성공하거나 실패한 각각의 ftp 세션 정보를 syslog에 로그를 저장
-T timeout : 클라이언트의 최대 타임 아웃 시간(timeout, 초)을 지정. 기본값은 2시간
-t timeout : 클라이언트가 동작하지 않고 잇다가 타임아웃 시간(timeout, 초)을 지정
-u umask : ftpd 프로세스의 umask를 설정. 기본값은 027
5) 추가 설명
ftpd는 DARPA 인터넷 파일 전송 프로토콜 서버 역할을 합니다. 서버는 TCP 프로토콜을 사용하며 ftp 서버로 지정한 특정 포트에서 오는 요청을 기다립니다.
ftp 서버는 아래에 설명한 요청을 지원합니다.
요청 | 설명 |
ABOR | 이전 명령을 중지 |
ACCT | 지정한 사용자를 무시 |
ALLO | 비어있는 저장공간을 할당 |
APPE | 파일에 추가 |
CDUP | 현재 작업 디렉터리를 부모 디렉터리로 이동 |
CWD | 작업 디렉터리를 이동 |
DELE | 파일을 삭제 |
HELP | 사용법을 출력 |
LIST | 디렉터리의 파일 목록을 출력 |
MKD | 디렉터리를 생성 |
MDTM | 파일을 마지막 변경 시간을 출력 |
MODE | 데이터 전송 모드를 지정 |
NLST | 디렉터리의 파일 목록만 출력 |
NOOP | 아무것도 하지 않음 |
PASS | 패스워드를 지정 |
PASV | 서버간의 전송을 비교 |
PORT | 데이터 연결 포트를 지정 |
PWD | 현재 작업 중인 디렉터리를 출력 |
QUIT | 세션을 종료 |
REST | 불완전한 전송을 재시도 |
RETR | 파일을 수정 |
RMD | 디렉터리를 삭제 |
RNFR | 지정한 파일에서 파일명을 변경 |
RNTO | 지정한 파일로 파일명을 변경 |
SIZE | 파일 크기를 출력 |
STAR | 서버의 상태를 출력 |
STOR | 파일을 저장 |
STOU | 특정한 이름으로 파일을 저장 |
STRU | 데이터 전송 구조를 지정 |
SYST | 서버 시스템의 OS 타입을 출력 |
TYPE | 데이터 전송 타입을 지정 |
USER | 사용자명을 지정 |
5. httpd(아파치 웹 서버 서비스) |
1) 경로 : /ETC/INIT.D/HTTPD
2) 요약 : 아파치 웹 서버 데몬
3) 추가 설명
웹 서버 서비스의 구성을 위해서 가장 많이 사용되는 아파치 웹 서버를 설치합니다. 대부분의 리눅스 배포판에는 기본적으로 설치되어 있습니다. 만약 설치되어 있지 않다면 httpd.apache.org에서 내려 받아 설치합니다.
아파치 설정 파일은 /etc/httpd/conf/httpd.conf 입니다.
# cat /etc/httpd/conf/httd.conf | more
# Based upon the NCSA server configuration files originally by RobMcCool.
#
# This is the main Apache server configuration file. It contains the
# configuration directives that give the server its instructions.
# See for detailed information about the directives.
#
# Don NOT simply read the instructions in here without understanding
# what they do. They're here only as hints or reminders. If you are unsure
# consult the online docs. You have been warned.
#
# After this file is processed, the server will look for and process
# /etc/httpd/conf/srm.conf and then /etc/httpd/conf/access.conf
# unless you have overridden these with ResourceConfig and/or AccessConfig directives here.
#
# The configuration directives are grouped into three basic sections:
# 1. Directives that control the operation of the Apache server process as a
# whole ( the 'global environment').
# 2. Directives that define the parameters of the 'main' or 'default' seerver,
# which responds to requests that aren't handled by a virtual host.
--More--
아파치 설정 파일은 크게 3가지 섹션으로 구분할 수 있습니다.
① Global Environment
설정 | 설명 |
ServerRoot | 서버의 루트를 결정 |
LockFile | 잠금 파일의 위치를 기록 |
ScoreBoardFile | 서버 프로세스의 상태를 기록하는 파일의 위치를 지정 |
PidFile | 서버가 동작할 때 생기는 프로세스의 PID를 기록하는 파일 위치를 지정 |
Timeout | 클라이언트가 서버로부터 파일을 받을 때 대기하는 최대 시간을 초단위로 지정 |
KeepAlive On | 자식 프로세스를 계속 유지하여 효율성을 증가시킴 |
MaxKeepAliveRequests | KeepAlive가 설정된 경우 몇 번의 연결 요청을 받을지 결정 |
KeepAliveTimeout | KeepAlive가 설정된 경우 초단위로 지정된 시간 후에 연결을 종료 |
StartServers | 몇 개의 프로세스로 시작할지 지정 |
MinSpareServer, MaxSpareServer |
서버 풀의 크기를 조절 |
MaxClients |
동시에 접속할 수 있는 클라이언트 최대 개수로 최대 프로세스의 수를 지정 |
MaxRequestPerChild |
하나의 자식 프로세스가 처리하는 최대 연결 요청 수를 설정 |
Listen |
아파치의 포트를 설정. 기본값은 80 |
② Main server Configuration
설정 | 설명 |
User와 Group | 아파치 서버를 사용한 사용자와 그룹을 지정 |
ServerAdmin | 서버에 문제가 생겼을 때 연락할 메일 주소를 지정 |
ServerName | 서버 이름을 지정 |
DocumentRoot | 웹 문서의 위치를 지정 |
<Directory/> </Directory> |
각 디렉터리에 대한 접근 권한을 설정 |
UserDir |
사용자 홈페이지 디렉터리를 지정 |
ErrorLog |
에러 로그가 저장될 위치를 지정 |
LogLevel |
로그 레벨을 지정 |
LogFormat |
CustomLog에서 사용하는 로그 포맷 별칭을 지정 |
CustomLog |
로그 파일 이름과 형식을 지정 |
③ Virtual Hosts
설정 | 설명 |
NameVirtualHost | 버추얼 호스트를 설정. 설정되어 있으면 자동으로 활성화됨 |
<VirtualHost *80> </VirtualHost> |
버추얼 호스트 정보를 입력 |
httpd.conf 파일 설정 후에 ServerRoot에서 지정한 html 루트 디렉터리에 index.html 파일을 저장합니다. 아래 예제에서는 ServerRoot에서 지정한 html 루트 디렉터리가 /var/www/html이라고 가정했습니다.
# ls -al /var/www/html
합계 28
drwxr-xr-x 5 admin admin 4096 2월 5 15:06 .
drwxr-xr-x 9 admin admin 4096 2월 5 15:11 ..
-rw-r--r-- 1 admin admin 408 2월 5 13:11 index.html
설정을 수정한 후에는 새로운 설정이 적용되도록 반드시 아파치 서버 데몬을 재시작 해야 합니다.
# /etc/rc.d/init.d/httpd stop
Stopping httpd .......... [OK]
# /etc/rc.d/init.d/httpd start
Starting httpd .......... [OK]
제대로 동작하는지 telnet 명령으로 웹서버 포트인 80에 접속하여 확인합니다. 만일 아래 예제와 같이 "Connected..." 메시지가 나타나면, 아파치 서버가 제대로 실행된 것입니다.
# telnet localhost 80
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
6. mail(메일 보내고 받기) |
1) 경로 : /bin/mail
2) 요약 : 터미널에서 사용하는 메일 클라이언트
3) 사용 방법 : mail [-옵션] [-s 제목] [-c 참조] [-b 숨은참조] 받는사람
mail [-옵션] -f 파일명
mail [-옵션] -u 사용자 ID
4) 옵션
-b 숨은참조 : 같이 메일을 받는 사람을 추가함. 숨은 참조 된 사람은 메일을 받은 다른 사람에게는 보이지 않음
-c 참조 : 같이 메일을 받을 사람을 추가
-f : 파일로부터 메일을 읽어옴
-i : tty 인터럽트 신호를 무시
-n : 메일 프로그램 시작 시 /etc/mail.rc 파일을 읽지 않음
-N : 초기 화면에서 메일 목록을 보여주지 않음
-s 제목 : 발송 메일의 제목을 적음
-u : 사용자 계정을 지정
-v : 상세한 정보를 출력
5) 추가 설명
mail은 터미널에서 사용하는 메일 클라이언트 프로그램입니다. 메일을 송신할 수 있고 메일함을 정리할 수 있습니다.
<받은 편지 확인>
자신의 계정을 사용 중에 받은 편지를 확인하려면 mail만 입력합니다. 다음은 관리자 모드에서 특정 계정의 받은 편지를 확인할 때 사용합니다.
# mail -u chan
Mail version 8.1 6/6/93. Type ?for help.
"/var/mail/chan": 5 message 3 new
>1 park@naver.com Tue Jul 6 14:30 62/2080 "[광고] 리눅스 명령어 사전"
>2 tom@google.com Tue Jul 5 03:20 62/2080 "hello~"
>N3 powerss@hanmail.net Tue Jul 2 03:30 154:580 "안녕하세요~"
>N 5 kiki@nate.com Tue Jul 1 08:20 143/3512 "[광고] SSD 사세요~"
&
mail을 실행하면 초기 화면에 받은 편지의 목록이 나옵니다. 초기 화면에 나오는 부분을 메일의 헤더 부분이라 하는데 다음과 같이 구성되어 있습니다.
N/P/U | 5 | park@naver.com | Tue Jul 14:30 | 62/2080 | [광고] 리눅스 명령어 사전 |
편지 상태 | 편지 번호 | 보낸 사람 | 날짜 시간 | 라인/글자수 | 편지 제목 |
<편지 상태>
N : 새 메시지
P : 시스템의 메일 박스에 저장
U : 읽지 않은 메일
처음 수신된 편지부터 확인하려면 Enter를 누룹니다 특정 편지를 보기를 원한다면 &편지번호 형식으로 지정합니다.
&1 Enter키
Message 1:
From root Tue Jul 6 13:19:22 2020
Date: Tue, 6 Jul 2020 13:19:22 +0900
From chan<park@naver.com>
to: chanchan.co.kr
Subject: 테스트 메일을 보냅니다.
테스트 메일입니다.
&
<mail 명령어>
mail은 여러 기능의 명령어를 제공합니다.
명령어 입력 모드는 "&"로 표시합니다.
명령어 | 설명 |
n | 다음 메일 목록으로 이동 |
f <메일번호> | 편지 목록을 출력. "f*" 또는 "&fa"는 모든 편지 목록을 출력 |
d <메일번호> | 지정한 메일 번호의 메일을 삭제 |
s <메일번호> | 파일에 지정한 편지 내용을 저장 |
u <메일번호> | 메일을 지우지 않음 |
R <메일번호> | 회신 |
r <메일번호> | 전체 회신 |
q | mail을 종료 |
x | mail을 종료. 단 시스템의 메일 박스에서 확인한 메일은 삭제하지 않음 |
h | 메시지의 헤더 부분 출력 |
! | 쉘 명령어를 실행 |
e | Ex 모드로 메시지를 편집 |
<회신 보내기>
편지 보기 명령행에서 현재 메일에 회신을 보내기를 원한다면 R 명령을 입력합니다. 내용을 다 입력하면 Ctrl+D를 눌러 편지 입력을 종료합니다.
To: park@naver.com
Subject: Re: 테스트 메일을 보냅니다.
회신 메일입니다.
Ctrl+D
CC: Enter키
<편지 보내기>
mail을 실행한 상태에서 명령행에 &m 주소의 형식으로 입력하는 것만으로도 편지를 발송할 수 있습니다. mail을 실행시키지 않은 상태에서 참조인(-c) 숨은 참조인(-b)을 포함한 메일을 발송해 봅니다. 메일 전송 과정을 보려면 -v 옵션을 사용합니다.
# mail -v -c tom@google.com -b park@naver.com kiki@hanmail.net
Subject:[Test] 메일 발송 테스트 입니다.
안녕하세요! 잘 지내시지요.
오랜만에 메일을 보냅니다.
Ctrl+D
CC: chan@naver.com Enter키
kiki@hanmail.net... Connecting to mail.hancom.com. viaesmtp...
220 mail.hanmail.net ESMTP Sendmail 8.12.5/8.12.5; Wed, 5 Fer 2020 13:33:12 +0900
>>> EHLO 1
-------------중략---------------------
kiki@hanmail.net... Sent (9jriojwerjioE3 Message accepted for delivery Closing connection to mail.hancom.com
>>> QUIT
mail 명령으로는 바이너리 파일을 바로 첨부할 수 없습니다. 그래서 파일을 딬드하여 텍스트 형태로 전송할 수 있게 만들어 보내곤 했습니다. 현재는 모질라, 썬더버드, 에볼루션 그리고 K메일 등 여러 메일 클라이언트들이 GUI를 지원합니다.
※ 메일 서버에 있는 메일을 다른 계정으로 옮기기
리눅스 서버에 도작해 있는 메일을 다른 메일 계정으로 포워딩하는 방법입니다. 만일 chanchan.co.kr 서버의 admin에게 온 메일을 user@chanchan.co.kr으로 포워딩하고 싶다면 다음 명령을 실행합니다.
# cat /var/spool/mail/admin | formail -s /usr/sbin/sendmail user@chanchan.co.kr
7. named(네임 서버 서비스) |
1) 경로 : /etc/init.d/named
2) 요약 : 네임 서버를 서비스하는 bind 서버의 데몬
3) 추가 설명
네임 서버는 도메인 네임을 IP로 매핑한 데이터를 가지고 있다가 클라이언트로부터 도메인에 대한 질의가 들어오면 해당하는 IP를 알려줍니다. 만약 네트워크 설정에서 네임 서버를 지정하지 않았거나 지정한 네임 서버에 이상이 있을 경우, 네트워크 회선에만 문제가 없다면 웹 브라우저에서 URL로는 접근할 수 없지만 IP 주소로는 접근할 수 있습니다. 대표적인 네임 서버로는 BindBarkeley Internet Name Domain이 있습니다.
아래는 레드햇 배포판 기준으로 네임 서버 설정에 필요한 파일들의 목록입니다.
● /etc/named.conf : 네임 서버의 설정 파일
● /etc/resolv.conf : 시스템에서 불러오는 DNS 서버 주소를 등록하는 파일
● /etc/hosts : 간단한 DNS의 설정을 제공하는 파일
● /etc/hosf.conf : hosts 파일과 resolv.conf 파일 중 우선적으로 호출할 순서를 정하는 파일
● /var/named/named.ca : 루트 네임 서버에 대한 정보가 있는 데이터베이스 파일(캐시 파일)
● /var/named/named.local : localhost에 대한 설정 파일
● /var/named/forward.zone : Public Domain에 대한 Forward zone 파일로 새롭게 생성해야 함
● /var/named/reverse.zon : Inverse Domain에 대한 Reverse zone 파일로 새롭게 생성해야 함
① named.conf 설정
named.conf 파일은 네임 서버를 위한 환경 설정 파일로 기본적으로 캐시 파일과 localhost에 대한 설정을 제공합니다. 이 파일에 사용자가 사용할 도메인의 forward.zone 파일과 reverse.zone 파일에 대한 설정을 추가해야 합니다. 만일 /etc/named.ocnf 파일이 없다면 bindconf 명령으로 기본 설정 파일을 생성하거나 /usr/share/doc/bind-version/sample/etc/에 있는 named.conf 파일을 복사합니다.
아래는 chanchan.co.kr 도메인을 192.168.1.122 IP 주소로 하는 네임 서버를 설정하는 예입니다. /etc/named.conf 파일의 기본 설정에서 아래와 같이 굵게 볼드 처리된 내용과 같이 Forward zone인 chan.zone 파일과 Reverse zone인 chan.rev 파일 설정 내용을 추가합니다.
# vim /etc/named.conf
// Red Hat BIND Configuration Tool
//
// Default initial "Caching Only" name server configuration
//
options {
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_starts.txt";
/*
* If there is a firewall between you and nameservers you wnat
* to talk to, you might need to uncomment the query-source
* directive below. Previous versions of BIND always asked
* questions using port 53, but BIND 8.1 uses an unprivileged
* port by default.
*/
// query-source address * port 53;
};
zone "." IN {
type hint;
file "named.root";
};
zone "localdomain." IN {
type master;
file "localdomain.zone";
allow-update { none; };
};
zone "localhost." IN {
type master;
file "localhost.zone";
allow-update { none; };
};
zone "0.0.127.in-addr.arpa." IN {
type master;
file "named.local";
};
zone "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ipv6.arpa." IN {
type master;
file "named.ipv6.local";
allow-update { none; };
};
zone "255.in-addr.arpa." IN {
type master;
file "named.broadcast";
allow-update { none; };
};
zone "0.in-addr.arpa." IN {
type master;
file "named.zero";
allow-update { none; };
};
zone "chanchan.co.kr." IN {
type master;
file "chan.zone";
allow-update { noen; };
};
zone "1.168.192.in-addr.arpa." IN {
type master;
file "chan.rev";
allow-update { none; };
};
include "/etc/rndc.key";
위와 같이 Forward zone 파일과 Reverse zone 파일을 지정하는데, 파일 이름은 신청한 도메인명을 따라 chan.zone과 chan.rev로 설정합니다. 위 설정에서 1.168.192.in-addr-arpa.은 192.168.1.122 호스트의 Reverse zone 설정으로 반드시 IP를 역으로 입력해야 합니다. 마지막 8비트는 입력하지 않습니다.
② chan.zone 생성
named.conf 파일에서 신청한 도메인의 chanchan.co.kr에 대한 Forward zone 파일과 Reverse zone 파일은 각각 chan.zone과 chan.rev라는 이름의 파일을 /var/named 디렉터리에 생성합니다. 이제 /var/named로 이동하여 파일들을 살펴봅니다. 먼저 named.local 파일을 chan.zone 파일로 복사합니다.
# cd /var/named
# cp named.local chan.zone
형식에 맞게 chan.zone 파일을 편집합니다.
# vim /var/named/chan.zone
$TTL 86400
@ IN SOA ns.chanchan.co.kr root.ns.chanchan.co.kr. (
42 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS ns.chanchan.co.kr.
IN MX 10 mail.chanchan.co.kr.
ns IN A 192.168.1.122
chanchan.co.kr IN A 192.168.1.122
mail IN A 192.168.1.122
www IN A 192.168.1.122
ftp IN A 192.168.1.122
※ 주의사항
▶ 편집할 때 도메인 이름 다음에는 반드시 점(.)을 찍어야 합니다.
▶ 관리자 메일 주소는 root@ns.chanchan.co.kr이 아니라 root.ns.chanchan.co.kr과 같이 입력합니다.
▶ MX가 낮게 설정된 서버가 먼저 메일을 받고 실패할 경우 그 다음 서버가 메일을 받습니다.
형식 | 설명 |
; | 주석 |
TTL | Time to Live. 캐시 활성 시간으로 서버 정보를 자주 변경하는 경우는 보다 짧게 입력 |
@ | Origin을 뜻하는 특수문자 |
IN | Internet. 네트워킹 주소 클래스 |
SOA | Start Of Authority. 네임 서버 관리자 메일 주소. 해당 도메인의 모든 리소스에 대한 권리를 알려주는 레코드 |
NS | Name Server. 네임 서버를 알림 |
MX | Mail Exchanger. 지정하는 메일 서버가 2개 이상일 때 우선 순위를 지정 |
A | Address. 도메인을 IP로 매핑하는 가장 중요한 레코드 |
③ chan.rev 생성
Forward zone 파일인 chan.zone 파일을 생성했다면 Reverse zone 파일인 chan.rev 파일을 생성합니다. 형식은 거의 같으며 A 레코드를 PTR 레코드로 지정하면 됩니다.
아래와 같이 chan.rev 파일을 생성하기 위해 named.local 파일을 복사합니다.
# cp named.local chan.rev
chan.rev 파일을 다음과 같이 편집합니다.
# vim /var/named/chan.rev
TTL 86400
@ IN SOA ns.chanchan.co.kr. root.ns.chanchan.co.kr. (
42 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS ns.chanchan.co.kr.
122 IN PTR ns.chanchan.co.kr.
기본 형식은 Forward zone 파일과 같으며 IP를 도메인으로 매핑할 수 있도록 A 레코드 대신 PTR(Pointer) 레코드를 사용합니다.
④ 그 외 설정
/etc/resolv.conf 파일에 다른 네임 서버의 주소를 등록합니다. 네임 서버를 여러개 등록할 수 있습니다. 여러 개의 네임 서버가 지정되면 입력된 순서대로 주소를 질의합니다. 네임 서버는 NIC나 KRNIC 네임 서버를 등록하는 편이 좋습니다. IP 주소는 아래와 같습니다.
# cat /etc/resolv.conf
nameserver 192.168.1.122
nameserver 168.126.63.1
/etc/hosts 파일은 간단한 네임 서버의 역할을 하는 것으로써 자주 쓰는 도메인에 대한 알리아스를 지정할 수 있습니다.
# cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
192.168.1.122 ns.linuxroot.co.kr. ns
/etc/host.conf 파일에서 아래와 같이 hosts와 bind에 대한 동작 순서를 설정합니다.
# cat /etc/host.conf
order hosts,bind
⑤ 오류 확인 및 데몬 재실행
기본 설정을 마쳣다면 named-checkconf 명령으로 named.conf 파일의 문법을 검사합니다.
# named-checkconf /etc/named.conf
named-checkzone 명령은 zone 파일에 대한 문법을 검사합니다.
# named-checkzone chanchan.co.kr /var/named/chan.zone
zone chanchan.co.kr/IN: loaded serial 42
OK
설정을 모두 마쳤다면 네임 서버 데몬을 재시작합니다.
# /etc/init.d/named restart
설정 파일의 문법은 맞더라도 제대로 동작하는지는 nslookup 명령으로 재확인하는 편이 좋습니다.
'IT 이야기 > Linux 명령어' 카테고리의 다른 글
[RHEL6] 서버 및 클라이언트 명령어 4탄(praliases, proftpd, quota, rcp) (0) | 2020.02.05 |
---|---|
[RHEL6] 서버 및 클라이언트 명령어 3탄(newaliases, nfs, nfsstat, portmap) (0) | 2020.02.05 |
[RHEL6] 서버 및 클라이언트 명령어 1탄(dhcpd, domainname, fetchmail) (0) | 2020.02.05 |
[RHEL6] 부트로더 명령어(grub, grub-install, grub-mkconfig) (0) | 2020.02.05 |
[RHEL6] 방화벽/보안 명렁어(iptables, iptables-restore, iptables-save, md5sum) (0) | 2020.01.23 |
댓글