Debian搭建ftp服务并使用虚拟账户登录

在Debian Buster中配置vsFtpd并使用虚拟用户 (ineko.cc)

首先贴上原贴,本文的内容都是受到这篇文章的启发,感谢这篇文章的作者,我找了两三个小时的资料,最后还是这篇文章完美的解决了我的问题,感谢。这里就记录下我在自己的环境下搭建的过程,因为本篇文章完完全全是参照上面这篇文章,所以投了转载,本文只是记录下我自己搭建服务的过程。以便之后参考。再次表达对作者的感谢。


###环境 

Distributor ID: Debian
Description:    Debian GNU/Linux 11 (bullseye)
Release:        11
Codename:       bullseye

###安装vsftpd和db-util

apt install -y vsftpd db-util

###创建一个用户,之后需要将虚拟用户映射到这个用户上面,设置该用户不能登录系统

useradd -d /data/ftp_data -s /sbin/nologin virtftp

 ###修改/etc/shells文件,将/sbin/nologin追加到该文件中

echo /sbin/nologin >> /etc/shells

###创建用户的家目录

cd /
mkdir -p /data/ftp_data
chown virtftp:virtftp /data/ftp_data

###备份/etc/vsftpd.conf文件

mv vsftpd.conf vsftpd.conf_bak

###在/etc下创建vsftpd文件夹,用来存放后续的一些配置文件

mkdir /etc/vsftpd

###复制模板文件作为vsftpd.conf

cp /usr/share/doc/vsftpd/examples/VIRTUAL_USERS/vsftpd.conf /etc/vsftpd.conf

根据自己的需要对文件进行修改,这里贴上我的文件作为参考,我把一些暂时不需要的给注释掉了,因为后面需要为不同的用户设置不同的权限,所以这个地方就用一些通用的配置就可以了,后面对不同的用户可以在添加不同的配置

anonymous_enable=NO
local_enable=YES
#write_enable=NO             #以下注释掉的四条语句可以单独分配给不同的虚拟用户
#anon_upload_enable=NO
#anon_mkdir_write_enable=NO
#anon_other_write_enable=NO
chroot_local_user=YES
allow_writeable_chroot=YES   #设置了chroot_local_user=YES之后还需要加上这条,不然用户会无法登录
guest_enable=YES             #开启虚拟用户
guest_username=virtftp       #这里就填刚才新建的用户的用户名,后续会将虚拟用户映射到这个账户上
listen=YES
#listen_port=10021
#pasv_min_port=30000
#pasv_max_port=30999
pasv_enable=NO               #禁用pasv安全验证
max_per_ip=3                 #每个IP地址的最大连接数为3
max_clients=100              #最大连接数为100

###切换到/etc/vsftpd目录中,新建一个.txt文件,我这里新建了一个users.txt文件,里面写上虚拟用户的用户名和密码,这里贴上我的文件

ftpuser
123
ftpadmin
123

###然后使用db-util工具将这个.txt文件封装为db数据库文件,vlogin.db就是封装之后的文件了,vlogin.db文件放置在刚才创建的/etc/vsftpd文件夹中

db_load -T -t hash -f users.txt vlogin.db

###备份/etc/pam.d/vsftpd文件

mv /etc/pam.d/vsftpd /etc/pam.d/vsftpd_bak

###然后复制模板文件作为新的/etc/pam.d/vsftpd

cp /usr/share/doc/vsftpd/examples/VIRTUAL_USERS/vsftpd.pam /etc/pam.d/vsftpd

###查看文件内容

auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd_login

###这里引用的pam_userdb.so并不在这个路径,所以需要我们手动去查找该文件所在的路径,然后修改为正确的路径

find / -name pam_userdb.so

###找到了文件的正确路径

/usr/lib/x86_64-linux-gnu/security/pam_userdb.so

###然后db=/etc/vsftpd_login,这里就修改为我们刚才创建的vlogin.db文件,但是不用加后缀

###修改/etc/pam.d/vsftpd文件,修改后的文件内容如下,修改了模块的路径和db数据库文件的路径

auth required /usr/lib/x86_64-linux-gnu/security/pam_userdb.so db=/etc/vsftpd/vlogin
account required /usr/lib/x86_64-linux-gnu/security/pam_userdb.so db=/etc/vsftpd/vlogin

###在/etc/vsftpd下新建一个目录用来存放虚拟用户的目录ftp_user

mkdir /etc/vsftpd/ftp_user

###新建完目录之后还需要添加下面一条语句到/etc/vsftpd.conf中,指定虚拟用户权限文件的存放目录

echo user_config_dir=/etc/vsftp/ftp_user >> /etc/vsftpd.conf

###切换到ftp_user目录下,然后新建虚拟用户配置文件,和虚拟用户同名

cd /etc/vsftpd/ftp_user
cp /etc/vsftpd.conf ./ftpuser
cp /etc/vsftpd.conf ./ftpadmin

###接下来编辑虚拟用户权限文件,给不同的用户配置不同的权限

###这里我给ftpuser的权限是可以下载和上传文件,给ftpadmin的权限是可以下载上传文件,以及删除重命名,上传文件的umask为022

###下面贴出两个配置文件的内容

###以下是ftpuser文件内容

write_enable=YES
anon_upload_enable=NO

###以下是ftpadmin文件内容

write_enable=NO
anon_upload_enable=NO
anon_other_write_enable=NO
local_umask=022

###然后重启vsftpd服务,让配置文件生效

systemctl restart vsftpd.service

###最后使用客户机登录ftp

root@debian:/etc/bind# ftp 172.16.0.3
Connected to 172.16.0.3.
220 (vsFTPd 3.0.3)
Name (172.16.0.3:whoami): ftpuser
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> 
root@debian:/etc/bind# ftp 172.16.0.3
Connected to 172.16.0.3.
220 (vsFTPd 3.0.3)
Name (172.16.0.3:whoami): ftpadmin
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> 

新建的两个虚拟用户都可以正常登录,这样就大功告成了

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值