CentOS 7 Minimal 설치

https://www.centos.org/download/

 

 

 

iso 파일을 USB에 부팅할 수 있도록 만들어 주는 프로그램 rufus를 사용합니다.

 

설치할때 네트워크는 수동으로 고정아이피를 설정해 줍니다.

 

 

 

호스트명 변경

 

[root@localhost ~] # hostnamectl set-hostname new_hostname

[root@localhost ~] # hostname

new_hostname

 

재부팅해야 바뀐 상태로 나옵니다.

 

 

NTP(Network Tiem Protocol) 설치

 

* 설치

yum -y install ntp

 

* 설정파일에 내용 추가 : vi /etc/ntp.conf

 

server time.bora.net
server time.kornet.net

 

* 서비스시작 : systemctl start ntpd.service

 

* 시작시 실행 : systemctl enable ntpd.service

 

* 확인 : ntpq -p

 

 

시간 동기화 설정

 

 

* rdate 설치

yum -y install rdate

 

* 하드웨어 시간확인

hwclock -r

 

* 운영체제 시간확인

date

 

* 타임서버 시간확인

rdate -p time.bora.net

 

* 부팅시 동기화

vi /etc/rc.d/rc.local

 

/usr/bin/rdate -s time.bora.net
/sbin/hwclock -w

 

* 주기적으로 동기화

crontab -e

00    01    *    *    *    /usr/bin/rdate -s time.bora.net&&hwclock -w

 

 

netstat 설치

 

yum install net-tools -y

 

 

iptables 설치

yum install iptables-services

Docker를 이용해 Rocket.chat 서버를 설치하려고 합니다.

 

시행착오를 정리하는 차원에서 적습니다.

 

 

1. Ubuntu 공식 이미지

 

최소한의 기능만 제공하는 서버로 안되는 것이 많습니다.

 

ssh로 메인 시스템에 접속 한 후, docker attach ubuntu 로 docker Ubuntu 에 접속합니다.

 

hostname> docker attach ubuntu

 

기본 업데이트 및 sudo을 설치합니다.

 

root@ubuntu:/# apt update

 

root@ubuntu:/# apt install -y sudo

 

root@ubuntu:/# apt update

 

vi 설치

 

root@ubuntu:/# apt install vim

 

snap 설치

 

root@ubuntu:/# apt install snapd

 

메인시스템으로 돌아올때 그냥 exit하면 docker가 종료됩니다.

 

Ctrl-P, Ctrl-Q 로 나옵니다.

 

snap이 실행이 안됩니다. manaul로 설치하는 것도 잘 안되서 다른 방법으로 시도합니다.

 

2. 다른 Ubuntu 이미지로 시도

 

 

용량도 크고 기본으로 기능이 많을 것으로 생각되어 다운로드 받아 설치를 시도했으나 snap에서 똑같이 막힙니다.

 

하지만 이 경우는 크롬브라우저를 통해 Ubuntu GUI를 사용할 수 있어서 다음에 활용하면 좋을 것 같습니다.

 

 

 

 

3. Rocket.chat에서 제공하는 공식 이미지 사용

 

설명을 읽어보니 Rocket.chat에서 제공하는 이미지가 있습니다.

 

하지만 다운받아 실행하지 자동 종료됩니다. 설정해 줘야 하는 것이 많이 있는 것 같습니다.

 

시간이 없어서 아쉽지만 다른방법으로 갑니다.

 

 

4. CentOS 공식 이미지에 설치

 

CentOS 공식 이미지를 받아 실행하고, Manual로 설치를 진행합니다.

 

"systemctl start mongod"

 

하지만 여기서 문제 발생

 

Failed to get D-Bus connection: Operation not permitted

 

https://linuxacademy.com/community/posts/show/topic/21629-docker-failed-to-get-dbus-connection-operation-not-permitted

 

아무래도 Docker는 적당한 방법이 아닌 것 같아, Linux에 직접 설치해 봐야겠습니다.

 

Synology NAS 중 Docker가 있다는 사실에 바로 확인을 해보니 제가 가지고 있던 건 지원을 하지 않는 모델이었죠.


좌절을 하고 있다가 지난번 만든 헤놀로지를 보니 거기서는 되더군요.


