로컬에서 백업하여 원격으로 바로 옮기는 경우
tar cvfzp - /home | ssh taejun "cat > home.tgz"
tar cvfzp - /home | ssh taejun "cat > /dev/tape"

tar cvfzp - apache | ssh taejun "cd /usr/local; mv apache apache.bak; tar xvfzp -"

ssh taejun "cd /usr/local/test; tar xvfzp -" < my.tgz
ssh taejun" cat my.tgz" | tar xvfzp -

'Server' 카테고리의 다른 글

HTTP Error Code  (0) 2017.01.06
FTP vs NTFS  (0) 2017.01.06
ftp를 이용한 Network 백업  (0) 2017.01.06
쉘에서 PATH 보이기  (0) 2017.01.06
Telnet, Ssh 특정 계정 접속 못하게 하기  (0) 2017.01.06

#!/bin/sh

################# 개요 ##################
# 인자로 들어온 server1의 특정 db를 백업한다
# 인자가 생략되면 db1 이다.
# split로 분할 압축후 server2의 /home/myid/db_backup 에 ftp로 전송한다
# 파일명 : "db명"_"날짜"_"aa" , "ab" ...
######################################

############### 필요한 변수들 #############
# host : 백업될 서버
# username : ftp로 접속할 id
# password : 비번
# db_name : server1의 db명
# mysql_dir : mysql 데이터 디렉토리
# backup_dir : server1의 분할압축된 파일이 놓일 임시 디렉토리
# today_date : 오늘날짜 (파일명에 사용됨)
# size : 한 조각의 크기
#####################################
host="server2.test.com"
username="myid"
password="mypasswd"
db_name=${1:-db1}
mysql_dir="/home/mysql/data/"
backup_dir="/tmp/pieces/"
today_date=`date +%Y%m%d`
size="650m"

# 기존에 만들어진 파일들을 없앤다
# /tmp/pieces 로 이동후 원하는 db 디렉토리를 분할압축 한다.
# ftp로 server2 의 /home/foremost/db_backup 으로 옮긴다.

echo "[`date +%Y-%m-%d\ %T`] $db_name backup Start !!!"
if [ -d "$backup_dir" ]; then
rm -f ${backup_dir}*
fi

cd $backup_dir
tar cf - ${mysql_dir}${db_name} | bzip2 -c | split -b $size - ${db_name}_${today_date}_

{
echo user $username $password
echo cd /home/myid/db_backup
echo lcd /tmp/pieces
echo prompt
echo mput *
echo quit
} | ftp -n $host 21

echo "[`date +%Y-%m-%d\ %T`] $db_name backup End !!!"
exit 0


# 1G 용량의 db를 백업하는데 약 20여분이 소요되더군요.
# bzip2 대신 gzip을 사용하면 좀더 빨라지지 않을까 싶습니다.

// kltp.kldp.org

'Server' 카테고리의 다른 글

FTP vs NTFS  (0) 2017.01.06
ssh 이용하여 tar 로 원격 백업하기  (0) 2017.01.06
쉘에서 PATH 보이기  (0) 2017.01.06
Telnet, Ssh 특정 계정 접속 못하게 하기  (0) 2017.01.06
쉘다루기/쉘의 종류  (0) 2017.01.06

[iz4u@junghyun ~]$cat .bash_profile 
# .bash_profile 

# Get the aliases and functions 
if [ -f ~/.bashrc ]; then 
. ~/.bashrc 
fi 

# User specific environment and startup programs 

export PS1='[\h@\u \w]$' <--이 부분을 추가 
PATH=$PATH:$HOME/bin 

export PATH 
unset USERNAME 
[iz4u@junghyun ~]$ 

\h : 호스트 
\u : 계정아이디 
\w : 경로명 

pwd 처도 볼수 있지만...... 
[iz4u@junghyun ~]$cd public_html/ 
[iz4u@junghyun ~/public_html]$cd board/ 
[iz4u@junghyun ~/public_html/board]$cd include/ 
[iz4u@junghyun ~/public_html/board/include]$

참고 1 :
# .bash_profile 
# 제 .bash_profile 입니다. 
# 주석을 달아 놓았으니 튜닝해서 쓰세요. 

# Get the aliases and functions 
# 사용자 정의 알리어스와 함수 정의 포함 
#if [ -f ~/.bashrc ]; then 
. ~/.bashrc 
#fi 

# User specific environment and startup programs 
# 사용자별 환경 변수, 시작 프로그램 설정 

PATH=$PATH:$HOME/bin 
BASH_ENV=$HOME/.bashrc 
USERNAME="Christian Junguhn Hwang" 


