Liunx系統下有好幾款很不錯的ftp服務,各有特點,适應于不同的應用場合。一般在各種Linux的發行版中,默認帶有的ftp軟件是vsftp,本文是針對CentOs7系統下搭建vsftpd服務為例。
1. 首先确定系統中已經安裝了vsftpd軟件,查看命令:
rpm -q vsftpd
rpm -qa | grep vsftpd
2. 安裝vsftpd(以yum安裝為例)
yum install -y vsftpd
3.關閉selinux和iptables(也可配置防火牆相關訪問策略,防止系統阻斷),設置vsftpd開機自啟
永久關閉selinux
vi /etc/sysconfig/selinux将配置SELinux=enforcing改為SELinux=disabled
保存退出并重啟服務器
驗證是否關閉命令:getenforce
關閉防火牆
centos 7 操作命令:systemctl stop firewalld.service
centos 6 操作命令:service stop iptables
設置vsftpd開機自啟
centos 7 操作命令:systemctl enable vsftpd.service
centos 6 操作命令:chkconfig vsftpd on
4.vsftpd的配置
ftpusers 該文件用來指定哪些用戶不能訪問ftp服務器。
user_list 該文件用來指定的默認賬戶在默認情況下也不能訪問FTP服務器。
vsftpd.conf vsftpd的主要配置文件,路徑:
/etc/vsftpd/vsftpd.conf# vsftpd.conf的配置
# 是否允許匿名登錄
anonymous_enable=NO
# 是否允許本地用戶登錄
local_enable=YES
# 是否允許本地用戶對FTP服務器文件具有寫權限
write_enable=YES
# 本地用戶主目錄
local_root=/var/ftp
# 匿名用戶主目錄
anon_root=/var/ftp/pub
# 是否允許匿名用戶上傳文件,如允許,須将全局的
write_enable=YESanon_upload_enable=YES
# 是否允許匿名用戶創建新文件夾
anon_mkdir_write_enable=YES
# 容許匿名用戶除了新建和上傳外的其他權限
anon_other_write_enable=YES
# 本地用戶掩碼
local_umask=022
# 設置匿名登入者新增或上傳檔案時的umask值
anon_umask=022
# 是否激活目錄歡迎信息功能
dirmessage_enable=YES
xferlog_enable=YES
# 主動模式數據傳輸20端口
connect_from_port_20=NOxferlog_std_format=YES
# 是否監聽
ipv4listen=YES
# listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
# 是否設置被動模式
pasv_enable=YES
# 被動模式傳輸使用端口
pasv_min_port=20020
pasv_max_port=20020
# 被動模式返回給客戶端的ip地址(服務器内網穿透時使用)
pasv_address=0.0.0.0( 服務器外網ip )
# 設置用戶訪問目錄,默認隻允許用戶自己的ftp目錄
# 需要同時設置allow_writeable_chroot,允許受限用戶的寫權限,不然會報錯
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
allow_writeable_chroot=YES
5.創建例外用戶文件
#哪怕沒有例外用戶也必須創建
vim /etc/vsftpd/chroot_list
隻想讓指定賬戶不限制在其主目錄,其它賬戶都限制在主目錄。
對于chroot_local_user與chroot_list_enable的組合效果,可以參考下表:
chroot_local_user=YES |
chroot_local_user=NO | |
chroot_list_enable=YES |
1.所有用戶都被限制在其主目錄下2.使用chroot_list_file指定的用戶列表,這些用戶作為“例外”,不受限制 |
1.所有用戶都不被限制在其主目錄下2.使用chroot_list_file指定的用戶列表,這些用戶作為“例外”,受到限制 |
chroot_list_enable=NO |
1.所有用戶都被限制在其主目錄下2.不使用chroot_list_file指定的用戶列表,沒有任何“例外”用戶 |
1.所有用戶都不被限制在其主目錄下2.不使用chroot_list_file指定的用戶列表,沒有任何“例外”用戶 |
6. 創建ftp新用戶
#新增一個test(用戶名),并指定上傳目錄在/home/ftp/test下
useradd -g root -d /home/ftp/test -s /sbin/nologin test
# 如果後期想變更此用戶的上傳到(/XXX/ftp/test),請使用下面的命令:
usermod -d /XXX/ftp/test test
# 設置用戶密碼
passwd test
因為安全問題,vaftpd不允許匿名用戶在ftp主目錄上傳,可以新建一個子目錄,設置權限為777
8. 關于local_umask和anon_umask掩碼
掩碼決定了上傳文件的權限,掩碼為022代表上傳後的文件權限為
666-022=644 -> rw-r--r--
掩碼即為要去除的權限為,默認設為033即可。
9. 啟動vsftp服務
#centos7 操作命令
啟動: systemctl start vsftpd.service
停止: systemctl stop vsftpd.service
重啟: systemctl restart vsftpd.service
查看狀态: systemctl status vsftpd.service
#centos6 操作命令
啟動: service vsftpd start
停止: service vsftpd stop
重啟: service vsftpd restart
查看狀态: service vsftpd status
想了解更多精彩内容請點擊:Linux系統搭建FTP服務器教程
,