버전은 낮지만 그래도 Docker를 쉽게 설치해서 사용할 수 있어서 Ubuntu를 설치해 보았습니다.


DSM5.2 버전이니 상위버전과는 좀 다른점이 있겠지만 설치가 끝나고 사용은 크게 다르지 않을까 생각됩니다.





설치를 하면 메뉴에 Docker 아이콘이 생깁니다.




5개의 메뉴가 있고, 개요에는 실행중인 컨테이너(가상서버)의 상태가 나옵니다.




레지스트리에서 Ubuntu를 조회한 결과입니다.


오른쪽에 공식인증 마크가 붙어있는 것이 공식제공하는 이미지로 믿고 사용해도 되는 겁니다. 




검색된 이미지를 다운로드 하면 이미지 메뉴에 나타납니다.




이렇게 다운로드 받은 이미지를 가상으로 실행하면 비디오 형식 메뉴에 나타나게 되고, 실행/중지를 할 수가 있습니다.

실행 > 마법사로 실행을 하면 쉽게 실행할 수 있지만, 다양한 원하는 서비스를 하려면 연구를 좀 해야할 것 같네요.












우측 스위치로 실행/중지를 시킬 수 있습니다.





이제 서버 설치는 끝났고, 세부적으로 사용해 봐야겠네요.



출처 : http://user.chol.com/~jtoh/computer/linux/network%20setting.htm

1. 물리적인 hardware인식 시키기

lan card 인식 시키기 : -pcmcia lan card 인식 시키기 참조

 

2. Software setting (text mode)

2-1. 네트워크 모듈 및 옵셥, 인터페이스 alias
/etc/modules.conf

첫 번째 이더넷 인터페이스 설정
/etc/sysconfig/network-scripts/ifcfg-eth0

2-2. hostname 설정
/etc/HOSTNAME

2-3. IP address설정
/etc/hosts
간단한 host -> IP addr 변환정보, alias

2-4. Gateway 설정( 및 기본호스트에 대한 정보)
/etc/sysconfig/network

2-5. DNS (Nameserver) 설정
/etc/resolv.conf

2-6. hosts파일과 DNS 서버 질의 요청 우선 순위 설정
/etc/host.conf
/etc/nsswitch.conf

2-7. Netmask설정

2-8 네트워크 활성화
#/etc/rc.d/init.d/network restart

3. Network Testing

#ping 127.0.0.1  // localhost

#ping 자신의 IP address  : 자신의 network 카드는 제대로 작동
(네트워크 카드가 슬롯에 재대로 장착되었는지
커널에서 이더넷을 인식하는지 - module 적재)

#ping gateway : 안되면 내부망이 잘못 되거나 gateway(HUB)에서 잘못됨
(랜선이 이더넷 카드에 제대로 연결되어는지?
랜선이 올바른지- 랜선을 교체
허브장비 점검
다른 컴퓨터와 비교)

#ping 외부

 

4. Network에 관계된 명령어

#netcfg  : x-windows상에서 네트워크 설정하는 명령어

#linuxconf :  리눅스 시스템을 관리하기 위한 총체적인 툴 : redhat 7.2에서 default로 깔리지 않음
 

#netconfig : console에서 네트워크 설정하는 명령어

#ifconfig : 네트워크 인터페이스를 명령어로 설정하거나 직접확인하는 명령어
#ifconfig -a  네트워크 장치명 정보 보여줌
#
ifconfig eth1 inet 192.168.1.1 netmask 255.255.255.0 up
    
ethl1    link encap:Ethernet  Hwaddr 00:03:47:7A:4F:B8
                inet addr:192.168.1.1 Bcast:192.168.1.256  Mask:255.255.255.0

#ifconfig <인터페이스 이름> inet <IP addr> netmask <넷마스크 값> broadcast <broadcast 값>   up
#ifconfig 장치명 down
#ifconfig etho0 up

#nslookup : 네임서버에 질의하는 네임 서버 질의 도구
#nslookup www.protein.pe.kr [or 172.16.4.50]

#netstat :네트워크 연결 상태를 확인하는 명령어
#netstat -vat
#netstat -r

#traceroute  : 특정 호스트 또는 IP까지 연결된 노드를 알아보는 명령어
#traceroute www.kldp.org

