리눅스마스터1급 : proftpd 서버 설치와 설정하기
작성자 정보
- 관리자 작성
- 작성일
컨텐츠 정보
- 2,198 조회
- 0 추천
- 목록
본문
리눅스마스터1급 : proftpd 서버 설치와 설정하기
1) proftpd 서버 설치
① 압축된 파일 풀기
proftpd 서버를 구할 수 있는 곳은 proftpd 웹 사이트(http://www.proftpd.org)에서 최신 버전의 proftpd 서버를 다운로드할 수 있다.
먼저 다운로드한 파일을 /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 6월 16 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/proftpd에 README와 INSTALL 파일이 존재하므로 참고하기 바란다.
README와 INSTALL을 강조하는 이유는 대부분의 배포되는 설치 파일들은 이 두 개의 파일을 포함하고 있으므로 잘 읽어보고 따라하면 되기 때문이다.
② 컴파일 하기 전에 configure 실행하기
압축을 잘 풀었다면 /usr/local/src/proftpd에 configure 파일이 있을 것이다.
이 파일을 실행하면 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 \"금 6월 16 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 6월 16 16:11 bin drwxr-xr-x 2 root root 26 6월 16 16:11 etc drwxr-xr-x 3 root root 21 6월 16 16:11 include drwxr-xr-x 4 root root 38 6월 16 16:11 lib drwxr-xr-x 2 root root 6 6월 16 16:11 libexec drwxr-xr-x 2 root root 70 6월 16 16:11 sbin drwxr-xr-x 4 root root 31 6월 16 16:11 share drwxr-xr-x 2 root root 6 6월 16 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를 실행할 때 nobody와 nogroup으로 실행을 시키는데 nogroup이라는 그룹명이 존재하지 않아서 발행하는 것이므로 간단하게 “groupadd nogroup” 으로 생성해주고 다시 실행하면 된다.
관련자료
-
이전
-
다음