vsftpd 创建不同权限的用户

Posted by Yun on Mon, Aug 10, 2020

vsftpd 是一款运行于 Linux 环境的 ftp 服务器。本文将介绍配置其具备不同权限用户(管理员、只可上传、只可下载)的方法。

  • admin:可以上传、下载、重命名、删除
  • uploader:只可以上传
  • downloader:只可以下载

下文以 Ubuntu 18.04 为例。

Step 1. 安装所需的包

通过 apt 指令安装 vsftpddb-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.