Contents
  1. 1. install
  2. 2. config
    1. 2.1. virtual users
      1. 2.1.1. 1.创建虚拟用户名
      2. 2.1.2. 2.编辑PAM认证文件
      3. 2.1.3. 3.建立本地映射用户并设置宿主目录权限
      4. 2.1.4. 4.配置项
      5. 2.1.5. 5.设置虚拟用户个性配置
      6. 2.1.6. 6.重启服务
      7. 2.1.7. 7.连接

Very Secure FTP Daemon

install

sudo apt install vsftpd
sudo apt install db5.3-util yum install compat-db47

config

  • 用户
    • 本地用户
    • 虚拟用户(需映射到一个本地用户/宿主)
    • 匿名用户
  • 连接模式
    • 主动模式:客户端动态端口,服务器主动连接
    • 被动模式:服务器动态端口,客户端主动连接

virtual users

1.创建虚拟用户名

添加虚拟用户名和密码,一行用户名,一行密码
mkdir -p /etc/vsftpd
vi /etc/vsftpd/virtusers

1
2
3
4
ftp1
Mn30Bf68
ftp2
pz8sR2W6

使用db_load命令生成虚拟用户口令认证文件

1
2
db5.3_load -T -t hash -f virtusers virtusers.db
db_load -T -t hash -f virtusers virtusers.db

2.编辑PAM认证文件

/etc/pam.d/vsftpd
顶部插入规则。注释掉原有的规则

1
2
auth required  pam_userdb.so db=/etc/vsftpd/virtusers
account required pam_userdb.so db=/etc/vsftpd/virtusers

3.建立本地映射用户并设置宿主目录权限

useradd -d /home/vftpuser -s /sbin/nologin vftpuser

sudo mkdir -p /home/vftpuser/data
sudo chown vftpuser /home/vftpuser/data
sudo chmod 755 /home/vftpuser #调整权限以允许浏览目录,目录归属于root
–sudo chmod 555 /home/vftpuser/data #chroot_local_user为真时要求虚拟根目录不能写权限

4.配置项

vi /etc/vsftpd.conf (ubuntu)
vi /etc/vsftpd/vsftpd.conf (centos)

1
2
3
4
5
6
7
8
9
10
11
12
13
listen=YES
anonymous_enable=NO
local_enable=YES #虚拟用户需启用
write_enable=YES
local_umask=022
chroot_local_user=YES # 限制用户离开指定的根目录
allow_writeable_chroot=YES # 允许chroot管理用户写操作,若为NO则用户根目录不能有写权限

# 默认Vsftpd.conf中不包含这些设定项目,需要自己手动添加配置
guest_enable=YES
guest_username=vftpuser
#设定虚拟用户配置 文件名必须和虚拟用户名相同
user_config_dir=/etc/vsftpd/vconf

5.设置虚拟用户个性配置

mkdir -p /etc/vsftpd/vconf
cd /etc/vsftpd/vconf

当virtual_use_local_privs=YES时,虚拟用户和本地用户有相同的权限;
当virtual_use_local_privs=NO时,虚拟用户和匿名用户有相同的权限,默认是NO。

vi ftp1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 用户 test 配置目录
local_root=/home/vftpuser/data/ftp1

#0 本地用户同权 写权限(上传、下载、删除、重命名)
write_enable=YES
virtual_use_local_privs=YES

#1 只下载用户
virtual_use_local_privs=NO
anon_upload_enable=NO

#2 只上传用户
virtual_use_local_privs=NO
anon_world_readable_only=YES #限制下载other可读文件
anon_upload_enable=YES #上传

#3其他权限
anon_mkdir_write_enable=YES #创建文件夹
anon_other_write_enable=YES #删除和重命名文件


touch /home/vftpuser/vconf/ftp2 #空文件,用户只读

https://www.cnblogs.com/ssrs-wanghao/articles/13751408.html

6.重启服务

service vsftpd restart
systemctl enable vsftpd
systemctl restart vsftpd.service
systemctl start vsftpd.service
systemctl status vsftpd.service

7.连接

ftp ftp1@192.168.137.111