# PS1##################################################################### 
# These comments are for the environmental variables of PS1 
# a: idk s: show the name of this shell 
# d: show date informations t: show time as 24 hours 
# e: hostname u: show id 
# j: idk v: show the version of this shell maybe 
# l: show the number of the konsoles w: show the absolutely path 
# n: idk 
# H: show the name of host and domain V: show the version 
# T: show time as 12 hours W: show the name of current path 
# this is my shell program for PS1 from here ############################# 
hour=`date | cut -f4 -d' ' | cut -f1 -d:` 
#time=`date | cut -f4 -d' ' 
if [ $hour -gt 12 ]; then 
PS1='[Joobaragy@\u \t PM] ' 
else 
PS1='[Joobaragy@\u \t AM] ' 
fi ############################# this is the end of my shell program for PS1 

export USERNAME BASH_ENV PATH PS1

// 해커즈뉴스

'Server' 카테고리의 다른 글

ssh 이용하여 tar 로 원격 백업하기  (0) 2017.01.06
ftp를 이용한 Network 백업  (0) 2017.01.06
Telnet, Ssh 특정 계정 접속 못하게 하기  (0) 2017.01.06
쉘다루기/쉘의 종류  (0) 2017.01.06
DISK Quota 설정하기  (0) 2017.01.06
동안 텔넷 접속을 계정 별로 막을 수 있는 방법이 딱히 없었다. 
그런 의미에서 아래 방법은 정말로 반가운 일이다. 
호스팅 업계에서는 유용하게 사용될 것으로 생각된다. 

Proftpd 보면 /etc/proftpd/conf/ftpusers 파일이 있을것이다. 

ftpusers 파일 안에 있는 계정은 FTP로 접근 못한다. 이걸 텔넷이나 ssh에 응용하면 된다. 

/etc/pam.d/ftp 에 보면 

auth required /lib/security/pam_listfile.so item=user sense=deny file=/etc/proftpd/conf/ftpusers onerr=succeed 
이렇게 있을 것이다. 위 라인이 없다면 추가한다. 

file=... 이 부부만 수정해 주면 된다. 

1.텔넷을 막고 싶으면 

/etc/pam.d/login 

auth required /lib/security/pam_listfile.so item=user sense=deny file=/etc/loginusers onerr=succeed 
위 라인이 없다면 추가한다. 
/etc/loginusers 파일을 만들어서 계정을 넣어주면 된다. 

2.ssh 도 할수 있다. 

/etc/pam.d/ssh 

auth required /lib/security/pam_listfile.so item=user sense=deny file=/etc/ssh/sshusers onerr=succeed 

이렇게 설정해주고 계정을 집어 넣으면 된다..... 


'Server' 카테고리의 다른 글

ftp를 이용한 Network 백업  (0) 2017.01.06
쉘에서 PATH 보이기  (0) 2017.01.06
쉘다루기/쉘의 종류  (0) 2017.01.06
DISK Quota 설정하기  (0) 2017.01.06
httpd.conf  (0) 2017.01.06

▒▒▒ 쉘 다루기 ▒▒▒
리눅스는 쉘프롬프트 상태에서 필요한 명령어를 실행할수 있습니다.
자 그럼 자신의 시스템에 적합한 최적화된 쉘을 구축해보겠습니다...

도스를 예로 들어보겠다. 도스를 처음 사용할때 가장 중요한 파일은 command.com 이다.
즉 모든 명령어는 command.com을 거쳐야만 실행이 된다.
리눅스에서 command.com 역할을 하는것이 바로 쉘이다.
그럼 이 쉘의 종류부터 알아보자

▶ 쉘의종류
Bourn shell
유닉스의 기본적인 쉘이며 구조적 문제를 해결할수 있는 문법언어를 내부적으로 갖춘 매우
강력한 쉘이다. 또한 뛰어난 입출력 제어기능을 가지고 있다.

C shell
많은 사용자를 확보하고 있는 쉘로서 스크립트 언어가 C와 비슷하여 C shell이라 불린다.

BASH(Bourne Again Shell)
요즘 리눅스에서 기본적으로 체택되며 기본쉘의 장점만 수용하고있다.

▶ 자신이 사용하고 있는 쉘 확인
확인방법 : #echo $SHELL
여기서 $SHELL은 환경변수이다. 환경변수 앞에서는 반드시 '$' 표시가 붙는다는 사실을 기억하자

▶ 자신이 사용하고 있는 쉘 변경 
변경방법 : #chsh
Changing shell for forwhom
Password:
New shell[/bin/bash] : /bin/csh
Shell changed

▶ Bash 설정파일(.bashrc .bash_profile)
각 사용자 디렉토리에 존재하며 쉘이 작동할때 자동으로 실행된다.
PATH경로 라이브러리 경로 프롬프트 모양등 여러가지 환경이 들어가 있다.

.bash_profil
PATH=$PATH:$HOME/bin
BASE_ENV=$HOME/.bashrc
USERNAME=""
export USERNAME BASE_ENV PATH

