FreeBSD下配置vsftpd虚拟用户
原创FreeBSD下配置vsftpd虚拟用户
在FreeBSD系统中,配置vsftpd(Very Secure FTP Daemon)以赞成虚拟用户是一种常见的需求。虚拟用户允许FTP服务只对特定的用户进行授权,而不需要每个用户都在系统中有一个实际的账号。以下是在FreeBSD下配置vsftpd虚拟用户的具体步骤。
1. 安装vsftpd
首先,确保系统中已经安装了vsftpd。可以使用以下命令来安装vsftpd:
# pkg install vsftpd
安装完成后,可以通过以下命令启动vsftpd服务:
# service vsftpd start
为了使vsftpd在系统启动时自动运行,可以使用以下命令:
# service vsftpd enable
2. 创建虚拟用户数据库
虚拟用户的认证信息通常存储在数据库文件中。这里我们使用MySQL作为后端数据库,由此需要安装MySQL服务。
# pkg install mysql58-server
# mysql58-server start
# mysql_secure_installation
在安装过程中,会提示你设置root密码、删除匿名用户、禁止root登录、删除test数据库以及刷新权限。
创建一个用于存储虚拟用户信息的数据库和表:
# mysql -u root -p
MariaDB [(none)]> CREATE DATABASE vsftpd_db;
MariaDB [(none)]> CREATE TABLE vsftpd_db.users (
-> user_name VARCHAR(50) NOT NULL,
-> password VARCHAR(50) NOT NULL,
-> home_dir VARCHAR(100) NOT NULL,
-> PRIMARY KEY (user_name)
-> );
退出MySQL客户端。
3. 配置vsftpd以使用MySQL认证
编辑vsftpd的配置文件,通常位于`/etc/vsftpd/vsftpd.conf`:
# vi /etc/vsftpd/vsftpd.conf
找到以下行并取消注释:
# nopriv_user=vsftpd
添加以下行以启用虚拟用户认证:
#启用虚拟用户认证
user_config_dir=/etc/vsftpd_userconf
guest_enable=YES
guest_username=vsftpd
virtual_use_local_privs=YES
allow_anon_login=NO
chroot_local_user=YES
配置vsftpd使用MySQL进行用户认证。在`/etc/vsftpd/vsftpd.conf`中添加以下行:
auth_user_file=/etc/vsftpd/vsftpd_user.db
auth_group_file=/etc/vsftpd/vsftpd_group.db
user_list_file=/etc/vsftpd/user_list
tcp_wrappers=YES
创建数据库文件用于存储用户认证信息:
# mysql -u root -p
MariaDB [(none)]> CREATE DATABASE vsftpd_db;
MariaDB [(none)]> CREATE TABLE vsftpd_db.users (
-> user_name VARCHAR(50) NOT NULL,
-> password VARCHAR(50) NOT NULL,
-> home_dir VARCHAR(100) NOT NULL,
-> PRIMARY KEY (user_name)
-> );
退出MySQL客户端。
4. 创建虚拟用户并设置密码
现在,我们需要在数据库中创建虚拟用户,并为每个用户设置密码。
# mysql -u root -p
MariaDB [(none)]> USE vsftpd_db;
MariaDB [vsftpd_db]>> INSERT INTO users (user_name, password, home_dir) VALUES ('virtual_user1', 'password1', '/home/ftp/virtual_user1');
MariaDB [vsftpd_db]>> INSERT INTO users (user_name, password, home_dir) VALUES ('virtual_user2', 'password2', '/home/ftp/virtual_user2');
# 等等,为所有虚拟用户重复以上步骤
退出MySQL客户端。
5. 创建虚拟用户的FTP目录
为每个虚拟用户创建一个FTP目录,并设置正确的权限。
# mkdir -p /home/ftp/virtual_user1
# chown vsftpd:vsftpd /home/ftp/virtual_user1
# chmod 755 /home/ftp/virtual_user1
重复以上步骤为所有虚拟用户创建FTP目录。