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

vsftpd를 소스를 직접 가져와서 컴파일하여 설치하기

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

vsftpd를 소스를 직접 가져와서 컴파일하여 설치하기

 

 

 

 

 

 

vsftpd의 설치부터 차근차근 그 기능과 활용에 대해서 살펴보도록 하겠다.

 

 

 

vsftpd   “Very Secure FTP Daemon”의 약어이다.

 

 

 

이 용어에서 알 수 있듯이 vsftpd는 보안에 매우 띄어난 성능을 보인다.

 

 

 

물론 서버보안을 위한 다양한 설정들도 지원하고 있다.

 

 

 

vsftpd의 공식 배포사이트는http://vsftpd.beasts.org”이다.

 

 

 

아래 그림은 이 사이트에 접속한 화면을 나타낸 것이다.

 

 

 

이 화면 왼쪽에 보면 “Download vsftpd”라는 메뉴가 있고 클릭하면 다운로드 페이지로 이동하여 소스를 가져올 수 있다.

 

 

 

 

 

cd471b6fe346b54d900a673675834b40_1688020502_5722.png
 



cd471b6fe346b54d900a673675834b40_1688020509_0974.png
 




 

 

 

 

 

 

다음은 설치하고자 하는 서버에서 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에 복사되었다.

 

 


관련자료

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

공지사항


뉴스광장


  • 현재 회원수 :  60,035 명
  • 현재 강좌수 :  35,798 개
  • 현재 접속자 :  116 명