vsftpd를 소스를 직접 가져와서 컴파일하여 설치하기
작성자 정보
- 관리자 작성
- 작성일
컨텐츠 정보
- 2,886 조회
- 0 추천
- 목록
본문
vsftpd를 소스를 직접 가져와서 컴파일하여 설치하기
vsftpd의 설치부터 차근차근 그 기능과 활용에 대해서 살펴보도록 하겠다.
vsftpd는 “Very Secure FTP Daemon”의 약어이다.
이 용어에서 알 수 있듯이 vsftpd는 보안에 매우 띄어난 성능을 보인다.
물론 서버보안을 위한 다양한 설정들도 지원하고 있다.
vsftpd의 공식 배포사이트는 “http://vsftpd.beasts.org”이다.
아래 그림은 이 사이트에 접속한 화면을 나타낸 것이다.
이 화면 왼쪽에 보면 “Download vsftpd”라는 메뉴가 있고 클릭하면 다운로드 페이지로 이동하여 소스를 가져올 수 있다.
다음은 설치하고자 하는 서버에서 wget을 이용하여 vsftpd소스를 직접 가져온 예를 나타내고 있다.
가능한 vsftpd소스를 가져올 때에는 /usr/local에 위치하도록 하고 설치작업 또한 /usr/local/에서 하도록하자. 즉 설치하고자하는 위치에서 다운로드를 하면 작업하기가 편리하다.
[root@RockyLinux local]# wget https://security.appspot.com/downloads/vsftpd-3.0.5.tar.gz --2023-06-29 14:46:53-- https://security.appspot.com/downloads/vsftpd-3.0.5.tar.gz Resolving security.appspot.com (security.appspot.com)... 34.64.4.116, 2404:f340:10:1800::2014 Connecting to security.appspot.com (security.appspot.com)|34.64.4.116|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 197778 (193K) [application/x-tar] Saving to: `vsftpd-3.0.5.tar.gz'
vsftpd-3.0.5.tar.gz 100%[=================================================>] 193.14K
2023-06-29 14:46:53 (6.22 MB/s) - `vsftpd-3.0.5.tar.gz' saved [197778/197778]
[root@RockyLinux local]# [root@RockyLinux local]# [root@RockyLinux local]# ls -l vsftpd-3.0.5.tar.gz -rw-r--r-- 1 root root 197778 6월 29 14:46 vsftpd-3.0.5.tar.gz [root@RockyLinux local]# |
현재 아래의 예에서 /usr/local위치에서 방금 다운받은 vsftpd압축 소스파일을 압축해제 하고있다.
아래 예를 보다시피 tar로 압축해제하면 “vsftpd-버전”으로된 디렉토리가 생성되고 그 디렉토리내에 압축해제된 파일들이 모두 복사되어 들어간다.
[root@RockyLinux local]# tar xvfz vsftpd-3.0.5.tar.gz vsftpd-3.0.5/ vsftpd-3.0.5/privops.h vsftpd-3.0.5/ftppolicy.h vsftpd-3.0.5/standalone.h vsftpd-3.0.5/RedHat/ vsftpd-3.0.5/RedHat/vsftpd.log vsftpd-3.0.5/RedHat/vsftpd.pam vsftpd-3.0.5/RedHat/README.spec vsftpd-3.0.5/AUDIT vsftpd-3.0.5/REFS vsftpd-3.0.5/BENCHMARKS vsftpd-3.0.5/TUNING vsftpd-3.0.5/twoprocess.c vsftpd-3.0.5/xinetd.d/ vsftpd-3.0.5/xinetd.d/vsftpd vsftpd-3.0.5/access.c vsftpd-3.0.5/ls.c vsftpd-3.0.5/prelogin.h vsftpd-3.0.5/SECURITY/ vsftpd-3.0.5/SECURITY/IMPLEMENTATION vsftpd-3.0.5/SECURITY/OVERVIEW … 이하생략 |
그리고 다음은 방금 압축해제되면서 생성된 “vsftpd-버전”디렉토리로 이동한 후 make를 실행하여 컴파일하였다.
아래 컴파일과정은 생략하지 않고 모두 나타내었다.
가끔 컴파일과정에서 에러가 발생하였지만 정상종료되는 경우가 있기 때문에 컴파일의 중간과정을 유심히 살펴봐야 한다.
이 컴파일과정에서 vsftpd에 필요한 모든 실행파일들(바이너리파일)이 생성된다.
[root@RockyLinux local]# cd vsftpd-3.0.5/ [root@RockyLinux vsftpd-3.0.5]#
[root@RockyLinux vsftpd-3.0.5]# make gcc -c main.c -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wall -W -Wshadow -Werror -WFY_SOURCE=2 -idirafter dummyinc gcc -c utility.c -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wall -W -Wshadow -WerrorRTIFY_SOURCE=2 -idirafter dummyinc gcc -c prelogin.c -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wall -W -Wshadow -WerroORTIFY_SOURCE=2 -idirafter dummyinc gcc -c ftpcmdio.c -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wall -W -Wshadow -WerroORTIFY_SOURCE=2 -idirafter dummyinc gcc -c postlogin.c -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wall -W -Wshadow -WerrFORTIFY_SOURCE=2 -idirafter dummyinc gcc -c privsock.c -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wall -W -Wshadow -WerroORTIFY_SOURCE=2 -idirafter dummyinc gcc -c tunables.c -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wall -W -Wshadow -WerroORTIFY_SOURCE=2 -idirafter dummyinc gcc -c ftpdataio.c -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wall -W -Wshadow -WerrFORTIFY_SOURCE=2 -idirafter dummyinc gcc -c secbuf.c -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wall -W -Wshadow -Werror TIFY_SOURCE=2 -idirafter dummyinc gcc -c ls.c -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wall -W -Wshadow -Werror -Wfo_SOURCE=2 -idirafter dummyinc gcc -c postprivparent.c -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wall -W -Wshadow y -D_FORTIFY_SOURCE=2 -idirafter dummyinc gcc -c logging.c -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wall -W -Wshadow -WerrorRTIFY_SOURCE=2 -idirafter dummyinc gcc -c str.c -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wall -W -Wshadow -Werror -WfY_SOURCE=2 -idirafter dummyinc gcc -c netstr.c -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wall -W -Wshadow -Werror TIFY_SOURCE=2 -idirafter dummyinc gcc -c sysstr.c -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wall -W -Wshadow -Werror TIFY_SOURCE=2 -idirafter dummyinc gcc -c strlist.c -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wall -W -Wshadow -WerrorRTIFY_SOURCE=2 -idirafter dummyinc gcc -c banner.c -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wall -W -Wshadow -Werror TIFY_SOURCE=2 -idirafter dummyinc gcc -c filestr.c -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wall -W -Wshadow -WerrorRTIFY_SOURCE=2 -idirafter dummyinc gcc -c parseconf.c -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wall -W -Wshadow -WerrFORTIFY_SOURCE=2 -idirafter dummyinc gcc -c secutil.c -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wall -W -Wshadow -WerrorRTIFY_SOURCE=2 -idirafter dummyinc gcc -c ascii.c -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wall -W -Wshadow -Werror -IFY_SOURCE=2 -idirafter dummyinc gcc -c oneprocess.c -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wall -W -Wshadow -Wer_FORTIFY_SOURCE=2 -idirafter dummyinc gcc -c twoprocess.c -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wall -W -Wshadow -Wer_FORTIFY_SOURCE=2 -idirafter dummyinc gcc -c privops.c -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wall -W -Wshadow -WerrorRTIFY_SOURCE=2 -idirafter dummyinc gcc -c standalone.c -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wall -W -Wshadow -Wer_FORTIFY_SOURCE=2 -idirafter dummyinc gcc -c hash.c -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wall -W -Wshadow -Werror -WFY_SOURCE=2 -idirafter dummyinc gcc -c tcpwrap.c -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wall -W -Wshadow -WerrorRTIFY_SOURCE=2 -idirafter dummyinc gcc -c ipaddrparse.c -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wall -W -Wshadow -WeD_FORTIFY_SOURCE=2 -idirafter dummyinc gcc -c access.c -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wall -W -Wshadow -Werror TIFY_SOURCE=2 -idirafter dummyinc gcc -c features.c -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wall -W -Wshadow -WerroORTIFY_SOURCE=2 -idirafter dummyinc gcc -c readwrite.c -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wall -W -Wshadow -WerrFORTIFY_SOURCE=2 -idirafter dummyinc gcc -c opts.c -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wall -W -Wshadow -Werror -WFY_SOURCE=2 -idirafter dummyinc gcc -c ssl.c -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wall -W -Wshadow -Werror -WfY_SOURCE=2 -idirafter dummyinc gcc -c sslslave.c -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wall -W -Wshadow -WerroORTIFY_SOURCE=2 -idirafter dummyinc gcc -c ptracesandbox.c -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wall -W -Wshadow - -D_FORTIFY_SOURCE=2 -idirafter dummyinc gcc -c ftppolicy.c -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wall -W -Wshadow -WerrFORTIFY_SOURCE=2 -idirafter dummyinc gcc -c sysutil.c -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wall -W -Wshadow -WerrorRTIFY_SOURCE=2 -idirafter dummyinc gcc -c sysdeputil.c -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wall -W -Wshadow -Wer_FORTIFY_SOURCE=2 -idirafter dummyinc gcc -c seccompsandbox.c -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wall -W -Wshadow y -D_FORTIFY_SOURCE=2 -idirafter dummyinc gcc -o vsftpd main.o utility.o prelogin.o ftpcmdio.o postlogin.o privsock.o tunables.o ftpdataiovparent.o logging.o str.o netstr.o sysstr.o strlist.o banner.o filestr.o parseconf.o secutil.o arocess.o privops.o standalone.o hash.o tcpwrap.o ipaddrparse.o access.o features.o readwrite.o otracesandbox.o ftppolicy.o sysutil.o sysdeputil.o seccompsandbox.o -Wl,-s -fPIE -pie -Wl,-z,relrlibs.sh` [root@RockyLinux vsftpd-3.0.5]# [root@RockyLinux vsftpd-3.0.5]# [root@RockyLinux vsftpd-3.0.5]# make install if [ -x /usr/local/sbin ]; then \ install -m 755 vsftpd /usr/local/sbin/vsftpd; \ else \ install -m 755 vsftpd /usr/sbin/vsftpd; fi if [ -x /usr/local/man ]; then \ install -m 644 vsftpd.8 /usr/local/man/man8/vsftpd.8; \ install -m 644 vsftpd.conf.5 /usr/local/man/man5/vsftpd.conf.5; \ elif [ -x /usr/share/man ]; then \ install -m 644 vsftpd.8 /usr/share/man/man8/vsftpd.8; \ install -m 644 vsftpd.conf.5 /usr/share/man/man5/vsftpd.conf.5; \ else \ install -m 644 vsftpd.8 /usr/man/man8/vsftpd.8; \ install -m 644 vsftpd.conf.5 /usr/man/man5/vsftpd.conf.5; fi install: cannot create regular file '/usr/local/man/man8/vsftpd.8': 그런 파일이나 디렉터리가 없습 if [ -x /etc/xinetd.d ]; then \ install -m 644 xinetd.d/vsftpd /etc/xinetd.d/vsftpd; fi [root@RockyLinux vsftpd-3.0.5]# |
이렇게 생성된 실행파일을 원하는 위치에 설치(복사)하기 위하여 “make install”을 실행하였다.
그 결과 install이 실행되면서 필요한 파일들이 모두 지정된 위치로 복사되었다.
[root@RockyLinux vsftpd-3.0.5]# make install if [ -x /usr/local/sbin ]; then \ install -m 755 vsftpd /usr/local/sbin/vsftpd; \ else \ install -m 755 vsftpd /usr/sbin/vsftpd; fi if [ -x /usr/local/man ]; then \ install -m 644 vsftpd.8 /usr/local/man/man8/vsftpd.8; \ install -m 644 vsftpd.conf.5 /usr/local/man/man5/vsftpd.conf.5; \ elif [ -x /usr/share/man ]; then \ install -m 644 vsftpd.8 /usr/share/man/man8/vsftpd.8; \ install -m 644 vsftpd.conf.5 /usr/share/man/man5/vsftpd.conf.5; \ else \ install -m 644 vsftpd.8 /usr/man/man8/vsftpd.8; \ install -m 644 vsftpd.conf.5 /usr/man/man5/vsftpd.conf.5; fi if [ -x /etc/xinetd.d ]; then \ install -m 644 xinetd.d/vsftpd /etc/xinetd.d/vsftpd; fi [root@RockyLinux vsftpd-3.0.5]# |
위의 make install의 결과를 확인해보도록 하자. 즉 make install에 의해 생성된 파일들을 각각 확인해보면 된다.
위의 작업결과에서 확인할 수 있듯이 vsftpd라는 데몬파일과 vsftpd라는 설정파일이 각각 복사되었다.
복사된 파일을 확인해 보자.
그리고 vsftpd.conf 파일을 /etc/ 디렉토리로 직접 복사해야 한다.
[root@RockyLinux vsftpd-3.0.5]# ls -l /usr/local/sbin/vsftpd -rwxr-xr-x 1 root root 156968 6월 29 14:53 /usr/local/sbin/vsftpd [root@RockyLinux vsftpd-3.0.5]# [root@RockyLinux vsftpd-3.0.5]# [root@RockyLinux vsftpd-3.0.5]# ls -l /etc/vsftpd.conf -rw-r--r-- 1 root root 4593 6월 29 15:05 /etc/vsftpd.conf [root@RockyLinux vsftpd-3.0.5]# |
대충봐도 알 수 있듯이 vsftpd데몬파일은 /usr/local/sbin/vsftpd에 복사되었다.
관련자료
-
이전
-
다음