记录日常点点滴滴,欢迎来到我的小站。

0%

Ubuntu 22.04 Vsftpd 多用户配置

一、安装vsftpd

1
sudo apt-get install vsftpd

二、配置用户

在/etc下创建目录vsftpd

1
2
3
mkdir vsftpd
cd vsftpd
vi user.txt

user.txt中加入用户名、密码,奇数行为用户名,偶数行为密码

1
2
3
4
ftp1
ftp1
ftp2
ftp2

使用db_load命令将用户生成数据库

如果没有db_load命令先安装

1
apt-get install db-util

然后生成数据库

1
2
db_load -T -t hash -f user.txt user.db
sudo chmod 600 user.db

之后记得删除user.txt文件

三、创建不同用户的配置

1
2
3
mkdir user_conf
cd user_conf
sudo touch ftp1 ftp2 //对应user.txt中的用户

在ftp1中写入:

1
2
3
4
5
6
anon_world_readable_only=no
write_enable=yes
anon_upload_enable=yes
anon_mkdir_write_enable=yes
anon_other_write_enable=yes
local_root=/home/ftp/t1

在ftp2中写入:

1
2
3
4
5
6
anon_world_readable_only=no
write_enable=yes
anon_upload_enable=yes
anon_mkdir_write_enable=yes
anon_other_write_enable=yes
local_root=/home/ftp/t2

四、修改pam.d下的vsftpd,配置PAM文件

创建文件/etc/pam.d/vsftpd.vu 将以下内容增加到原文件前面两行:

1
2
3
4
5
cd /etc/pam.d
vi vsftpd.vu

auth required pam_userdb.so db=/etc/vsftpd/user
account required pam_userdb.so db=/etc/vsftpd/user

其中db=….指向我们之前建立的user.db

五、创建虚拟帐号:

1
2
3
4
5
6
sudo useradd vsftpduser -d /home/vsftpd -s /sbin/nologin  //不允许登录
chmod a-w /home/vsftpd //修改目录的权限
chown vsftpduser:vsftpd /home/vsftpd //修改目录属于的用户组,因为我们创建了两个ftp位置,所以都要修改权限、用户组,如果提示没有用户组,自己创建一个

chmod a-w /home/ftp
chown vsftpduser:vsftpd /home/ftp

六、修改/etc/vsftpd.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#配置

local_root=/var/www
local_umask=022
file_open_mode=0755
force_dot_files=YES
pasv_min_port=65000 #注意开服务器端口
pasv_max_port=65535
pasv_address=ip.ip.ip.ip
port_enable=YES
pasv_enable=YES
pasv_addr_resolve=YES
guest_enable=YES
guest_username=vsftpduser
user_config_dir=/etc/vsftpd/user_conf
use_localtime=YES
#userlist_enable=NO
pam_service_name=vsftpd.vu
allow_writeable_chroot=YES
virtual_use_local_privs=YES
chmod_enable=YES
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/vsftpd.chroot_list #创建此文件后,将全局可访问用户放入其中

解决办法500 OOPS: vsftpd: refusing to run with writable root inside chroot()
在vsftpd.conf中添加 allow_writeable_chroot=YES

小技巧

禁止用户访问上级目录时使用以下配置

1
2
3
chroot_local_user=NO  
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

在vsftpd文件见中生成chroot_list文件,在此文件中输入禁止用户

1
2
3
wo
ni
ta

重新启动vsftpd服务即可。

服务器发回了不可路由的地址。使用服务器地址代替的问题
解决方法:

1
2
listen=NO -> listen=YES
listen_ipv6=YES ->listen_ipv6=NO

如果是ipv6则需要改成

1
2
listen=NO
listen_ipv6=YES

 
开启被动模式的代码:

1
2
3
4
5
6
7
8
#开启被动模式
pasv_enable=YES
#被动模式端口范围
pasv_min_port=6000
pasv_max_port=6010
#需要加入外部ip,否则被动模式会失败
pasv_address=xxx.xxx.xxx.xxx
pasv_addr_resolve=YES

云服务器的话,同时开启防火墙和安全组的端口

如果使用filezilla等FTP软件的话,在输入的IPv6地址前后加[]