#route :라우칭 테이블을 확인하거나 라우팅 정보를 설정 삭제하는 명령어
# route -n

#hostname : hostname을 화면에 출력하는 명령어

# lsmod

#network start eth0

 

#telnet

#ftp

네트워크 설정파일들

/etc/sysconfig/network 파일
NETWORKING=yes
HOSTNAME=linux
GATEWAY=211.47.133.62

/etc/sysconfig/network-scripts/ifcfg-eth0  파일
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
IPADDR=211.47.133.34
NETMASK=255.255.255.224
GATEWAY=211.47.133.62

/etc/host.conf
order hosts,bind

/etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1               linux localhost.localdomain localhost

/etc/ resolv.conf
nameserver 211.47.133.60
nameserver 210.117.65.1

/etc/ sysctl.conf
# Disables packet forwarding
net.ipv4.ip_forward = 0
# Enables source route verification
net.ipv4.conf.default.rp_filter = 1
# Disables the magic-sysrq key
kernel.sysrq = 0

/proc/sys/net/ipv4

/proc/sys/net/ip_forward

0


vi에서 replace를 다음처럼 한다.

:%s/foo/bar/g

^M을 삭제하려면 다음과 같이 한다.

:%s/^M//g

vi에서 ^M을 넣으려면 ctrl+V ctrl+M한다.

cf) 커맨드라인에서도 ^M을 넣으려면 Ctrl+V M 하면 된다.
 
# ipcs -q (queue 확인)
# ipcs -m (shard memory 확인)
# ipcs -s (semaphore 확인)

* ipcrm 사용법 (삭제)
# ipcrm -q ID (해당 queue 삭제)
# ipcrm -m ID (해당 memory 삭제)
# ipcrm -s ID (해당 semaphores 삭제)

출처 : Tong - lim4you님의 Linux/Unix/Aix통



1. /etc/sysconfig/network
   hostname=MyHostName

2. /etc/hosts
  127.0.0.1      MyHostName

3. reboot 또는 
   echo "MYHOST" > /proc/sys/kernel/hostname

1. 설치된 패키지 보기
rpm -qa

2. 설치하기
rpm -Uvh packagename



사용법: rpm [옵션...]
  --quiet

질의 옵션 (-q 또는 --query 옵션과 함께 사용):
  -c, --configfiles             모든 설정 파일을 나열합니다
  -d, --docfiles                모든 문서 파일을 나열합니다
  --dump                        기본 파일 정보를 보여줍니다
  -l, --list                    패키지 안의 파일을 나열합니다
  --queryformat=QUERYFORMAT     다음의 질의 형식을 사용하십시요
  -s, --state                   나열된 파일의 상태(state)를
                                보여줍니다
  -a, --all                     모든 패키지에 대해
                                질의/검증합니다
  -f, --file                    파일이 들어있는 패키지에 대해
                                질의/검증 합니다
  -g, --group                   그룹 안의 패키지를 질의/검증
                                합니다
  -p, --package                 query/verify a package file
  -W, --ftswalk                 query/verify package(s) from TOP file tree walk
  --pkgid                       패키지 식별자(identifier)를
                                사용하여 패키지를 질의/검증
                                합니다
  --hdrid                       헤더 식별자(identifier)를 사용하여
                                패키지를 질의/검증 합니다
  --fileid                      파일 식별자(identifier)를 사용하여
                                패키지를 질의/검증 합니다
  --specfile                    spec 파일에 대해 질의합니다
  --triggeredby                 패키지로 인해 생성되는(triggered)
                                패키지에 대해 질의합니다
  --whatrequires                의존성을 필요로 하는 패키지에
                                대해 질의/검증 합니다
  --whatprovides                의존성을 제공하는 패키지에 대해
                                질의/검증 합니다
  --nomanifest                  do not process non-package files as manifests

