arch linux 安装 vsftpd 配置虚拟用户

后面操作会直接基于 yay 操作 自行查找如何安装 yay

公司经常会用到 ftp 服务 不想用 apache 的 ftp server 所以自己在小机器上撞了 arch linux 用来安装软件 跑程序等。

1. 安装 vsftpd

bash 复制代码
yay vsftpd --noconfirm

选择 1 安装 输入密码

2. 安装 pam_pwdfile

安装 pam_pwdfile用于验证密码文件

bash 复制代码
yay pam_pwdfile --noconfirm

选择 1 安装

3. 修改配置文件

配置文件在 /etc/vsftpd.conf 处

bash 复制代码
sudo nano /etc/vsftpd.conf

修改为以下内容

text 复制代码
# 监听 ipv4
listen=YES
# 监听 ipv6
listen_ipv6=NO
# 关闭匿名登陆
anonymous_enable=NO
# 允许本地登陆 如使用虚拟宿主用户,在该项目设定为NO的情况下所有虚拟用户将无法访问
local_enable=YES
# 允许写入文件
write_enable=YES
# 文件权限掩码设置 当前即为 755
local_umask=000
# 不允许匿名上传
#anon_upload_enable=YES
# 不允许匿名创建文件夹
#anon_mkdir_write_enable=YES
# 目录消息
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
#chown_uploads=YES
#chown_username=whoever
xferlog_file=/var/log/xferlog.log
#xferlog_std_format=YES
#idle_session_timeout=600
#data_connection_timeout=120
#nopriv_user=ftpsecure
#async_abor_enable=YES
ascii_upload_enable=YES
ascii_download_enable=YES
#deny_email_enable=YES
#banned_email_file=/etc/vsftpd.banned_emails
#chroot_local_user=YES
# 设置不允许离开主目录
chroot_list_enable=YES
# 允许登陆的 ftp 用户列表
chroot_list_file=/etc/vsftpd/chroot_list
#ls_recurse_enable=YES
pam_service_name=vsftpd
ssl_enable=NO
guest_enable=YES
guest_username=ftp
user_config_dir=/etc/vsftpd/vuser_conf
#pasv_address=172.16.161.244
#开启PASV模式
pasv_enable=YES
#最小端口号
#pasv_min_port=10027
#最大端口号
#pasv_max_port=10037
pasv_promiscuous=YES
allow_writeable_chroot=YES
# ftp 监听端口
listen_port=2121
vsftpd_log_file=/var/log/vsftpd.log
log_ftp_protocol=YES
hide_ids=YES
virtual_use_local_privs=YES
seccomp_sandbox=NO

4. 配置文件

创建文件夹 /etc/vsftpd/vuser_conf 对应配置文件内 user_config_dir 属性

创建 /etc/vsftp/chroot_list 文件,在里面填入自己想要的用户名 我选择 myFtpUser ,如果 chroot_local_user属性没有设置/设置为 NO (默认为NO),则只有该文件内的用户可以登陆

bash 复制代码
sudo mkdir -p /etc/vsftpd/vuser_conf
sudo bash -c 'echo myFtpUser >> /etc/vsftpd/chroot_list'

创建用户配置

在 vuser_conf 目录下创建用户名的文件

bash 复制代码
sudo nano /etc/vsftpd/vuser_conf/myFtpUser

填入内容

text 复制代码
local_root=/home/robot/data/ftphome
write_enable=YES
anon_umask=000
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

local_root 是 ftp 的根目录所在文件夹

同时创建文件夹 并且更改所有者

bash 复制代码
sudo mkdir /home/robot/data/ftphome
sudo chown -R ftp:ftp /home/robot/data/ftphome

5. 创建密码

我选择 abcd1234

bash 复制代码
openssl passwd -1 -noverify abcd1234

得到 $1$vG2IrM5m$mdmBeMXqqnjW7u4exX/190

用户名:密码作为内容创建 vuser_passwd 文件 文件名任意 后面要用,内容如下 由于有特殊符号 还是用 nano 方便~

bash 复制代码
sudo nano /etc/vsftpd/vuser_passwd
text 复制代码
myFtpUser:$1$vG2IrM5m$mdmBeMXqqnjW7u4exX/190

编辑 vsftpd 的 pam 文件

bash 复制代码
sudo nano /etc/pam.d/vsftpd

将内容删除 或者 都注释(前面加#),然后添加一下内容

text 复制代码
auth required pam_pwdfile.so pwdfile /etc/vsftpd/vuser_passwd
account required pam_permit.so

其中就用到了密码文件

6. 赋权

配置文件目录添加所有可读, ftp 目录的用户目录我直接给了全部权限

bash 复制代码
sudo chmod a+r -R /etc/vsftpd
sudo chmod 777 -R /home/robot

7. 验证

我使用 filezilla 连接 没有问题

注意端口 和配置文件中的对应 是 2121

有时间再更一篇 vsftpd 配置 ftps 的文章

相关推荐
e***985720 分钟前
Nginx搭建负载均衡
运维·nginx·负载均衡
电话交换机IPPBX-3CX1 小时前
电话交换机IPPBX-3CX的呼叫记录导出
运维·服务器·网络
松涛和鸣1 小时前
11.C 语言学习:递归、宏定义、预处理、汉诺塔、Fibonacci 等
linux·c语言·开发语言·学习·算法·排序算法
C-DHEnry3 小时前
Linux 不小心挂载错磁盘导致无法启动系统咋办
linux·运维·服务器·雨云
JosieBook3 小时前
【若依框架】若依前后端分离项目怎么部署到服务器?
运维·服务器
q***7483 小时前
Nginx环境安装
运维·nginx
qinyia3 小时前
使用Wisdom SSH的AI多会话功能进行批量命令执行和跨服务器智能运维
运维·人工智能·ssh
f***68603 小时前
【Sql Server】sql server 2019设置远程访问,外网服务器需要设置好安全组入方向规则
运维·服务器·安全
安科瑞刘鸿鹏174 小时前
从监测到保护:ALP如何赋能企业配电柜安全升级?
运维·网络·安全
DeadPool loves Star4 小时前
利用笔记本与SSH转发给服务器上的虚拟机通网
运维·服务器·ssh