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

三、測試

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM