>  기사  >  운영 및 유지보수  >  Linux에서 FTP 서버를 구성하는 방법

Linux에서 FTP 서버를 구성하는 방법

PHP中文网
PHP中文网원래의
2017-06-20 13:06:501400검색

1. 먼저 rpm -qa| grep vsftpd 명령을 사용하여 ftp가 설치되어 있는지 확인하세요. ftp가 설치되어 있지 않으면 yum -y install vsftpd를 사용하여 설치하세요(우분투에서는 apt-get install vsftpd 사용).

service vsftpd start / service vsftpd restart

Start 부팅할 때마다 FTP가 자동으로 시작되도록 하려면 다음 명령을 실행하세요: chkconfig --level 35 vsftpd on

vi /etc/vsftpd/vsftpd .conf

Anonymous_enable=YES 반환 anonymous_enable=NO

ESC, 저장하고 시작하려면 ":wq"를 입력하세요


방화벽을 새로 고칩니다

#iptables -F

vsftpd의 주요 구성 파일은 다음과 같습니다.

/etc/vsftpd/vsftpd.conf

실험 1:

FTP에서 익명으로 로그인하는 것을 허용하지 않으면 vsftpd의 기본 구성 파일을 수정하여 이를 달성할 수 있습니다

#vi /etc/vsftpd/ vsftpd.conf anonymous_enable=YES를 anonymous_enable=NO

로 변경합니다.

실험 2:

Windows의 FTP 서버는 환영 메시지와 최대 연결 수를 설정할 수 있습니다. 그렇다면 Linux FTP 서버에서는 무엇을 설정해야 할까요? 제가 대답하고 싶은 것은: vsftpd의 기본 구성 파일을 사용하여 구현할 수도 있습니다. # vi /etc/vsftpd/vsftpd.conf

여기에 ftpd_banner=welcome을 추가하세요. 이것이 환영 메시지입니다! Max_clients=100 이는 최대 100명의 사용자가 동시에 액세스할 수 있으며 vsftpd를 다시 시작하면 된다는 의미입니다!

실험 3:

나에게 돈을 빌려주고 갚기를 거부한 동료(lilei)가 FTP 사이트에 로그인하는 것을 방지하려면 사용자 lilei를 vi /etc/vsftpd.ftpusers에 추가할 수 있습니다.

실험 4:

아침에 본부장님이 회사 소수 인원을 승진시키겠다고 하셔서 이 소식을 듣고 성급히 본부장님이 FTP 서버에 로그인하도록 허락해 주셨어요. 다른 사람들은 그것에 대해 생각조차 할 수 없습니다. 그들은 관리자의 말을 때리고 다른 사람들을 제한합니다. 이렇게 할 수 있습니다: # vi /etc/vsftpd/vsftpd.conf

끝에 2개의 항목을 추가합니다.

userlist_deny=NO / 이 목록에 있는 사람들은 거부하지 않으며 다른 사람들은 거부합니다(익명 포함)

userlist_file=/etc /mp /목록

vsftpd 구성 파일의 경로를 나타냅니다. "#"으로 시작하는 줄과 빈 줄은 구문 분석 중에 무시됩니다. 각 구성 명령에서 "=" 양쪽에 공백을 두지 마십시오. 각 구성 명령에 대해 관련 구성 지침도 구성 ​​파일에 나열되어 있으며 vi 편집기를 사용하여 구성 파일을 편집하고 수정할 수 있습니다. 방법은 다음과 같습니다.

    #vi /etc/vsftpd/vsftpd.conf


1. 익명 사용자를 위한 로그인 및 설정


