Centos7下将FTP用户锁定在指定目录的解决办法
需求描述
-
用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
三、测试
喜欢请赞赏一下啦^_^
微信赞赏
![](https://oss-pic.oss-cn-hangzhou.aliyuncs.com/wepayrandom_380.jpg)
支付宝赞赏
![](https://oss-pic.oss-cn-hangzhou.aliyuncs.com/alipayrandom_380.jpg)