.bashrc
alias cp='cp -i'
alias mv='mv -i'
alais rm ='rm -i'
PATH=$PATH:/usr/local/bin 요 뒤에 추가가능

위에서 환경변수에 대해 언급한바가 있다. 내친김에 변수 만드는 방법도 알아보도록 하자

▶ 지역변수 : 사용자가 임으로 만들어 사용 새로운 쉘 시작시 유효하지 않다.
만드는 방법
#Linuxer=Phper
#echo $Linuxer 출력결과는 예상대로 Phper 이 된다.

▶ 환경변수 : 쉘내에서 가장 중요한 변수로 프로그램이나 사용자환경에 대한 정보가 저장된다.
#export Accel // 변수추가
#unset Accel //변수삭제

▶ 프롬프트 바꾸기
--바꾸는 방법
#$echo $PS1
$PS1="[\u@\h\d\t\W]$"

프롬프트에 달수 있는 기타 옵션들에 대해서 알아보자
\d 요일/달/날짜 형식의 날짜표시
\e ASCII의 excape 문자
\h 첫번째 ','까지의 hostname
\n 새로운 줄(바꾸기)
\t 24시간으로 현재시간
\T 12시간으로 현재시간
\u 현재사용자의 username
\w 현재 작업 디렉토리
\W 현재 작업 디렉토리의 basename
\! 현재 명령어의 history 번호
\# 현재 명령어의 command 번호
\\ backslash

▶ Alias 지정
alias cp='cp-i'
alias ls='ls -F --show-control-chars --color=auto'

[TIP] 리다이렉션...
명령을 실행했을때 실행결과를 나중에도 확인할수 있게 파일에 저장하는 기능이다.
#명령어 > 파일명 (실행결과가 새로운 파일에 저장)
#명령어 >> 파일명 (실행결과가 기존의 파일에 추가되어 저장)

'Server' 카테고리의 다른 글

쉘에서 PATH 보이기  (0) 2017.01.06
Telnet, Ssh 특정 계정 접속 못하게 하기  (0) 2017.01.06
DISK Quota 설정하기  (0) 2017.01.06
httpd.conf  (0) 2017.01.06
/etc/alias 사용법  (0) 2017.01.06
▒▒▒ 쿼타설정 ▒▒▒

1. 우선 커널에 quota설정이 되어있는지 확인해야합니다.
make xconfig 혹은 make menuconfig 실행하셔서 FileSystem으로 들어가시면 quota라는 항목이 있습니다.
이부분이 체크되어있어야 합니다. 체크가 되어있지 않으면 체크하시고 컴파일하셔요..

2. 부팅할때마다 적용을 시키기 위해 /etc/fstab 파일을 다음과같이 설정합니다.
지금부터는 쿼타설정할 파티션이 /dev/hda7 레이블은 /home 이라고 간주하겠습니다.
etc/fstab파일을 열어서 /home 이 있는 라인을 다음과같이 수정합니다.

/home /home ext2 defaults,usrquota,usrgroup 1 1

이렇게 설정한후 저장하고 나오세요

3. 쿼타적용할 디렉토리에 두개의 파일을 생성합니다.
#> touch /home/aquota.{user,group} <-- 요렇게 하시면 두개의 파일이 생성됩니다^^

4. 생성한 파일의 소유권을 수정합니다.
#> chmod 600 /home/aquota.*

5. 해당파일시스템 마운트 리로드..
#> mount -o remount /home

6. 다음과같이 디스크체크를 합니다.
#> quotacheck -auvg <-- 이과정에서 혹시 머라고머라고 이상한 거 나오면 그냥 무시하세요

7. 이제마지막 부분.. 
#> quotaon /home

이제 재부팅하시면 끝입니다


'Server' 카테고리의 다른 글

Telnet, Ssh 특정 계정 접속 못하게 하기  (0) 2017.01.06
쉘다루기/쉘의 종류  (0) 2017.01.06
httpd.conf  (0) 2017.01.06
/etc/alias 사용법  (0) 2017.01.06
FTP Command  (0) 2017.01.06

-------------------------------------------------------------------------------
◎ Apache 웹서버 환경설정


현재 아파치가 설치되어 있는 곳의 conf라는 디렉토리를 보면 httpd.conf라는 파일이 있슴다.
일단 이 파일을 vi편집기로 열어놓세요 아파치웹서버의 환경설정은 이 파일안에서 다함다.
그럼 순서대로 나열하고 중요한부분은 해석하고 사용법을 알아보겠슴다.

ServerType -standalone : 요청이 들어오기전 항상 응답할 준비가 되어있음 (대부분 사용, 빠름)
-inet : 요청이 들어오면 응답 (속도 떨어짐) 장점 : 메모리 적게사용