write_enable=YES //로그인한 사용자에게 쓰기 권한을 활성화할지 여부입니다. 전역 설정입니다. 기본값 NO
local_enable=YES //로컬 사용자가 FTP 서버에 로그인할 수 있는지 여부입니다. 기본값은 NO
anonymous_enable=YES //익명 사용자가 FTP 서버에 로그인하는 것을 허용할지 여부를 설정합니다. 기본값은 YES
ftp_username=ftp //익명 사용자의 계정 이름을 정의합니다. 기본값은 ftp입니다.
no_anon_password=YES //익명 사용자가 로그인할 때 비밀번호를 묻는지 여부입니다. 묻지 않으려면 YES로 설정하세요. 기본값
NO
anon_world_readable_only=YES //익명 사용자가 읽을 수 있는 문서를 다운로드하도록 허용할지 여부, 기본값은 YES입니다.
anon_upload_enable=YES //익명 사용자의 파일 업로드 허용 여부. 이 구성 항목은 write_enable이
YES로 설정된 경우에만 유효합니다. 그리고 익명 사용자는 해당 디렉터리에 대한 쓰기 권한이 있어야 합니다. 기본값은 아니오입니다.
anon_mkdir_write_enable=YES //익명 사용자의 디렉토리 생성 허용 여부. write_enable이 YES로 설정된 경우에만 유효합니다. 그리고 익명 사용자는 상위 디렉터리에 대한 쓰기 권한을 갖습니다. 기본값은 아니오입니다.
anon_other_write_enable=NO //YES로 설정하면 익명 사용자는
디렉토리 업로드 및 생성 권한과 삭제 및 이름 바꾸기 권한 이상의 권한을 가질 수 있습니다. 기본값은 NO입니다.

2.设置欢迎信息

用户登录FTP服务器成功后,服务器可向登录用户输出预设置的欢迎信息。
ftpd_banner=Welcome to my FTP server. 
//该配置项用于设置比较简短的欢迎信息。若欢迎信息较多,则可使用banner_file配置项。
banner_file=/etc/vsftpd/banner     
//设置用户登录时,将要显示输出的文件。该设置项将覆盖ftpd_banner的设置。
dirmessage_enable=YES         
//设置是否显示目录消息。若设置为YES,则当用户进入特定目录(比如/var/ftp/Linux)时,将显示该目录中的由message_file配置项指定的文件(.message)中的内容。
message_file=.message          //设置目录消息文件。可将显示信息存入该文件。该文件需要放在 相应的目录(比如/var/ftp/linux)下

 

3.设置用户登录后所在的目录 
local_root=/var/ftp             
// 设置本地用户登录后所在的目录。默认配置文件中没有设置该项,此时用户登录FTP服务器后,所在的目录为该用户的主目录,对于root用户,则为/root目录。
anon_root=/var/ftp            
//设置匿名用户登录后所在的目录。若未指定,则默认为/var/ftp目录。

 

4.控制用户是否允许切换到上级目录 
       在默认配置下,用户可以使用“cd..”命名切换到上级目录。比如,若用户登录后所在的目录为/var/ftp,则在“ftp>”命令行 下,执行“cd..”命令后,用户将切换到其上级目录/var,若继续执行该命令,则可进入Linux系统的根目录,从而可以对整个Linux的文件系统 进行操作。

若设置了write_enable=YES,则用户还可对根目录下的文件进行改写操作,会给系统带来极大的安全隐患,因此,必须防止用户切换到Linux的根目录,相关的配置项如下:
chroot_list_enable=YES                    
// 设置是否启用chroot_list_file配置项指定的用户列表文件。设置为YES则除了列在j/etc/vsftpd/chroot_list文件中的的帐号外,所有登录的用户都可以进入ftp根目录之外的目录。默认NO
chroot_list_file=/etc/vsftpd/chroot_list         
// 用于指定用户列表文件,该文件用于控制哪些用户可以切换到FTP站点根目录的上级目录。
chroot_local_user=YES                    
// 用于指定用户列表文件中的用户,是否允许切换到上级目录。默认NO
注意:要对本地用户查看效果,需先设置local_root=/var/ftp

具体情况有以下几种:
1)当chroot_list_enable=YES,chroot_local_user=YES时,在/etc/vsftpd/chroot_list文件中列出的用户,可以切换到上级目录;未在文件中列出的用户,不能切换到站点根目录的上级目录。
2)当chroot_list_enable=YES,chroot_local_user=NO时,在/etc/vsftpd/chroot_list文件中列出的用户,不能切换到站点根目录的上级目录;未在文件中列出的用户,可以切换到上级目录。
3)当chroot_list_enable=NO,chroot_local_user=YES时,所有用户均不能切换到上级目录。
4)当chroot_list_enable=NO,chroot_local_user=NO时,所有用户均可以切换到上级目录。
5)当用户不允许切换到上级目录时,登录后FTP站点的根目录“/”是该FTP账户的主目录,即文件的系统的/var/ftp目录。

 

