构建基于虚拟用户的vsftpd服务器应用攻略
准备工作
在开始构建基于虚拟用户的vsftpd服务器之前,请确保已经完成了以下准备工作:
-
安装vsftpd服务器,可以通过以下命令在Ubuntu系统中安装:
shell
sudo apt-get update
sudo apt-get install vsftpd -
实现虚拟用户:
-
在/etc/vsftpd.conf中添加以下配置:
shell
user_sub_token=$USER
local_root=/var/www/vsftp/$USER
guest_enable=YES
guest_username=ftp
virtual_use_local_privs=YES
-
创建一个ftp用户并设置其主目录
shell
sudo useradd -d /var/www/vsftp ftp
sudo passwd ftp; #设置ftp用户的密码
sudo chmod a-w /var/www #防止newdir创建文件/文件夹
sudo mkdir -p /var/www/vsftp
sudo chown nobody:nogroup /var/www/vsftp #权限给空用户组,防止访问组件
sudo chmod a-w /var/www/vsftp -
创建虚拟用户
shell
sudo useradd -d /var/www/vsftp/username -s /bin/false username
sudo passwd username; #设置用户名的密码
配置vsftpd服务器
在完成上述准备工作之后,我们需要进一步配置vsftpd服务器:
- 编辑/etc/vsftpd.conf文件,取消以下配置的注释:
write_enable=YES
local_umask=022
这些配置将允许虚拟用户上传文件和创建目录。
- 添加以下配置到/etc/vsftpd.conf文件中:
# 允许虚拟用户访问
guest_enable=YES
# 显式地设置禁用匿名访问
anonymous_enable=NO
# 禁用本地用户登录
local_enable=NO
# 仅支持虚拟用户登录
virtual_use_local_privs=YES
# 设定虚拟用户配置文件路径
user_config_dir=/etc/vsftp/vsftpd_user_conf
# 设置时间死机问题
idle_session_timeout=900 # 15 minutes
data_connection_timeout=120 # 2 minutes
# 限制最大连接数
max_clients=10
max_per_ip=5
# 设定被动模式
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
- 为虚拟用户创建配置文件。
在/etc/vsftp/vsftp_user_conf目录下,为每个虚拟用户创建一个配置文件,文件名与虚拟用户名相同,例如:
sudo touch /etc/vsftp/vsftpd_user_conf/username
sudo chmod 600 /etc/vsftp/vsftpd_user_conf/username
sudo chown ftp:ftp /etc/vsftp/vsftpd_user_conf/username
在这个配置文件中,我们可以使用以下配置对虚拟用户进行配置:
# 禁止虚拟用户登录shell
user_sub_token=$USER
local_root=/var/www/vsftp/$USER
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
在这个配置文件中,我们设置了以下内容:
将user_sub_token配置为$USER,这样虚拟用户登录之后,将在/var/www/vsftp/$USER目录下完成操作。
local_root配置为虚拟用户的主目录,可以根据需要修改。
开启写入权限
anon_world_readable_only设置为NO,允许虚拟用户读取其他用户的文件。
anon_upload_enable设置为YES,允许虚拟用户上传文件。
anon_mkdir_write_enable设置为YES,允许虚拟用户创建目录。
anon_other_write_enable设置为YES,允许虚拟用户删除/移动/重命名文件。
启动vsftpd服务器
完成上述配置之后,我们需要启动vsftpd服务器以使其生效:
sudo systemctl start vsftpd # 开启vsftpd
sudo systemctl enable vsftpd # 开机自启
sudo systemctl status vsftpd # 查询状态
示例说明
这是一个示例,其中虚拟用户username可以访问/var/www/vsftp/username目录,并具有上传、创建目录、删除/移动/重命名文件等权限。
在完成所有配置之后,我们可以使用以下命令测试我们的服务器是否工作正常:
mkdir upload
cd upload
echo "Hello World" > index.html
sudo chown -R ftp:ftp /var/www/vsftp/username
sudo chmod -R 770 /var/www/vsftp/username
ftp localhost
username
<password>
cd / # 可以访问
cd /var/www/vsftp/username # 可以访问
put index.html
ls /var/www/vsftp/username
exit
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:构建基于虚拟用户的vsftpd服务器应用 - Python技术站