PidFile /var/run/httpd.pid : 아파치웹서버 PS id 정보가 여기에 저장

ResourceCondig conf/srm.conf : #으로 주석처리

AccessConfig conf/access.conf : #으로 주석처리

Timeout 300 : 요청이 들어왔을 때 300초까지 응답해줌 변경시에는 숫자만 바꿔주면 됨다

KeepAliv On : 홈페이지 접속한 상태를 계속 유지하면서 빠른시간내에 메뉴를 클릭(15초 횟수:100번) 

MaxKeepAliveRequests 100

KeepAliveTimeout 15

MinSpareServers 6 : 첨 실행되는 PS 개수 10개 줄어드는거 최소 6개 가장많이 늘어나는거 64 (메모리땜시 설정)

MaxSpareServers 64

StartServers 10

MaxClients 150 // 클라이언트 접속할수 있는 수

MaxRequestsPerChild // 자식PS가 100번정도 요청을 받고 사용하고 다시 삭제(ps 오랫동안 존재하면 보안상 문제)

Listen 3000 // 일반사용자 사용가능

User nobody // 권한을 주지않음으로 시스템 보안 유지

Group nobody

ServerAdmin root@localhost // 웹서버 문제가 생겼을 때 정보를 받을수 있는 멜주소 

ServerName new.host.name // DNS에 등록되어있는 호스트명 /etc/host 에 등록된 호스트명
IP Address 입력해도 됨

DocumentRoot // 홈페이지 내용 저장 디렉토리

UserDir public_html // 유저 디렉토리

DirectoryIndex // 시작페이지 파일이름 지정(순서대로)

AccessFileName .htaccess // 웹상에서 인증화면 뜸.. 

ThpesConfig /etc/mime.types // 아파치에서 적용하는 확장자 정의(ex 쇽웨이브정의)

HostNameLookups off // on 으로 되어있으면 클라이언트의 네임서버까지 추적(시간이 오래걸림)

ErrorLog // 아파치 에러메세지 디렉토리

LogLevel warn // warn(중간)뿐만아니라 debug notice 등등 있음 (로그메세지의 양)

ScriptAlias /cgi-bin/ "/home/httpd/cgi-bin/" //별칭정의

AddType application/x-httpd-php3 .php3 // 확장자 추가

AddHandler cgi-script .cgi // cgi 사용시 이부분의 주석을 풀어주어야 함

AddType text/html .shtml

AddType text/html .htm

버추얼호스트 설정방법(중요)

하나의 서버에 여러게 도메인 사용이 가능하다

NameVirtualHost 202.31.150.148 // 아파치웹서버에 아이피 어드레스


ServerAdmin webmaster@abc.co.kr //문제발생시 받을수 있는 주소
DocumentRoot /home/abc // 밑의 서버네임 홈페이지가 존재하는 위치
ServerName www.abc.co.kr
ErrorLog logs/abc.co.kr-error_log // 위 도메인에 문제가 생겼을 경우 저장되는 경위 (보통 안만듬) 
/var/log 에 있음
CustomLog logs/abc.co.kr-access_log common // 이것도 보통 안만듬


사용예.. (300~400개 정도 사용가능함)

NameVirtualHost 211.171.255.78



..





..



◎ 아파치 환경설정 두 번째..

//루트 디렉토리 이하의 디렉토리 환경설정 ex) 

Options All : MultiView를 제외한 모든부분 허가
ExecCGI : cgi 허가
FollowSymLinks : 심볼링크로 설정된 파일에 대해 원본을 찾아서 제공
Includes : server side include 서버가 이전하면 홈페이지의 주소를 변경하여야함 그러나 주소가 
입력된 파일하나만 수정해서 바꾸지 않아도 됨
IncludesNOEXEC : ssi를 지원하면서 cgi만 거부(보안상)
Indexes : 디렉토리 보여줌
None : 모든 옵션 불허
MultiViews : 홈페이지안에 영국어 한국어 중국어 세계의 언어가 있으면 특정 옵션을 사용하여 
나라마다 언어를 자동으로 제공, 이미지 이름이 동일한 경우 선택적으로 보여줌
SymLinksIfOwnerMatch : 심볼링크로 설정된 파일에 대해서 원본과 링크파일의 소유자가 
동일한 경우 원본만 보여줌

AllowOverride All : 모든 것을 허가
AuthConfig : 사용자 인증과 관련된 명령을 디렉토리 단위로 사용가능케 함 
FileInfo : 파일정보 표시 가능
Limit : 사용자의 접근을 제한할수 있음 아이피나 도메인을 이용해서..
None : 접근제한기능을 사용하지 않음
Options : 접근제한설정을 사용가능하게 지시


간단히 예를 들자면...

