需求描述
-
用vsftpd搭建一台文件服務器
-
限制用戶user1在/home/user1/screen目錄,在其他目錄上傳輸文件均失敗
一、ftp基礎知識
1.1 主動模式及被動模式
1、ftp采用兩個端口控制:
A 20端口用於數據傳輸.
B 21端口用於控制,或指建立TCP連接.
2、主動方式連接過程:
[注意]:C表示客戶端 S表示服務器端
A、 S端要開啟20、21端口;
B、 C端一個隨機端口連接S端21,這個隨機范圍1024-65536,同時發送命令port+x,指明數據端口C(X)->S(21);
C、 S端收到命令后,將返回一個ACK,S(21)->C(X);
D、 S端將用自己的20端口與C端的X+1端口相連,S(20)->C(X+1);
E、 C給S返回ACT,C(X+1)->S(20).
3、被動方式連接過程:
[注意]:C表示客戶端 S表示服務器端
A、 S服務器端要開啟21端口和大於1024tcp端口;
B、 C以一個隨機端口X與S的21端口相連, 這個隨機端口范圍為1024~65535, 並發送命令 PASV. C(X) -> S(21)
C、 S收到命令, 返回一個ACK, 並在其中指明一個新的高位端口y. S(21) -> C(x)
D、 C發起 x+1端口到S的y的端口的連接.C(x+1) -> S(y)
E、 S返回一個ACK. S(y) ->C(x+1)
1.2 主被動配置方法
1.2.1 主動模式配置方法
connect_from_port_20=YES #主動式連接使用的數據通道 pasv_enable=NO #支持數據流的被動式連接模式
1.2.2 被動模式的配置方法
connect_from_port_20=NO #主動式連接使用的數據通道 pasv_enable=YES #支持數據流的被動式連接模式 pasv_min_port=1024 pasv_max_port=65536 #pasv模式中服務器傳回的ip地址 pasv_address (Default: (none - the address is taken from the incoming connected socket) )
[注意:]
Vsftp主動模式和被動模式是可以共存的。
主動模式和被動模式的區別在於,主動模式下,ftp采用的是20端口傳送數據,而被動模式下,ftp采用的是大於1024的隨機端口。
二、部署過程
1、安裝vsftpd
yum install vsftpd -y
文件目錄如下:
[root@ldap-server screen]# rpm -ql vsftpd-3.0.2-25.el7.x86_64
/etc/logrotate.d/vsftpd
/etc/pam.d/vsftpd
/etc/vsftpd
/etc/vsftpd/ftpusers
/etc/vsftpd/user_list
/etc/vsftpd/vsftpd.conf
/etc/vsftpd/vsftpd_conf_migrate.sh
/usr/lib/systemd/system-generators/vsftpd-generator
/usr/lib/systemd/system/vsftpd.service
/usr/lib/systemd/system/vsftpd.target
/usr/lib/systemd/system/vsftpd@.service
/usr/sbin/vsftpd
/usr/share/doc/vsftpd-3.0.2
/usr/share/doc/vsftpd-3.0.2/AUDIT
/usr/share/doc/vsftpd-3.0.2/BENCHMARKS
/usr/share/doc/vsftpd-3.0.2/BUGS
/usr/share/doc/vsftpd-3.0.2/COPYING
/usr/share/doc/vsftpd-3.0.2/Changelog
/usr/share/doc/vsftpd-3.0.2/EXAMPLE
/usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE
/usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE/README
/usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE/README.configuration
/usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE/vsftpd.conf
/usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE/vsftpd.xinetd
/usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE_NOINETD
/usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE_NOINETD/README
/usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE_NOINETD/README.configuration
/usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE_NOINETD/vsftpd.conf
/usr/share/doc/vsftpd-3.0.2/EXAMPLE/PER_IP_CONFIG
/usr/share/doc/vsftpd-3.0.2/EXAMPLE/PER_IP_CONFIG/README
/usr/share/doc/vsftpd-3.0.2/EXAMPLE/PER_IP_CONFIG/README.configuration
/usr/share/doc/vsftpd-3.0.2/EXAMPLE/PER_IP_CONFIG/hosts.allow
/usr/share/doc/vsftpd-3.0.2/EXAMPLE/README
/usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_HOSTS
/usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_HOSTS/README
/usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_USERS
/usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_USERS/README
/usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_USERS/README.configuration
/usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_USERS/logins.txt
/usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_USERS/vsftpd.conf
/usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_USERS/vsftpd.pam
/usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_USERS_2
/usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_USERS_2/README
/usr/share/doc/vsftpd-3.0.2/FAQ
/usr/share/doc/vsftpd-3.0.2/INSTALL
/usr/share/doc/vsftpd-3.0.2/LICENSE
/usr/share/doc/vsftpd-3.0.2/README
/usr/share/doc/vsftpd-3.0.2/README.security
/usr/share/doc/vsftpd-3.0.2/REWARD
/usr/share/doc/vsftpd-3.0.2/SECURITY
/usr/share/doc/vsftpd-3.0.2/SECURITY/DESIGN
/usr/share/doc/vsftpd-3.0.2/SECURITY/IMPLEMENTATION
/usr/share/doc/vsftpd-3.0.2/SECURITY/OVERVIEW
/usr/share/doc/vsftpd-3.0.2/SECURITY/TRUST
/usr/share/doc/vsftpd-3.0.2/SIZE
/usr/share/doc/vsftpd-3.0.2/SPEED
/usr/share/doc/vsftpd-3.0.2/TODO
/usr/share/doc/vsftpd-3.0.2/TUNING
/usr/share/doc/vsftpd-3.0.2/vsftpd.xinetd
/usr/share/man/man5/vsftpd.conf.5.gz
/usr/share/man/man8/vsftpd.8.gz
/var/ftp
/var/ftp/pub
2、修改配置文件
vim /etc/vsftpd/vsftpd.conf .... 1、修改的參數如下: anonymous_enable=NO //禁用匿名登陸 2、鎖定用戶目錄: chroot_local_user=YES 3、啟動被動模式 pasv_enable=YES pasv_min_port=50000 pasv_max_port=60000
3、設置鎖定目錄操作
-
設置user1用戶根目錄不可寫操作
chmod a-w /home/user1
-
創建文件目錄screen並賦權
mkdir /home/user1/file chown user1 /home/user1/file
4、啟動服務
service vsftpd start
chkconfig vsftpd on
三、測試