5.设置访问控制 
(1)设置允许或不允许访问的主机(见TBP14)
tcp_wrappers=YES用来设置vsftpd服务器是否与tcp wrapper相结合,进行主机的访问控制。默认设置为YES,vsftpd服务器会检查/etc/hosts.allow和/etc /hosts.deny中的设置,以决定请求连接的主机是否允许访问该FTP服务器。这两个文件可以起到简易的防火墙功能。
比如,若要仅允许192.168.168.1~192.168.168.254的用户,可以访问连接vsftpd服务器,则可在/etc/hosts.allow文件中添加以下内容:
vsftpd:192.168.168.0/255.255.255.0 :allow
all:all:deny

(2) 액세스를 허용하거나 허용하지 않는 사용자 설정
사용자에 대한 액세스 제어는 /etc/vsftpd/user_list 및 /etc/vsftpd/ftpusers 파일에 의해 제어됩니다. 관련 구성 명령은 다음과 같습니다.
userlist_enable=YES
// /etc/vsftpd/user_list 파일이 활성화되고 유효한지 확인합니다. YES는 적용되고 NO는 적용되지 않습니다.
userlist_deny=YES​​​​​​
///etc/vsftpd/user_list 파일에 있는 사용자의 접근 허용 여부를 결정합니다. YES로 설정하면 /etc/vsftpd/user_list 파일의 사용자는 FTP 서버에 액세스할 수 없으며, NO로 설정하면 vsftpd.user_list 파일의 사용자만 FTP 서버에 액세스할 수 있습니다.

6. 접근 속도 설정
anon_max_rate=0
//익명 사용자가 사용할 수 있는 최대 전송 속도를 b/s 단위로 설정합니다. 0으로 설정하면 속도 제한이 없으며 이는 기본값입니다.
local_max_rate=0
//로컬 사용자가 사용할 수 있는 최대 전송 속도를 설정합니다. 기본값은 0이며 제한이 없습니다.

7. 사용자 구성 파일 정의
vsftpd 서버에서 다른 사용자는 사용자 구성 파일을 통해 달성되는 다른 구성을 사용할 수도 있습니다.
user_config_dir=/etc/vsftpd/userconf //사용자 구성 파일이 있는 디렉터리를 설정하는 데 사용됩니다.
이 구성 항목을 설정한 후 사용자가 FTP 서버에 로그인하면 시스템은 /etc/vsftpd/userconf 디렉터리에서 현재 사용자와 동일한 이름의 파일을 읽고 구성에 따라 현재 사용자를 업데이트합니다. 파일의 추가 구성. 예를 들어, 사용자 구성 파일을 사용하면 다양한 사용자의 액세스 속도를 제어할 수 있습니다. 각 사용자 구성 파일에서 local_max_rate 구성을 정의하여 사용자가 허용하는 액세스 속도를 결정할 수 있습니다.

8. 연결 관련 설정
listen=YES
//vsftpd 서버가 독립형 모드로 실행되는지 여부를 설정합니다. 이때, Listen을 YES로 설정해야 하며 이는 기본값이므로 변경하지 않는 것이 좋습니다. 서버 작동과 관련된 많은 구성 명령이 유효하려면 이 작동 모드가 필요합니다. NO로 설정하면 vsftpd는 독립적인 서비스로 실행되지 않고 xinetd 서비스의 관리 제어를 받으며 해당 기능이 제한됩니다.

max_clients=0
//vsftpd에서 허용하는 최대 연결 수를 설정합니다. 기본값은 0이며 이는 제한이 없음을 의미합니다. 150으로 설정하면 동시에 150개의 연결이 허용되며, 초과하는 연결은 거부됩니다. 독립형 모드에서 실행할 때만 유효합니다.