Options ExecCGI Indexes 
AllowOverride None

이렇게 하면 /home이라는 디렉토리에 CGI를 적용하고 웹상에서 index파일이 없을 때 해당디렉토리의 
파일이나 디렉토리를 보여주고 접근제한기능을 사용하지 않는다는 뜻이죠..

SSI (SERVER SIDE INCLUDE)를 설정해보자

ssi를 설치하면 웹상에서 텔넷명령을 실행할 수 있다. ex) 
- 단점 : 아파치 웹서버에 부담을 줄수 있다


Options All ExecCGIInclude IncludesNOEXEC Indexes


SSI를 설정하고나서 문서를 작성할 때 
// 파일의 수정일 표기
// 파일의 크기 표기
// food 파일내용을 삽입

이제 SSI 서비스를 받아보자

(SSI : 웹상에서 어떤 일을 첨부할수 있고 웹상에서 텔넷명령 실행가능)


최종수정일: 
파일의크기: 







ssi를 서비스하면 웹상에서 위와같은 서비스를 받을수 있다
그렇나 아파치 웹서버에 부담을 준당..

인증서비스(htaccess) 
다음은 home 디렉토리에 인증서비스를 하는 요령이다.


Options Includes ExecCGI // cgi 사용가능
AllowOverride ALL //.htaccess를 사용가능케 함


이제 public_html 밑에 인증서비스를 한다

.htaccess라는 파일 생성
Options All 
AuthType "Basic" // 인증방식을 베이직으로
AuthName "Administrator" // 인증화면 사용주체
AuthUserFile /home/wawacampus/public_html/.htpasswd //계정하과 비번이 있는 파일


require valid-user // AuthUserfile에 있는 사용자만 접근가능
allow from IP주소 (그사람은 허용함)
deny from all (모든 사람은 거부하고 특정한 IP주소만 허용)


.htpasswd 파일 생성방법

#> htpasswd -c .htpasswd person

두 번째부터는 -c 옵션은 사용하지 않음


혹시 틀린부분이 있다거나 하시면 아낌없는 질타를 바랍니다. - Leopit

'Server' 카테고리의 다른 글

쉘다루기/쉘의 종류  (0) 2017.01.06
DISK Quota 설정하기  (0) 2017.01.06
/etc/alias 사용법  (0) 2017.01.06
FTP Command  (0) 2017.01.06
sendmail.cf  (0) 2017.01.06

1. 이 파일의 기능은?
일종의 메일계정을 다른 메일주소나 다른 계정으로 매칭하는 기능을 합니다.
이런 면에서 /etc/mail/virtusertable 과 거의 비슷하지만 약간 성격이 다릅니다.
/etc/mail/virtusertable은 가상 도메인이 많이 있을 경우에 일반적으로 사용하는 방법입니다.

2. 작성할 형식은?
<계정 또는 가상유저>: <포워딩할 계정또는 가상유저 또는 다른 메일주소 리스트>

계정 :
/etc/passwd 파일에 등록된 유저를 말합니다. 즉 시스템 유저와 일반 유저를 포함한
계정입니다.

가상유저 :
/etc/passwd 파일에 존재하지 않은 유저로 시스템 관리자가 정하는 유저를 말합니다.

포워딩할 계정 :
/etc/passwd 파일에 존재하는 시스템 유저가 아닌 일반 유저의 계정

다른 메일주소 :
localhost에 등록되어 있지 않은 다른 메일서버(기계)의 메일주소


3. 리스트 작성은?
컴마(,)로 구분하여 계정또는 메일주소를 나열

4. love: love,hanym6@hanmail.net의 의미는 ?
localhost의 love의 계정으로 오는 메일은 localhost 계정인 love과
hanym@hanmail.net의 메일주소로 가게됩니다.
따라서 양쪽에 똑같은 메일이 존재하게 됩니다.

5. 가상유저 생성은?
예를 들어, /etc/passwd 파일에 aaa, bbb, ccc 라는 계정이 없고, love 라는 계정은
존재한다면,

aaa: love
bbb: love
ccc: love

으로 설정하여 aaa@localhost, bbb@localhost, 모두 love 계정으로 3개의 메일이
가게됩니다.

따라서 event, help, admin 등과 같은 계정은 가상유저로 설정하는게 좋겠죠..

6. 센드메일을 재시작해야 하나요?
센드메일을 재시작할 필요는 없습니다.

# newaliases 명령을 내려주면 됩니다.

7. root로 오는 메일은?

root: admin

으로 설정하면 root로 오는 메일을 admin이라는 유저가 받을 수 있습니다.

자료출처 : 리눅스채널'

'Server' 카테고리의 다른 글

DISK Quota 설정하기  (0) 2017.01.06
httpd.conf  (0) 2017.01.06
FTP Command  (0) 2017.01.06
sendmail.cf  (0) 2017.01.06
네임서버 구축  (0) 2017.01.06