검증 옵션 (-V 또는 --verify 옵션과 함께 사용):
  --nomd5                       파일의 MD5 축약(digest)을 검사하지
                                않습니다
  --nofiles                     패키지 안의 파일을 검사하지
                                않습니다
  --nodeps                      패키지의 의존성을 검사하지
                                않습니다
  --noscript                    don't execute verify script(s)
  -a, --all                     모든 패키지에 대해
                                질의/검증합니다
  -f, --file                    파일이 들어있는 패키지에 대해
                                질의/검증 합니다
  -g, --group                   그룹 안의 패키지를 질의/검증
                                합니다
  -p, --package                 query/verify a package file
  -W, --ftswalk                 query/verify package(s) from TOP file tree walk
  --pkgid                       패키지 식별자(identifier)를
                                사용하여 패키지를 질의/검증
                                합니다
  --hdrid                       헤더 식별자(identifier)를 사용하여
                                패키지를 질의/검증 합니다
  --fileid                      파일 식별자(identifier)를 사용하여
                                패키지를 질의/검증 합니다
  --specfile                    spec 파일에 대해 질의합니다
  --triggeredby                 패키지로 인해 생성되는(triggered)
                                패키지에 대해 질의합니다
  --whatrequires                의존성을 필요로 하는 패키지에
                                대해 질의/검증 합니다
  --whatprovides                의존성을 제공하는 패키지에 대해
                                질의/검증 합니다
  --nomanifest                  do not process non-package files as manifests

File tree walk options (with --ftswalk):
  --comfollow                   FTS_COMFOLLOW: follow command line symlinks
  --logical                     FTS_LOGICAL: logical walk
  --nochdir                     FTS_NOCHDIR: don't change directories
  --nostat                      FTS_NOSTAT: don't get stat info
  --physical                    FTS_PHYSICAL: physical walk
  --seedot                      FTS_SEEDOT: return dot and dot-dot
  --xdev                        FTS_XDEV: don't cross devices
  --whiteout                    FTS_WHITEOUT: return whiteout information

서명 옵션:
  --addsign                     sign package(s) (identical to --resign)
  -K, --checksig                verify package signature(s)
  --delsign                     delete package signatures
  --import                      import an armored public key
  --resign                      sign package(s) (identical to --addsign)
  --nodigest                    don't verify package digest(s)
  --nosignature                 don't verify package signature(s)

데이터베이스 옵션:
  --initdb                      데이터베이스를 초기화 합니다
  --rebuilddb                   설치된 패키지 헤더에서 상반된
                                목록(inverted lists)의
                                데이터베이스를 재구축 합니다

