vsftpd 是一款运行于 Linux 环境的 ftp 服务器。本文将介绍配置其具备不同权限用户(管理员、只可上传、只可下载)的方法。
- admin:可以上传、下载、重命名、删除
- uploader:只可以上传
- downloader:只可以下载
下文以 Ubuntu 18.04 为例。
Step 1. 安装所需的包
通过 apt
指令安装 vsftpd
和 db-util
1apt install vsftpd
2apt install db-util
Step 2. 建立 vsftpd 宿主用户及文件夹
建立用户文件夹:
1mkdir /home/vsftpuser
在用户文件夹下,建立 777 权限文件夹用于数据传输:
1cd /home/vsftpuser
2mkdir data
3chmod 777 /home/vsftpuser/data
新建不可以登录的用户 vsftpuser
:
1useradd -s /sbin/nologin -d /home/vsftpuser -M vsftpuser
修改用户密码:
1passwd vsftpuser
Step 3. 建立 vsftpd 虚拟用户列表
建立文件 vim /home/vsftpd/u_list.txt
(奇数行用户名,偶数行密码):
1admin
2adminpassword
3uploader
4uploaderpassword
5downloader
6downloaderpassword
使用 db-utils
加密用户列表文件并修改权限:
1db_load -T -t hash -f /home/vsftpd/u_list.txt /home/vsftpd/u_list.db
2chmod 600 /home/vsftpd/u_list.db
Step 4. 修改 pam.d/vsftpd
修改文件 vim /etc/pam.d/vsftpd
:
1# Standard behaviour for ftpd(8).
2# auth required pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed
3
4# Note: vsftpd handles anonymous logins on its own. Do not enable pam_ftp.so.
5
6# Standard pam includes
7# @include common-account
8# @include common-session
9# @include common-auth
10# auth required pam_shells.so
11auth required /lib/x86_64-linux-gnu/security/pam_userdb.so db=/home/vsftpd/u_list
12account required /lib/x86_64-linux-gnu/security/pam_userdb.so db=/home/vsftpd/u_list
Step 5. 建立不同用户的权限配置文件
vim /home/vsftpd/conf/admin
:
1anon_world_readable_only=NO
2write_enable=YES
3anon_mkdir_write_enable=YES
4anon_other_write_enable=YES
5anon_upload_enable=YES
6local_root=/home/vsftpuser
vim /home/vsftpd/conf/downloader
:
1anon_world_readable_only=NO
2local_root=/home/vsftpuser
vim /home/vsftpd/conf/uploader
:
1write_enable=YES
2anon_upload_enable=YES
3anon_mkdir_write_enable=YES
4anon_world_readable_only=NO
5download_enable=NO
6local_root=/home/vsftpuser
Step 6. 修改 vsftpd 配置文件
vim /etc/vsftpd.conf
:
1listen=YES
2listen_ipv6=NO
3
4anonymous_enable=NO
5local_enable=YES
6write_enable=YES
7anon_upload_enable=NO
8anon_mkdir_write_enable=NO
9
10connect_from_port_20=YES
11
12xferlog_enable=YES
13xferlog_file=/var/log/vsftpd.log
14xferlog_std_format=YES
15
16chroot_local_user=YES
17
18pam_service_name=vsftpd
19
20# 虚拟用户配置
21guest_enable=YES
22guest_username=vsftpuser
23user_config_dir=/home/vsftpd/conf
24
25ascii_upload_enable=YES
26ascii_download_enable=YES
27
28utf8_filesystem=YES
29
30# 启用下面六行可以让 vsftpd 工作在被动模式
31# 如需要让 ftp 工作在主动模式需要注释下面六行
32listen_port=21
33pasv_enable=YES
34pasv_min_port=8700
35pasv_max_port=8900
36pasv_address=101.101.101.101
37pasv_addr_resolve=YES
如果使用云服务器,则需要配置开启 20/21 端口
Step 7. 重启服务以使用 vsftpd
1/etc/init.d/vsftpd restart
参考链接
版权声明:本文遵循 CC BY-SA 4.0 版权协议,转载请附上原文出处链接和本声明。
Copyright statement: This article follows the CC BY-SA 4.0 copyright agreement. For reprinting, please attach the original source link and this statement.