.

- ftp 명령어

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

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

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

bye : ftp접속을 종료하고 빠져나간다.(bye) 

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

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

chmod : remote시스템의 파일퍼미션을 변경한다.(chmod 755 index.html) 

close : ftp접속을 종료한다. (close) 

delete : remote시스템의 파일을 삭제한다.(delete index.old) 

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

disconnect : ftp접속을 종료한다.(disconnect) 

exit : ftp접속을 종료하고 빠져나간다.(exit) 

get : 지정된 파일하나를 가져온다.(get index.html) 

hash : 파일전송 도중에 "#"표시를 하여 전송중임을 나타낸다.(hash) 

help : ftp명령어 도움말을 볼 수 있다.(help또는 help 명령어) 

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

ls : remote시스템의 디렉토리 내용을 디스플레이한다. (ls 또는 ls -l) 

mdelete : 여러개의 파일을 한꺼번에 지울 때 사용한다.( mdelete *.old) 

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

mput : 한꺼번에 여러개의 파일을 remote시스템에 올린다.(mput *.html) 

open : ftp접속을 시도한다.(open 168.126.72.51또는 open ftp.kornet.net) 

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

put : 하나의 파일을 remote시스템에 올린다.(put index.html) 

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

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

rstatus : remote시스템의 상황(version, 어디서, 접속ID등)을 표시한다.(rstatus) 

rename : remote시스템의 파일명을 바꾼다.(remote 현재파일명 바꿀파일명) 

rmdir : remote시스템의 디렉토리을 삭제한다.(rmdir 디렉토리명) 

size :remote시스템에 있는 파일의 크기를 byte단위로 표시한다.(size index.html) 

status : 현재 연결된 ftp세션모드에 대한 설정을 보여준다.(status) 

type : 전송모드를 설정한다.(type 또는 type ascii 또는 type binary) 

'Server' 카테고리의 다른 글

httpd.conf  (0) 2017.01.06
/etc/alias 사용법  (0) 2017.01.06
sendmail.cf  (0) 2017.01.06
네임서버 구축  (0) 2017.01.06
samba 설정으로 윈도우에서 리눅스 접근하기  (0) 2017.01.06

HOW-TO Configuration sendmail.cf

SMTP(Simple Mail Transport Protocol)는 TCP/IP 메일 전송 프로토콜입니다. Linux 에서는 기본적으로 sendmail프로그램을
통해 SMTP를 완벽하게 지원합니다. 간혹 sendmail데몬과 pop3데몬의 역할에 대해 잘못 알고 계시는 분이 계신데 sendmail
은 메일의 발신, 수신, 중계의 역할을 합니다. 즉 sendmail데몬은 메일을 보내고 받고 하는 역할을 합니다.
pop3데몬은 sendmail이 수신한 사용자의 메일을 사용자의 메일 클라이언트에서 받아 볼 수 있는 역할을 합니다.

0. 들어가기 전에
sendmail.cf 파일을 다루는 능력이 안된다고 해서 sendmail을 사용할 수 없는건 아닙니다. sendmail을 설치하면 기본적으로 설정되어 있는 sendmail.cf파일만으로도 충분히 아니 만족스러울 정도로 sendmail을 가동할 수 있습니다.
이번 강좌에서 다루는 sendmail.cf 설정들의 설명은 쉽고 자주 이용되는 설정에 대해서만 다룰려고 합니다. 하지만 이번 강좌에서 다루는 내용만으로도 sendmail을 사용하는데 아무런 지장이 없을 것입니다. 센드메일 관련 질문들을 봐도 이 범위에 벗어난 질문은 없는 것 같군요. 사실 더 이상 자세히 다룰 실력도 안되고, 워낙 sendmail의 기능이 많아서...
(800페이지 분량의 sendmail만을 다룬 책도 있습니다)
사실 sendmail.cf 파일에 대해서 공부하는것이 무척 부담스러울 것이다. 부담 되시는 분이나 처음부터 이해가 되지 않아 이 페이지를 닫으실 분들은 \"1.3 Options 섹션\" 부분만이라도 한번 읽어 보길 바란다.

1. sendmail.cf(sendmail 환경설정)
1.1-1 sendmail.cf의 규칙
-->>sendmail.cf의 각 행들은 다음과 같은 규칙이 적용됩니다.
1) 빈행은 무시한다.
2) #로 시작하는 행은 주석행이다.
3) C, D, F, H, K, M, O, P, R, S, V로 시작하는 행은 설정행이다.
4) 하나이상의 빈 공간으로 시작하는 행은 앞 행의 연장이다.