max_per_ip=0
//각 IP 주소에 대해 FTP 서버에 허용되는 동시 연결 수를 설정합니다. 기본값은 0이며 제한이 없습니다. 이 구성은 일반적으로 동일한 사용자가 너무 많은 연결을 설정하는 것을 방지하도록 설정할 수 있습니다. 독립형 모드에서 실행할 때만 유효합니다.

listen_address=IP 주소​​​​​
//지정된 IP 주소에서 사용자의 FTP 요청을 수신하도록 설정합니다. 설정하지 않으면 서버에 바인딩된 모든 IP 주소를 수신합니다. 독립형 모드에서 실행할 때만 유효합니다. 하나의 IP 주소에만 바인딩된 서버의 경우 이 항목을 구성할 필요가 없습니다. 기본적으로 이 구성 항목은 구성 파일에 포함되어 있지 않습니다. 서버가 동시에 여러 IP 주소에 바인딩된 경우 이 구성 항목을 사용하여 FTP 서비스가 제공되는 IP 주소, 즉 FTP 서버에서 사용하는 IP 주소를 지정해야 합니다.值 참고: 이 값을 설정하기 전과 후에 netStat -TNL 비교 포트의 모니터링을 비교할 수 있습니다.
connect_timeout=60

// PORT 모드에서 데이터 연결 설정 시간 제한, 단위는 초입니다.

data_connection_timeout=300
//FTP 데이터 연결 설정 시간 제한을 설정합니다. 기본값은 300초입니다.

idle_session_timeout=600
//FTP 서버에서 아무 작업도 수행하지 않으면 FTP 연결이 끊어지는 시간을 초 단위로 설정합니다. 기본값은 600초입니다. 즉, daze에 대한 타임아웃 시간을 설정합니다. 이 시간 동안 데이터 전송이나 명령 입력이 없으면 연결이 강제로 끊어집니다.
pam_service_name=vsftpd

//PAM에서 사용되는 이름을 설정합니다. 기본값은 vsftpd입니다.


setproctitle_enable=NO|YES
//FTP 서버에 대한 각 연결을 설정하여 다른 프로세스로 표시되는지 확인합니다. 기본값은 NO입니다. 이때 vsftpd라는 프로세스는 하나만 있습니다. YES로 설정하면 각 연결에 vsftpd 프로세스가 포함됩니다. 자세한 FTP 연결 정보를 보려면 "ps -ef|grep ftp" 명령을 사용하세요. 안전상의 이유로 닫아 두는 것이 좋습니다.

9. FTP 작업 모드 및 포트 설정
(1) FTP 작업 모드 소개
FTP에는 두 가지 작업 모드가 있는데, 하나는 PORT FTP이고 다른 하나는 PASV FTP입니다. 작동 방식은 다음과 같습니다.
둘의 차이점은 PORT FTP의 데이터 전송 포트는 FTP 서버에서 지정하는 반면 PASV FTP는 FTP 클라이언트에서 지정하며 각 데이터 연결에 사용되는 포트 번호가 다르다는 것입니다. 이로 인해 CuteFTP와 같은 FTP 클라이언트 소프트웨어에는 연결 유형 설정 항목에 PORT와 PASV의 두 가지 옵션이 있습니다.

FTP 서버가 PASV 작업 모드로 설정되면 클라이언트도 PASV 연결 유형으로 설정되어야 합니다. 클라이언트 연결 유형을 PORT로 설정하면 FTP 연결이 가능하지만 ls, get 등 데이터 요청이 필요한 명령을 실행하면 응답이 없고 데이터 연결을 할 수 없다는 최종 보고가 나옵니다.口 (2) 포트 관련 설정

Listen_port = 21

// Listening 포트를 연결하는 포트를 생성하도록 FTP 서버를 설정하며 기본값은 21입니다.
비표준 포트 연결 예: ftp www.sunflower.org 7000
connect_from_port_20=YES
//기본값은 YES이며, FTP 데이터 전송 연결에 포트 20을 사용하도록 지정합니다. NO로 설정하면 데이터 연결 시 사용되는 포트는 ftp_data_port에 의해 지정됩니다.

ftp_data_port=20​​​​​​​​​​​​​​//PORT 모드에서 FTP 데이터 연결에 사용되는 포트를 설정하며 기본값은 20입니다.

pasv_enable=YES|NO

