1. 安装Vsftp
yum install -y vsftpd
2. 安装MariaDB
yum install -y mariadb mariadb-devel mariadb-server
systemctl restart mariadb
systemctl enable mariadb
netstat -npl|grep 3306
3. 为root账户设置密码
mysql_secure_installation //该命令会执行以下几个设置:
a)为root用户设置密码y
b)删除匿名账号y
c)取消root用户远程登录y
d)删除test库和对test库的访问权限y
e)刷新授权表使修改生效y
4. 建立一个数据库并设置相应权限。
[root@00 ~]# mysql -u root -p
MariaDB [(none)]> create database ftpdb;
MariaDB [(none)]> use ftpdb;
MariaDB [ftpdb]> create table user(name varchar(20),passwd varchar(48));
MariaDB [ftpdb]> insert into user(name,passwd) values ("user123",password("123")),("user456",password("456"));
MariaDB [ftpdb]> select * from user;
+---------+-------------------------------------------+
| name | password |
+---------+-------------------------------------------+
| user123 | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |
| user456 | *531E182E2F72080AB0740FE2F2D689DBE0146E04 |
+---------+-------------------------------------------+
MariaDB [ftpdb]> grant select on ftpdb.user to ftpuser@localhost identified by "123456";
MariaDB [ftpdb]> flush privileges;
5. 配置PAM认证。
yum install -y automake pam pam-devel openssl-devel
yum groupinstall -y ‘development tools‘
6. 编译安装pam_mysql包
wget http://prdownloads.sourceforge.net/pam-mysql/pam_mysql-0.7RC1.tar.gz
tar -xzvf pam_mysql-0.7RC1.tar.gz
cd pam_mysql-0.7RC1/
./configure --with-mysql=/usr --with-openssl=/usr --with-pam=/usr --with-pam-mods-dir=/lib64/security
make && make install
ls /lib64/security/ | grep mysql
pam_mysql.la
pam_mysql.so
7. 建立PAM认证信息
vim /etc/pam.d/vsftpd,注释其他内容,写入如下两行:
auth required /lib64/security/pam_mysql.so user=ftpuser passwd=123456 host=localhost db=ftpdb table=user usercolumn=name passwdcolumn=passwd crypt=2
account required /lib64/security/pam_mysql.so user=ftpuser passwd=123456 host=localhost db=ftpdb table=user usercolumn=name passwdcolumn=passwd crypt=2
crypt=0: 明文密码
crypt=1: 使用crpyt()函数加密
crypt=2: 使用MYSQL中的password()函数加密
crypt=3:使用md5的散列方式
8. 建立本地虚拟用户
useradd -s /sbin/nologin ftpuser
9. 修改vsftpd.conf文件
vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO #不允许匿名用户登录
local_enable=YES #允许本地用户登录
write_enable=YES #写入权限
local_umask=077 #本地用户创建文件的umask值
anon_upload_enable=NO #不允许匿名用户上传
anon_mkdir_write_enable=NO #不允许匿名用户创建目录
dirmessage_enable=YES #当用户进入某个目录时,会显示该目录需要注意的内容,显示的档案默认是”.message”
xferlog_enable=YES # 表明将记录的上传下载情况写在xferlog_file所指定的文件中
connect_from_port_20=YES #主动模式数据传输接口
chown_uploads=YES #如果启用,所有匿名上传文件的所有权将更改为chown_username中指定的用户
chown_username=ftpuser
xferlog_file=/var/log/xferlog
xferlog_std_format=YES #传输日志文件将以标准 xferlog 的格式书写
idle_session_timeout=600 #空闲会话中断时间
data_connection_timeout=120 #表明数据连接超时时间为120秒
ftpd_banner=welcome #首次登录提示信息
chroot_local_user=YES #把所有用户限制在主目录
chroot_list_enable=NO #吧所有用户限制在主目录,不允许chroot_list中的例外
#chroot_list_file=/etc/vsftpd/chroot_list
listen=YES #启用监听模式
listen_ipv6=NO #启用IPv6监听模式,与listen互斥
pam_service_name=vsftpd #PAM模块提供的认证服务所使用的配置文件名
userlist_enable=YES #禁止userlist_file指定的文件中的用户名登录
tcp_wrappers=YES #主机访问控制
allow_writeable_chroot=YES
anon_other_write_enable=NO #不允许匿名用户修改
anon_world_readable_only=NO #不允许匿名用户下载
delete_failed_uploads=TRUE #将上传失败的文件删除
dirlist_enable=YES #允许显示目录列表
download_enable=YES #允许下载
local_root=/home/ftpuser #FTP根目录
anon_max_rate=1048576 #匿名用户最大传输速率(字节/秒),0为无限制
local_max_rate=1048576 #本地用户最大传输速率(字节/秒),0为无限制
anon_umask=022 #匿名用户创建文件的umask值
max_login_fails=3 #3次登录失败终止会话
max_per_ip=10 #限制客户端的并发连接数
pasv_enable=YES #开启被动模式
pasv_min_port=24500 #被动模式最小端口
pasv_max_port=24600 #被动模式最大端口
listen_address=192.168.200.101 #监听地址
guest_enable=YES#开启虚拟用户
virtual_use_local_privs=YES
#当virtual_use_local_privs=YES,write_enable=YES时,虚拟用户具有写权限
guest_username=ftpuser #虚拟用户对应系统用户
10. 启动vsftpd服务。
systemctl start vsftpd
systemctl enable vsftpd