설치/업그레이드/삭제 옵션:
  --aid                         add suggested packages to transaction
  --allfiles                    특정 파일을 생략하기 위한 설정이
                                적용된 경우에도, 패키지 안의
                                모든 파일을 설치합니다
  --allmatches                  <패키지> 이름과 일치하는
                                패키지는 모두 제거합니다
                                (<패키지>에 여러개의 패키지를
                                동시에 지정할 경우에는 오류가
                                발생합니다)
  --badreloc                    relocate files in non-relocatable package
  -e, --erase=<패키지>+            패키지를 (제거) 삭제합니다
  --excludedocs                 패키지에 포함된 문서 파일을
                                설치하지 않습니다
  --excludepath=<경로>            <경로>로 시작되는 파일은
                                설치하지 않습니다
  --fileconflicts               detect file conflicts between packages
  --force                       --replacepkgs 와 --replacefiles 옵션을
                                동시에 사용합니다
  -F, --freshen=<패키지파일>+        기존에 설치된 패키지를
                                업그레이드 합니다
  -h, --hash                    패키지 설치를 해시마크(#)로
                                표시합니다 (-v 옵션과 함께
                                사용하는 것이 좋습니다)
  --ignorearch                  패키지의 아키텍쳐를 검사하지
                                않습니다
  --ignoreos                    패키지의 운영체제를 검사하지
                                않습니다
  --ignoresize                  패키지를 설치하기 전에 디스크
                                공간을 검사하지 않습니다
  -i, --install                 install package(s)
  --justdb                      파일시스템을 변경하지 않고,
                                데이터베이스를 갱신합니다
  --nodeps                      패키지의 의존성을 검사하지
                                않습니다
  --nomd5                       파일의 MD5 축약(digest)을 검사하지
                                않습니다
  --nocontexts                  don't install file security contexts
  --noorder                     의존성이 있는 패키지를
                                설치하도록 재요구하지 않습니다
  --nosuggest                   do not suggest missing dependency resolution(s)
  --noscripts                   패키지 스크립틀릿(scriptlet)을
                                실행하지 않습니다
  --notriggers                  이 패키지에 의해
                                생성되는(triggered) 어떠한
                                스크립틀릿(scriptlet)도 실행하지
                                않습니다
  --oldpackage                  이전 버전의 패키지로
                                다운그레이드 합니다 (--force
                                옵션을 사용시에는 이 옵션이
                                자동으로 적용됩니다)
  --percent                     패키지 설치를 퍼센트(%)로
                                표시합니다
  --prefix=<디렉토리>               재배치 기능이 있는 패키지의
                                경우, 지정한 <디렉토리>로
                                재배치하여 설치합니다
  --relocate=<이전경로>=<새로운경로>     <이전경로>에서 <새로운경로>로
                                파일을 재배치 합니다
  --repackage                   재패키징(repackaging)으로 인해
                                삭제되는 패키지 파일을
                                저장합니다
  --replacefiles                ignore file conflicts between packages
  --replacepkgs                 패키지가 이미 설치되어 있는
                                경우에도 설치합니다
  --test                        패키지를 설치하지 않고, 제대로
                                설치되는지만 확인합니다
  -U, --upgrade=<패키지파일>+        패키지를 업그레이드 합니다

Common options for all rpm modes and executables:
  -D, --define='MACRO EXPR'     define MACRO with value EXPR
  -E, --eval='EXPR'             print macro expansion of EXPR
  --macros=<FILE:...>           read <FILE:...> instead of default file(s)
  --nodigest                    don't verify package digest(s)
  --nosignature                 don't verify package signature(s)
  --rcfile=<FILE:...>           read <FILE:...> instead of default file(s)
  -r, --root=ROOT               use ROOT as top level directory (default: "/")
  --querytags                   질의 태그를 보여줍니다
  --showrc                      현재 설정되어 있는 rpmrc의 내용과
                                매크로를 보여줍니다
  --quiet                       자세한 출력을 제공합니다
  -v, --verbose                 아주 상세한 출력을 제공합니다
  --version                     현재 사용되고 있는 rpm 버전을
                                표시합니다

Options implemented via popt alias/exec:
  --scripts                     list install/erase scriptlets from package(s)
  --setperms                    set permissions of files in a package
  --setugids                    set user/group ownership of files in a package
  --conflicts                   list capabilities this package conflicts with
  --obsoletes                   list other packages removed by installing this
                                package
  --provides                    list capabilities that this package provides
  --requires                    list capabilities required by package(s)
  --info                        list descriptive information from package(s)
  --changelog                   list change logs for this package
  --xml                         list metadata in xml
  --triggers                    list trigger scriptlets from package(s)
  --last                        list package(s) by install time, most recent
                                first
  --dupes                       list duplicated packages
  --filesbypkg                  list all files from each package
  --fileclass                   list file names with classes
  --filecolor                   list file names with colors
  --filecontext                 list file names with security context from
                                header
  --fscontext                   list file names with security context from
                                file system
  --recontext                   list file names with security context from
                                policy RE
  --fileprovide                 list file names with provides
  --filerequire                 list file names with requires
  --redhatprovides              find package name that contains a provided
                                capability (needs rpmdb-redhat package
                                installed)
  --redhatrequires              find package name that contains a required
                                capability (needs rpmdb-redhat package
                                installed)
  --buildpolicy=<policy>        set buildroot <policy> (e.g. compress man
                                pages)
  --with=<option>               enable configure <option> for build
  --without=<option>            disable configure <option> for build

Help options:
  -?, --help                    Show this help message
  --usage                       Display brief usage message


출처 : http://cafe.naver.com/linuxcare.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=21688

사용 OS : Oracle Enterprise Linux 5.1 (Red Hat Enterprise와 거의 동일)
오라클 RAC을 VM에서 테스트하기 위해 다운받아 인스톨 중인데
한군데서 막혀습니다..
/etc/init.d 밑에 rawdevices 가 없네요..
인스톨 할 때 어떤 패키지를 빼 먹어서 그런지 잘 모르게씁니다..
(보통은 디폴트로 인스톨이 되고 service 명령어로 조작이 가능한데 말입니다)
구글에서 검색해도 잘 안보이는 군요..
처음부터 다시 인스톨을 해볼지도 고려중입니다만...
혹시 정보 아시는 분들이 계실까바 글 올립니다..


leejae25
2008/02/05 11:53

로우 raw 장치 인터페이스는 Red Hat Enterprise Linux 5에서 사용되지 않습니다
raw 장치 맵핑은 udev 규칙을 통해 설정됩니다
/etc/udev/rules.d/60-raw.rules 파일에 아래규칙(샘플)을 넣어주신후
ACTION=="add", KERNEL=="sdb1", RUN+="/bin/raw /dev/raw/raw1 %N"
리부팅하시거나.. 아님 start_udev 명령을 내려주세요..

  1. 출처 : http://blog.missflash.com/535


    proftpd 서버 설치 순서
    1. 디렉토리 생성 : mkdir /usr/local/src/ftpd
    2. 디렉토리 이동 : cd /usr/local/src/ftpd
    3. 배포파일 다운로드 : lftpget ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.0a.tar.gz (최신버전 확인은 http://www.proftpd.org 에서 가능)
    4. 다운로드한 파일의 압축 해제 : tar -xvzf [proftpd소스파일명.tar.gz]
    5. proftpd를 설치할 디렉토리 생성 : mkdir /usr/local/server/proftpd
    6. 소스파일 압축 해제 : tar -xzf proftpd-1.3.0a.tar.gz
    7. 디렉토리 이동 : cd proftpd-1.3.0a
    8. 환경설정 체크 스크립트 실행 : ./configure --prefix=/usr/local/server/proftpd --enable-autoshadow -enable-shadow
    9. 실행파일 생성 : make
    10. 실행파일 및 라이브러리 인스톨 : make install
    11. 환경설정 파일 수정 : /usr/local/server/proftpd/etc/proftpd.conf
    12. 데몬 시작 : /usr/local/server/proftpd/sbin/proftpd &[각주:1] [각주:2]
    13. 클라이언트 접속 : FileZilla 등의 클라이언트 프로그램 이용
    14. (접속 불가능시) iptables 방화벽 설정 파일에서 21번 포트를 오픈 (포트 오픈 여부 확인 : iptables -L)

  • 패키지 설치 명령
    • yum install [패키지명] : CentOS 배포사이트의 원격 업데이트 서버에서 패키지명을 찾은 후 설치
    • yum update [패키지명] : CentOS 배포사이트의 원격 업데이트 서버에서 패키지명을 찾은 후 업데이트
    • yum remove [패키지명] : 리눅스 서버에 설치된 패키지명 삭제

  • proftpd 폴더 구조
    • bin : 일반 실행 파일
    • etc : 환경설정 파일
    • libexec : 라이브러리 파일
    • man : 메뉴얼 파일
    • sbin : root(수퍼유저)가 실행할 수 있는 파일
    • var : 로그 파일, 프로세스 ID를 저장하는 파일

  • FTP 접속 오류 발생시 확인사항
    • 아이디와 비밀번호
    • 포트 번호 : 기본포트는 21입니다.
    • Passive 모드 : 위 정보가 맞는데도 접속할 수 없을때는 클라이언트 프로그램의 환경설정(혹은 접속시 입력하는 정보)에서 Passive 모드(수동적인 모드)에 체크를 해제해보시기 바랍니다.
    • 캐릭터셋 : 한글로 된 폴더나 파일명을 정상 출력하기 위해서는 UTF-8 모드로 체크해야 합니다.[각주:3]

  • proftpd 서버 시작스크립트 생성
    1. 원본 소스파일로 이동 : cd /usr/local/src/ftpd/proftpd-1.3.0a
    2. 디렉토리 이동 : cd contrib/dist/rpm/
      • proftpd.init.d : standalone 서비스, 독립서비스를 위한 부팅시 실행파일
      • xinetd : xinetd 수퍼데몬 서비스를 위한 부팅시 실행파일
      • ftp.pamd : pam 인증 사용시 필요한 파일
      • proftpd.logrotate : 로그를 일정기간 단위로 잘라서 보관하는 작업을 위해 필요한 파일
    3. proftpd.init.d 파일 수정 : PATH="$PATH:/실행파일경로" 로 수정
    4. proftpd로 이름을 변경한 후, /etc/rc.d/init.d/ 디렉토리로 복사 : cp proftpd.init.d /etc/rc.d/init.d/proftpd
    5. 755로 퍼미션 변경 : chmod 755 /etc/rc.d/init.d/proftpd
    6. 런레벨 5에 활성화 후, 부팅시 실행하도록 설정[각주:4] : chkconfig --add proftpd (chkconfig --level 35[각주:5] proftpd on)
    7. 활성화 여부 확인 : chkconfig --list | grep proftpd

  • proftpd.conf 파일 설정
    • ServerName : FTP 서버 이름 및 텍스트 메시지
    • ServerType : 실행방식 설정(inetd / xinetd[각주:6] / standalone[각주:7]로 설정)
    • DefaultServer : Primary IP 또는 가상 FTP 서비스로부터의 연결 요청이 있을 때, 기본으로 응답할 서버
    • Port : FTP 서비스의 포트
    • Umask : 클라이언트 사용자가 생성하거나 업로드하는 디렉토리 혹은 파일의 퍼미션(디렉토리 퍼미션=777-Umask값, 파일 퍼미션=666-Umask값)
    • MaxInstances : standalone 서비스 중 하나로 proftpd 데몬을 실행할 때, 최대 자식 프로세서 생성 개수 지정
    • User, Group : 권한을 가지는 사용자와 그룹
    • DefaultRoot : 계정 사용자별 루트 디렉토리 설정(~ 설정시 루트 디렉토리 상위로 접속 불가, !wheel 설정시 wheel그룹은 예외[각주:8])
    • AllowOverwrite : 업로드한 파일에 덮어쓰기를 허용할 것인지 설정(on / off로 설정)
    • <Limit SITE_CHMOD>DenyAll</Limit> : 업로드한 파일에 대한 퍼미션 조정 가능여부 설정(DenyAll / AllowAll로 설정)

  • 익명 FTP 서비스를 위한 설정
    • <Anonymous ~anonyuser[각주:9]></Anonymous> : 시작, 종료 지시자
    • User, Group : 익명 FTP 서비스를 할 때 할당받는 사용자와 그룹명
    • UserAlias [접속자들의 사용자명] [매핑시킬 사용자 계정명] : UserAlias anonymous anonyuser
    • MaxClients : 최대 동시접속 클라이언트 수
    • DisplayLogin : 접속자에게 전달할 메시지 파일명(예 : welcome.msg)
    • DisplayFirstChdir : .message라고 입력시 /var/anonyuser 하위의 디렉토리마다 .message파일을 만들고 사용자가 디렉토리 접속시 해당 메시지를 출력
      • %T : 현재시간
      • %F : 사용가능한 디스크 용량
      • %C : 현재 디렉토리
      • %R : 원격 호스트네임
      • %L : 로컬 호스트네임
      • %u : ident 프로토콜에 의해 작성된 사용자명
      • %U : 로그인 사용자명
      • %M : 최대 접속자수
      • %N : 현재 접속자수
      • %E : 서버 관리자 이메일
      • %i : 현재 세션에서 업로드된 파일 수
      • %o : 현재 세션에서 다운로드된 파일 수
      • %t : 현재 세션에서 업로드, 다운로드된 파일 수
      • %x : 사용자 클래스명
      • %y : 사용자 클래스로부터 최대 접속자 수
      • %z : 사용자 클래스로부터 최대 사용자 수
    • <Limit WRITE>DenyALL</Limit> : 익명 접속자들의 쓰기 권한 설정(DenyAll / AllowAll로 설정)
    • MaxClientsPerHost [최대 접속자 수] "[메시지]" : 호스트당 최대 허용 가능한 접속자 수 초과시 해당 메시지 출력
    • MaxClientsPerUser [최대 접속자 수] "[메시지]" : 사용자당 최대 허용 가능한 접속자 수 초과시 해당 메시지 출력
    • TimeoutIdle : idle 상태로 접속을 유지할 수 있는 시간
    • TimeoutNoTransfer : 파일 전송이 없는 상태로 접속을 유지할 수 있는 시간
    • TimeoutLogin : 로그인 인증을 유지할 수 있는 시간
    • UpTime 10 service : proftpd 서비스 시작 시간, 오전 10시부터 시작한다는 옵션
    • DownTime 23 service : proftpd 서비스 종료 시간, 오후 11시에 종료한다는 옵션
    • ShowSymlinks : 심볼릭 링크 파일을 보여줄 것인지 설정(on / off로 설정[각주:10])
    • PassivePorts [MinPort] [MaxPort] : 패시브모드 포트 설정
    • <Limit [명령어|명령어그룹]...> : 여러 명령어를 이용해 명령어 사용권한 제어
      • CWD : 디렉토리 변경
      • DELE : 파일 삭제
      • MKD : 디렉토리 생성
      • RNFR : 디렉토리 이름 변경
      • RMD : 디렉토리 삭제
      • RETR : 서버에서 클라이언트로 파일 전송
      • STOR : 클라이언트에서 서버로 파일 전송
      • ALL : 모든 FTP 명령에 대한 제한 적용
      • DIRS : 디렉토리 목록과 관련된 FTP 명령 포함
      • READ : 파일 읽기와 관련된 FTP 명령 포함, 디렉토리 목록은 포함 안됨
      • WRITE : 디렉토리, 파일 쓰기, 생성, 삭제와 관련된 FTP 명령 포함
      • LOGIN : 로그인 초기화 허용 또는 제한에 사용
    • AnonRequirePassword : 익명 접속시 사용자 접속을 매칭시키는 FTP 계정[각주:11]의 패스워드가 필요(on / off로 설정)
    • RootLogin : root 계정으로 FTP 접속을 하지 못하도록 설정[각주:12](on / off로 설정)
    • AuthPAM : FTP 접속자를 제한하는 인증 방법으로 PAM 모듈 사용여부 설정[각주:13](on / off로 설정)
    • AuthPAMConfig proftpd : PAM 인증시 /etc/pam.d 디렉토리 아래에 저장할 파일 이름 지정[각주:14], /etc/ftpusers 파일에 접속을 제한할 사용자 아이디 입력
    • MaxStoreFileSize 3 Mb user missflash : missflash 사용자에 한해 파일 하나당 업로드 최대 용량을 3MB로 제한
    • MaxRetrieveFileSize 3 Mb user missflash : missflash 사용자에 한해 파일 하나당 다운로드 최대 용량을 3MB로 제한
    • TransferRate RETR,STOR 1024000 : 업로드 및 다운로드 전송률(byte/sec) 설정[각주:15]
    • ServerAdmin : 서버 관리자의 이메일 주소 입력
    • DeferWelcome : 접속을 정상적으로 마친 후 서버이름 및 IP주소를 보여주도록 설정(on / off로 설정)
    • UseReverseDNS : 접속자의 IP주소를 이용해 DNS Lookup을 실행할 것인지 설정(on / off로 설정)[각주:16]
    • IdentLookups : ident 프로토콜을 이용해 접속자를 확인(on / off로 설정)[각주:17]
    • HideUser, HideGroup : 특정 사용자와 그룹 소유의 파일들이 보이지 않도록 설정
    • 제한 지시자 사용예

  • 패스워드와 그룹 파일 편집 : vipw
    • 출력 예 : anonyuser:x:510:510:FTP User:/var/anonyuser:/sbin/nologin[각주:22]
  • proftpd 로그파일 관리 : cp proftpd.logrotate /etc/logrotate.d/proftpd[각주:23]

  • 가상 FTP 서버 운영
    1. mkdir /var/vftp/incoming  : 가상 디렉토리 생성
    2. chown anonyuser.anonyuser -R /var/vftp/ : 소유자, 소유그룹 변경
    3. -A RH-Firewall-1-1INPUT -m state --state NEW -m tcp -p tcp --dport 2121 -J ACCEPT : 2121포트 추가(/etc/sysconfig/iptables 파일 수정)
    4. 설정 예
      • <VirtualHost 192.168.1.100>
            ... 기본 설정 ...[각주:24]
            <Anonymous /var/vftp>
                <Directory incoming>
                    <Limit WRITE>
                    AllowAll
                    </Limit>
                </Directory>
            </Anonymous>
        </VirtualHost>

+ Recent posts