//YES로 설정하면 PASV 작업 모드를 사용하고, NO로 설정하면 PORT 모드를 사용합니다. 기본값은 YES이며 PASV 모드를 사용합니다.
pasv_max_port=0​​​​​​​
//PASV 작업 모드에서 데이터 연결에 사용할 수 있는 포트 범위의 상한을 설정합니다. 기본값은 0이며 이는 모든 포트를 의미합니다.
pasv_mim_port=0​​​​​​​
//PASV 작업 모드에서 데이터 연결에 사용할 수 있는 포트 범위의 하한을 설정합니다. 기본값은 0이며 이는 모든 포트를 의미합니다.


10. 전송 모드 설정

데이터를 전송할 때 FTP는 바이너리(Binary) 모드 또는 ASCII 모드를 사용하여 데이터를 업로드하거나 다운로드할 수 있습니다. ascii_download_enable=YES //ASCII 모드 다운로드 데이터 활성화 여부를 설정합니다. 기본값은 아니오입니다. ascii_upload_enable=YES //데이터 업로드를 위해 ASCII 모드를 활성화할지 설정합니다. 기본값은 아니오입니다.


11. 업로드된 문서의 소유권 및 권한 설정

(1) 익명으로 업로드된 문서의 소유자 설정 chown_uploads=YES               // 익명 사용자가 업로드한 문서의 소유자 변경 여부를 설정하는 데 사용됩니다. 기본값은 아니오입니다. YES로 설정하면 익명 사용자가 업로드한 문서의 소유자가 chown_username 구성 항목에 설정된 사용자 이름으로 설정됩니다.
chown_username=누구든지
//익명 사용자가 업로드한 문서의 소유자 이름을 설정합니다. chown_uploads=YES인 경우에만 유효합니다. 루트 사용자로 설정하지 않는 것이 좋습니다. 단, 시스템은 기본적으로 루트

(2) 새 문서에 대한 권한 설정
local_umask=022            

//로컬 사용자가 추가한 새 문서에 대한 umask를 설정합니다. 기본값은 022이고 해당 권한은 755입니다. umask는 022이고, 해당 바이너리 숫자는 000 010 010이다. 이를 111 101 101로 변환하여 십진수로 변환하면 권한값이 755인데, 문서의 소유자(owner)가 읽었다는 뜻이고, 쓰기, 실행 권한과 그것이 속한 그룹은 읽기 및 실행 권한을 가지며, 다른 사용자는 읽기 및 실행 권한을 갖습니다. 022는 대부분의 상황에 적합하며 일반적으로 변경할 필요가 없습니다. 077로 설정하면 해당 권한은 700입니다.

anon_umask=022 //익명 사용자가 추가한 새 문서에 대해 umask를 설정합니다. 기본값 077
file_open_mode=0755 //문서 업로드 권한을 설정합니다. 권한은 숫자 형식입니다. 기본값은 0666


12입니다. 로그 파일

xferlog_enable=YES //업로드/다운로드 로깅 활성화 여부. 기본값은 NOxferlog_file=var/log/vsftpd.log //로그 파일 이름과 경로를 설정합니다. xferlog_enable 옵션을 활성화해야 합니다xferlog_std_format=YES //로그 파일이 표준 xferlog 로그 파일 형식(wu-ftpd에서 사용하는 것과 동일한 형식)을 사용하는지 여부입니다. 기본값은 NO


입니다.

13. 기타 설정
text_userdb_names=NO
//ls 명령 실행 시 UID, GID 또는 특정 사용자 이름이나 그룹 이름을 표시할지 여부를 설정합니다. 기본값은 NO이며 UID, GID 모드에서 표시됩니다. 사용자 이름과 그룹 이름을 표시하려면 YES로 설정하세요.
ls_recurse_enable=YES​​​​​
//YES로 설정하면 "ls -R" 명령 실행이 허용됩니다. 기본값은 NO입니다. 이 구성 항목은 구성 파일에 주석 처리되어 있습니다. 이 항목을 활성화해야 하는 경우 주석을 제거하고 YES 또는 NO

로 설정하세요.

위 내용은 Linux에서 FTP 서버를 구성하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.