강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

리눅스마스터1급 : proftpd 서버 설치와 설정하기

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

리눅스마스터1: proftpd 서버 설치와 설정하기

 

 

1) proftpd 서버 설치

 

 

압축된 파일 풀기

 

 

proftpd 서버를 구할 수 있는 곳은 proftpd 웹 사이트(http://www.proftpd.org)에서 최신 버전의 proftpd 서버를 다운로드할 수 있다.

 

7ce9390993b6024bf1a77eac34869b85_1686900194_1105.png
 

 

 

 

먼저 다운로드한 파일을 /usr/local/src 밑으로 복사하고 tar을 이용하여 압축을 풀어준다.

 

 

 

[root@RockyLinux01 src]# pwd

/usr/local/src

[root@RockyLinux01 src]#

[root@RockyLinux01 src]# wget ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.8.tar.gz

--2023-06-16 16:06:51-- ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.8.tar.gz

=> `proftpd-1.3.8.tar.gz'

Resolving ftp.proftpd.org (ftp.proftpd.org)... 86.59.114.198, 2001:858:2:5::5

Connecting to ftp.proftpd.org (ftp.proftpd.org)|86.59.114.198|:21... connected.

Logging in as anonymous ... Logged in!

==> SYST ... done. ==> PWD ... done.

==> TYPE I ... done. ==> CWD (1) /distrib/source ... done.

==> SIZE proftpd-1.3.8.tar.gz ... 19744412

==> PASV ... done. ==> RETR proftpd-1.3.8.tar.gz ... done.

Length: 19744412 (19M) (unauthoritative)

 

proftpd-1.3.8.tar.gz 100%[=================================================>] 18.83M 4.45MB/s in 4.5s

 

2023-06-16 16:06:58 (4.21 MB/s) - `proftpd-1.3.8.tar.gz' saved [19744412]

 

[root@RockyLinux01 src]#

[root@RockyLinux01 src]#

[root@RockyLinux01 src]# ls -l proftpd-1.3.8.tar.gz

-rw-r--r-- 1 root root 19744412 616 16:06 proftpd-1.3.8.tar.gz

[root@RockyLinux01 src]#

 

 

압축을 풀면 proftpd-1.3.xxx라는 디렉토리가 생성된다.

 

[root@RockyLinux01 src]# tar xvfpz proftpd-1.3.8.tar.gz

proftpd-1.3.8/

proftpd-1.3.8/.autom4te.cfg

proftpd-1.3.8/.cirrus.yml

proftpd-1.3.8/.clang-tidy

proftpd-1.3.8/.codacy.yml

proftpd-1.3.8/.gitattributes

proftpd-1.3.8/.github/

proftpd-1.3.8/.github/CODE_OF_CONDUCT.md

proftpd-1.3.8/.github/CONTRIBUTING.md

proftpd-1.3.8/.github/ISSUE_TEMPLATE.md

proftpd-1.3.8/.github/workflows/

proftpd-1.3.8/.github/workflows/ci.yml

proftpd-1.3.8/.github/workflows/rpm.yml

proftpd-1.3.8/.gitignore

proftpd-1.3.8/.lgtm.yml

proftpd-1.3.8/.remarkrc.yml

proftpd-1.3.8/COPYING

proftpd-1.3.8/CREDITS

proftpd-1.3.8/ChangeLog

proftpd-1.3.8/INSTALL

proftpd-1.3.8/Make.rules.in

proftpd-1.3.8/Makefile.in

proftpd-1.3.8/NEWS

proftpd-1.3.8/README.AIX

proftpd-1.3.8/README.FreeBSD

proftpd-1.3.8/README.LDAP

proftpd-1.3.8/README.Solaris2.5x

proftpd-1.3.8/README.Unixware

proftpd-1.3.8/README.cygwin

proftpd-1.3.8/README.md

proftpd-1.3.8/README.modules

proftpd-1.3.8/README.ports

proftpd-1.3.8/RELEASE_NOTES

proftpd-1.3.8/acconfig.h

proftpd-1.3.8/aclocal.m4

proftpd-1.3.8/config.guess

proftpd-1.3.8/config.h.in

proftpd-1.3.8/config.sub

proftpd-1.3.8/configure

proftpd-1.3.8/configure.in

proftpd-1.3.8/contrib/

proftpd-1.3.8/contrib/INSTALL.mod_wrap

proftpd-1.3.8/contrib/Makefile.in

proftpd-1.3.8/contrib/README

proftpd-1.3.8/contrib/README.ratio

proftpd-1.3.8/contrib/dist/

proftpd-1.3.8/contrib/dist/coverity/

이하생략...

 

 

이 디렉토리를 proftpd라는 이름으로 바꾸어 준다.

 

[root@RockyLinux01 src]# mv proftpd-1.3.8 proftpd

 

 

 

압축을 풀었다면 /usr/local/src/proftpdREADMEINSTALL 파일이 존재하므로 참고하기 바란다.

 

 

 

READMEINSTALL을 강조하는 이유는 대부분의 배포되는 설치 파일들은 이 두 개의 파일을 포함하고 있으므로 잘 읽어보고 따라하면 되기 때문이다.

 

 

 

 

 

컴파일 하기 전에 configure 실행하기

 

 

압축을 잘 풀었다면 /usr/local/src/proftpdconfigure 파일이 있을 것이다.

 

 

 

이 파일을 실행하면 Makefile이 생성된다.

 

 

 

configure 실행은 설치할 디렉토리를 지정하도록 다음과 같이 실행하면 된다.

 

 

[root@RockyLinux01 proftpd]# ./configure --prefix=/usr/local/proftpd

checking build system type... x86_64-pc-linux-gnu

checking host system type... x86_64-pc-linux-gnu

checking target system type... x86_64-pc-linux-gnu

checking for gcc... gcc

checking whether the C compiler works... yes

checking for C compiler default output file name... a.out

checking for suffix of executables...

checking whether we are cross compiling... no

checking for suffix of object files... o

checking whether we are using the GNU C compiler... yes

checking whether gcc accepts -g... yes

checking for gcc option to accept ISO C89... none needed

checking for a sed that does not truncate output... /usr/bin/sed

checking for grep that handles long lines and -e... /usr/bin/grep

checking for egrep... /usr/bin/grep -E

checking for fgrep... /usr/bin/grep -F

이하생략....

 

 

위와 같은 명령을 주면 make install시에 /usr/local/proftpd 디렉토리에 설치하게 된다.

 

 

 

 

 

proftpd 서버 컴파일

 

 

위에서 configure 파일을 실행해서 Makefile을 만들었을 것이다.

 

 

 

그럼 컴파일을 해보자.

 

 

[root@RockyLinux01 proftpd]# make

echo \#define BUILD_STAMP \"616 2023 16:10:53 KST\" > include/buildstamp.h

cd lib/ && make lib

make[1]: 디렉터리 '/usr/local/src/proftpd/lib' 들어감

/bin/sh ../libtool --mode=compile --tag=CC gcc -DHAVE_CONFIG_H -DLINUX -I.. -I../include -I../include -g2 -O2 -Wall -fno-omit-frame-pointer -fno-strict-aliasing -static -c pr_fnmatch.c

libtool: compile: gcc -DHAVE_CONFIG_H -DLINUX -I.. -I../include -I../include -g2 -O2 -Wall -fno-omit-frame-pointer -fno-strict-aliasing -c pr_fnmatch.c -o pr_fnmatch.o

In file included from pr_fnmatch.c:260:

pr_fnmatch_loop.c: In function ‘internal_fnmatch’:

pr_fnmatch_loop.c:75:7: warning: variable ‘is_seqval’ set but not used [-Wunused-but-set-variable]

75 | int is_seqval = 0;

| ^~~~~~~~~

/bin/sh ../libtool --mode=compile --tag=CC gcc -DHAVE_CONFIG_H -DLINUX -I.. -I../include -I../include -g2 -O2 -Wall -fno-omit-frame-pointer -fno-strict-aliasing -static -c sstrncpy.c

libtool: compile: gcc -DHAVE_CONFIG_H -DLINUX -I.. -I../include -I../include -g2 -O2 -Wall -fno-omit-frame-pointer -fno-strict-aliasing -c sstrncpy.c -o sstrncpy.o

이하생략...

 

 

 

proftpd 서버 설치 및 실행

 

 

위 과정을 에러 없이 마쳤다면 설치 과정으로 들어가도록 하겠다.

 

 

 

현재 위치(/usr/local/src/proftpd)에서 다음과 같은 명령을 실행하도록 한다.

 

 

 

 

 

[root@RockyLinux01 proftpd]# make install

/usr/bin/install -c -o root -g root -m 0755 ./proftpd /usr/local/proftpd/sbin/proftpd

if [ -f /usr/local/proftpd/sbin/in.proftpd ] ; then \

rm -f /usr/local/proftpd/sbin/in.proftpd ; \

fi

ln -s ./proftpd /usr/local/proftpd/sbin/in.proftpd

chown -h root:root /usr/local/proftpd/sbin/in.proftpd

test -z """" -a -z """" -a -z """" || (cd modules/ && make install)

cd contrib/ && make install-utils

make[1]: 디렉터리 '/usr/local/src/proftpd/contrib' 들어감

/usr/bin/install -c -o root -g root -m 0755 ./ftpasswd /usr/local/proftpd/bin/ftpasswd

/usr/bin/install -c -o root -g root -m 0755 ./ftpmail /usr/local/proftpd/bin/ftpmail

이하생략...

 

 

 

 

이렇게 하면 /usr/local/proftpd 폴더에 proftpd가 설치되고 모든 설치 과정이 끝나게 된다.

 

 

 

 

 

데몬 실행하는 방법은 /usr/local/proftpd 디렉토리로 이동하여 sbin 디렉토리의 proftpd를 실행하면 된다.

 

 

 

데몬 실행을 하고 난 후 에러가 없다면 ps 명령으로 proftpd 데몬의 상태를 알아볼 수 있다.

 

[root@RockyLinux01 proftpd]# cd /usr/local/proftpd/

[root@RockyLinux01 proftpd]#

[root@RockyLinux01 proftpd]# ls -l

합계 0

drwxr-xr-x 2 root root 124 616 16:11 bin

drwxr-xr-x 2 root root 26 616 16:11 etc

drwxr-xr-x 3 root root 21 616 16:11 include

drwxr-xr-x 4 root root 38 616 16:11 lib

drwxr-xr-x 2 root root 6 616 16:11 libexec

drwxr-xr-x 2 root root 70 616 16:11 sbin

drwxr-xr-x 4 root root 31 616 16:11 share

drwxr-xr-x 2 root root 6 616 16:11 var

[root@RockyLinux01 proftpd]#

[root@RockyLinux01 proftpd]# cd sbin

[root@RockyLinux01 sbin]#

[root@RockyLinux01 sbin]# pwd

/usr/local/proftpd/sbin

[root@RockyLinux01 sbin]#

[root@RockyLinux01 sbin]# ./proftpd

[root@RockyLinux01 sbin]#

[root@RockyLinux01 sbin]# ps -ef | grep ftpd

nobody 22372 1 0 16:15 ? 00:00:00 proftpd: (accepting connections)

root 22374 1778 0 16:15 pts/0 00:00:00 grep --color=auto ftpd

[root@RockyLinux01 sbin]#

[root@RockyLinux01 sbin]#

[root@RockyLinux01 sbin]# netstat -anp | grep proftpd

tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 22372/proftpd: (acc

unix 2 [ ] DGRAM CONNECTED 291087 22372/proftpd: (acc

[root@RockyLinux01 sbin]#

 

 

간혹 proftpd를 설치하고 처음 실행시키면 다음과 같은 에러로 실행이 안될때도 있다.

 

 

[root@RockyLinux01 sbin]# ./proftpd

2023-06-16 16:13:40,049 RockyLinux01 proftpd[22346]: fatal: Group: Unknown group 'nogroup' on line 30 of '/usr/local/proftpd/etc/proftpd.conf'

[root@RockyLinux01 sbin]#

 

이 원인은 proftpd를 실행할 때 nobodynogroup으로 실행을 시키는데 nogroup이라는 그룹명이 존재하지 않아서 발행하는 것이므로 간단하게 “groupadd nogroup” 으로 생성해주고 다시 실행하면 된다.

 

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,045 명
  • 현재 강좌수 :  35,858 개
  • 현재 접속자 :  80 명