安装所需要的程序
1、安装 mysql 和 pam_mysql:
$ yum -y install vsftpd mysql-server mysql-devel pam_mysql
注意:pam_mysql 由 epel 源提供。
创建虚拟用户账号
1、首先请确保 mysql 服务已经正常启动。而后,按需要建立存储虚拟用户的数据库即可,这里将其创建为 vsftpd 数据库。
mysql> create database vsftpd;
mysql> grant select on vsftpd.* to vsftpd@localhost identified by 'zze.xyz';
mysql> grant select on vsftpd.* to vsftpd@127.0.0.1 identified by 'zze.xyz';
mysql> flush privileges;
mysql> use vsftpd;
mysql> create table users (
-> id int AUTO_INCREMENT NOT NULL,
-> name char(20) binary NOT NULL,
-> password char(48) binary NOT NULL,
-> primary key(id)
-> );
2、添加测试的虚拟用户,需要说明的是,这里为了安全起见将密码使用 PASSWORD
函数加密后存储。
mysql> insert into users(name,password) values('tom',password('tom'));
mysql> insert into users(name,password) values('jerry',password('jerry'));
配置 vsftpd
1、建立 pam 认证所需文件 /etc/pam.d/vsftpd.mysql
,内容如下:
auth required /lib64/security/pam_mysql.so user=vsftpd passwd=zze.xyz host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
account required /lib64/security/pam_mysql.so user=vsftpd passwd=zze.xyz host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
其中
crypt
参数的值需要视虚拟用户密码在 mysql 中存储的方式而定,如果存储的是明文,则其值设为0
,如果是使用PASSWORD
函数加密存储,则其值需要设为2
,具体可查看 pam_mysql 的README
文档,文档位置可通过rpm -ql pam_mysql
查看。
2、建立虚拟用户映射的系统用户及对应的目录:
$ useradd -s /sbin/nologin -d /var/ftproot vuser
$ chmod go+rx /var/ftproot
3、请确保 /etc/vsftpd.conf
中启用参数如下:
anonymous_enable=YES
local_enable=YES
write_enable=YES
anon_upload_enable=NO
anon_mkdir_write_enable=NO
chroot_local_user=YES
# 额外添加下面参数
guest_enable=YES
guest_username=vuser
# 修改此参数
pam_service_name=vsftpd.mysql
启动 vsftpd 服务
1、直接执行下面命令启动 vsftpd 服务:
$ service vsftpd start
$ #chkconfig vsftpd on
2、检查 21 端口是否处于监听状态:
$ ss -tnlp | grep :21
LISTEN 0 32 *:21 *:* users:(("vsftpd",8983,3))
3、使用 ftp 客户端连接 vsftpd 服务,测试虚拟用户登录:
$ ftp 10.0.1.201
Connected to 10.0.1.201.
220 (vsFTPd 2.2.2)
Name (10.0.1.201:zhangzhongen): tom
331 Please specify the password.
Password:
230 Login successful.
ftp>
配置虚拟用户具有不同的访问权限
vsftpd 可以在配置文件目录中为每个用户提供单独的配置文件以定义其 ftp 服务访问权限,每个虚拟用户的配置文件名同虚拟用户的用户名。配置文件目录可以是任意未使用目录,只需要在 vsftpd.conf
指定其路径及名称即可。
1、配置 vsftpd 为虚拟用户使用配置文件目录:
$ vim /etc/vsftpd/vsftpd.conf
...
# 添加如下选项
user_config_dir=/etc/vsftpd/vusers_config
2、创建所需要目录,并为虚拟用户提供配置文件:
$ mkdir /etc/vsftpd/vusers_config/
$ cd /etc/vsftpd/vusers_config/
$ touch tom jerry
3、配置虚拟用户的访问权限,虚拟用户对 vsftpd 服务的访问权限是通过匿名用户的相关指令进行的。比如,如果需要设定 tom 用户上传文件、创建目录、删除文件的权限,可以修改 /etc/vsftpd/vusers_config/tom
文件,在里面添加如下选项即可。
anon_upload_enable={YES|NO}
anon_mkdir_write_enable={YES|NO}
anon_other_write_enable={YES|NO}
评论区