sendmail.cf 파일은 7개의 색션으로 나누어져 있는 아주 복잡한 파일이다.
아마 초보 분들은 sendmail.cf파일을 열고 그 내용의 방대함에 놀라 그냥 파일을 닫는 분도 있을 겁니다. 저도 첨에sendmail.cf 파일을 열어봤을 땐 짜증이 확 밀려 왔으니까.....
우선 간략하게 7개의 섹션들에 대해서 잠깐 살펴보고 넘어 갑니다.. 아주 간략하게.. 지금부터 바짝 긴장 하시길.. ^^;

Local Info
--->> 0이 섹션은 해당 로컬 호스트의 구성 정보를 정의합니다.
Options
--->> sendmail 환경을 정의하는 옵션을 정의 한다.
Message Precedence 
--->> sendmail 메시지 순서 값을 정의 합니다.
Trusted Users 
--->> 발신인의 주소를 변경할 권한을 갖는 사용자를 정의합니다.
Format of Headers 
--->> 메일에 삽입도는 메일 헤더를 정의합니다.
Rewriting Rules
--->> 사용자의 메일 프로그램에 있는 e-mail 주소를 메일 배달 프로그램에 필요한 폼으로 다시 작성하는 명령이 들어 있습니다.
Mailer Definitions
--->> 메일을 배달하는데 사용되는 프로그램을 정의합니다. Mailer가 사용하는 재작성 규칙도 이 섹션에 정의되어
있습니다.

1.1-2 sendmai.cf에서 사용되는 명령
C : 클래스 정의(문자열)
D : 메크로 정의
E : 환경변수 지정
F : 클래스 정의(file, pipe)
H : Herder 정의
K : Key file 정의(map 정의)
M : mailer 정의
O : 옵션
P : Message precedences
R : 덮어쓰기
S : Ruleset(새로운 규칙 시작)
T : Truseted users(사용자 지정)
V : 설정파일 버젼

1.2 local info 섹션
Cwlocalhost
localhost를 w클래스로 정의 한겁니다.
다음에 나오는 Fw와의 차이점은 C는 문자열을 정의하고 F는 파일을 정의합니다.

Fw/etc/mail/local-host-names
Cwlocalhost와 같이 w클래스를 정의하는데 문자열 대신 파일을 정의합니다.
즉 /etc/mail/local-host-names에 추가할 내용을 Cwlocalhost aaa.com bbb.com 으로 설정해도 같은 효과가 납니다..

FR-o /etc/mail/relay-domains
Relay를 허용할 도메인을 설정합니다.
그러나 /etc/mail/access에서 Relay 제어를 할 수 있기 때문에 이 파일은 거의 쓰기 않는 파일입니다.

DnMAILER-DAEMON
sendmail이 return 메일을 보낼 때 사용하는 사용자 이름을 정의한다.
sendmail로부터 return 메일을 받아 본 사람들은 MAILER-DAEMON의 메일을 받아본 기억이 있을 겁니다.

Kmailertable hash -o /etc/mail/mailertable
Mailer 테이블을 작성하는 파일을 정의합니다.
K 명령은 모든 정보와 내부 이름, 데이터베이스의 유형, 이 데이터베이스를 가지고 있는 파일을 정의할 때 사용한다.
K명령은 \"mailertable\"라는 이름의 데이터 베이스를 선언하는데 이 데이터 베이스는 표준 Unix 데이터베이스 포맷인 hash 포맷으로 되었있다는 것을 정의한다.

Kvirtuser hash -o /etc/mail/virtusertable
가상 유저 테이블을 정의하고 있다.

Kaccess hash -o /etc/mail/access
메일 수신자 데이터 베이스 파일을 정의하고 있다.

1.3 Options 섹션
아마 서버 관리자의 취향에 따라 가장 많이 수정되어 지는 부분이 Options 섹션의 설정들이 아닌가 생각된다.
모든 옵션에 대해서 설명을 하지 않았지만 특별한 경우가 아니면 이 밖의 설정들을 건드릴 일은 없을 것이라고 생각된다.
O SevenBitInput=False
7비트로 받아 들이지 않게 설정하고 있다.

O EightBitMode=pass8
8비트 데이트로 처리하게 설정하고 있다.

O AliasFile=/etc/aliases
aliases파일의 위치를 정의하고 있다.

O MaxMessageSize=1000000
메일의 최대 용량을 제한하는 옵션이다. 기본적으로 주석처리 되어 있어 무제한으로 설정되어 있다.
메일 박스 용량과는 무관한 설정이다.

O DeliveryMode=background
센드메일을 백그라운드로 작동하게 설정하고 있다.

O MaxHopCount=17
최대 메일 포워딩 수를 정의하고 있다.
큐잉 서버를 만들 때 사용되는 것으로 기본적으로 주석 처리 되어 있다.

O HelpFile=/usr/lib/sendmail.hf
help파일의 위치를 정의하고 있다.

O ForwardPath=$z/.forward.$w:$z/.forward
.forward 파일의 위치를 정의하고 있다.
$w는 호스트 이름을 가리키는 매크로 값이고 $z는 사용자 홈 디렉토리를 가리킨다.

O QueueDirectory=/var/spool/mqeue
센드메일의 큐 디렉토리의 위치를 지정한다.
큐 디렉토리는 메일 발송 실패 또는 대기 하고 있는 메일들이 임시로 저장되는 곳이다.

O Timeout.connect=1m
타임 아웃을 1분으로 설정하고 있다.

O Timeout.queuereturn=5d
Return메일이 발송될 시간을 설정하고 있다.
특정 이유로 메일이 5일동안 발송되지 않으면 메일을 보낸 사람에게 반송된다.

O Timeout.queuewarn=4h
메일이 최종 발신지까지 4시간동안 발송되지 않으면 메일을 보낸 사람에게 경고 메일을 보낸다.
sendmail.cf 파일에는 위 3가지 Timeout 설정외에 많은 Timeout 설정들이 있다.

O StatusFile=/var/log/sendmail.st
센드메일의 status 파일의 위치를 지정한다.

O DefaultUser=8:12
Mailer 의 UID와 GID를 설정한다. (UID : 8 , GID : 12)

O MinQueueAge=30m
메일을 바로 발송하지 않고 최소한 30분동안 큐잉 상태로 대기 시킨다. 기본적으로 주석 처리 되어 있다

O

1.4 Mesage Procedure 섹션
메 시지 대기열에 들어가는 메시지의 우선 순위를 할당할 때 사용한다. 디폴트로 메일은 \"1종 우편물\"로 간주되어 0이라는 우선 순위가 할당된다. 우선 순위를 나타내는 수가 음수일 경우 메일로 보낼 에러 메시지가 만들어지지 않기 때문에 대량 메일링에는 낮은 우선 순위를가 유리하다. 아래의 우선 순위 설정들은 수정하지 말고 기본값으로 사용하길 바란다.
Pfirst-class=0
Pspecial-delivery=100
Plist=-30
Pbulk=-60
Pjunk=-100

1.5 Trusted Users 섹션
Trust 된 사용자는 메일을 보낼 때 발신의의 주소를 변경할 수 있다. 단 trust된 사용자는 /etc/passwd 파일에 존재하는 사용자이어야 된다. 기본적으로 root, daemon, uucp가 설정되어 있다. 보안상 아래의 값을 변경하는 일은 없기 바란다.
Troot
Tdaemon
Tuucp

1.6 Format of Headers 섹션
메일 헤더를 정의하는 부분이다.
H?P?Return-Path: <$g>
HReceived: $?sfrom $s $.$?_($?s$|from $.$_)
$.$?{auth_type}(authenticated$?{auth_ssf} (${auth_ssf} bits)$.)
$.by $j ($v/$Z)$?r with $r$. id $i$?{tls_version}
(using ${tls_version} with cipher ${cipher} (${cipher_bits} bits) verified ${verify})$.$?u
for $u; $|;
$.$b
H?D?Resent-Date: $a
H?D?Date: $a
H?F?Resent-From: $?x$x <$g>$|$g$.
H?F?From: $?x$x <$g>$|$g$.
H?x?Full-Name: $x
# HPosted-Date: $a
# H?l?Received-Date: $b
H?M?Resent-Message-Id: <$t.$i@$j>
H?M?Message-Id: <$t.$i@$j>
#^L 

1.7 Rewritng Rules 섹션
R$* $#error $@ 5.7.1 $: \"550 Relaying denied\"
이 설정은 localhost에서만 RELAY를 허용하라는 설정이다. 절대 주석 처리 되어 있으면 안된다.
만약 주석 처리 되어 있을 경우 스패머들의 놀리터가 될 수 있다.

Mlocal, P=/usr/bin/procmail, F=lsDFMAw5:/|@qSPfhn9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,
M=1000000, T=DNS/RFC822/X-Unix, A=procmail -Y -a $h -d $u 
위의 \"M=1000000\" 설정을 통해서 사용자가 사용할 수 있는 전체 메일 용량이 아니라 들어오는 메일 용량을 제한 할 수
있다. 기본적으로 설정이 되어 있지 않다. (단위: bytes)

// 윤 일(admin@rootman.org)

'Server' 카테고리의 다른 글

/etc/alias 사용법  (0) 2017.01.06
FTP Command  (0) 2017.01.06
네임서버 구축  (0) 2017.01.06
samba 설정으로 윈도우에서 리눅스 접근하기  (0) 2017.01.06
/etc/passwd /etc/shadow 합치기/나누기  (0) 2017.01.06

+ Recent posts