Loading... ## 前言 ## 搭建的环境为centos 6/7 需要的软件包有: - CentOS 6: > yum install vsftpd mysql-server mysql-devel pam_mysql -y **解释** pam_mysql:为vsftp提供pam认证库 - CentOS 7: > yum install vsftpd mariadb-server mariadb-devel pam-devel -y **解释** pam_devel:由于CentOS 7中没有pam_mysql这个包,我们需要编译这个包,需要用到pam_devel 一:CentOS 6的实现 ----------- ### 1.创建ftp的系统用户 ~]# useradd -s /sbin/nologin -d /opt/ftproot ftpuser 创建一个用户ftpuser,删除用户家目录的所有文件,因为里面的文件都不需要 ~]# rm -rf /opt/ftproot/* ### 2.数据库的配置 启动数据库 ~]# systemctl start mysql 数据进行安全初始化,见下文第四节,数据库的安全初始化 <div class="preview"> <div class="post-inser post box-shadow-wrap-normal"> <a href="https://blog.beijixs.cn/archives/25/" target="_blank" class="post_inser_a no-external-link no-underline-link"> <div class="inner-image bg" style="background-image: url(https://blog.beijixs.cn/usr/uploads/2019/09/20190914.png);background-size: cover;"></div> <div class="inner-content" > <p class="inser-title">CentOS 环境安装Maria DB,二进制展开方式安装</p> <div class="inster-summary text-muted"> 前言系统:CentOS 6 (CentOS 7系统在安装的时候已经提供Maria DB)Maria DB版本:5.... </div> </div> </a> <!-- .inner-content #####--> </div> <!-- .post-inser ####--> </div> 连接数据库 ~]# mysql -uroot -p 创建ftp要使用的数据库 mysql> create database vsftpd character set=utf8; 创建表 mysql> use vsftpd mysql> create table users (id int not null auto_increment,name char(11) binary not null,password char(48) binary not null,primary key(id)); 插入数据,添加用户 mysql> insert into users (name,password) values ('user1',password('123456')),('user2',password('456789')); 新建mysql用户并授权 mysql> create user 'vsftpd'@'127.0.0.1' identified by '123456789'; mysql> grant select on vsftpd.* to 'vftpd'@'127.0.0.1'; mysql> flush privileges; ---------- 新建pam认证配置文件 ~]# vim /etc/pam.d/vsftpd.my 键入以下内容 auth required /lib64/security/pam_mysql.so user=vsftpd passwd=123456789 host=127.0.0.1 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2 account required /lib64/security/pam_mysql.so user=vsftpd passwd=123456789 host=127.0.0.1 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2 #user:连接数据库的用户 #passwd:用户的密码 #host:mysql的ip地址 #db:数据库 #table:表 #usercloumn:数据表中定义用户名的字段 #passwdcloumn:数据表中定义密码的字段 #crypt:2表示加密传输,0表示明文传输 :wq保存 ### 3.修改vsftpd的配置文件 这里我给出一个较全的配置文件(主动连接模式) > anonymous_enable=NO > anon_upload_enable=NO > anon_mkdir_write_enable=NO > anon_other_write_enable=NO > \# 禁止匿名用户登录、上传、写入、删除 > local_enable=YES > \# 允许本地用户登录 > write_enable=YES > \# 允许本地写权限 > local_umask=022 > \# 用户操作数据的默认掩码 > dirmessage_enable=YES > \# 是否激活目录欢迎信息功能,欢迎信息保存再访问目录下的.message文件中 > xferlog_enable=YES > \# 是否让系统自动维护维护上传/下载的日志文件,默认日志文件再/var/log/vsftpd.log > connect_from_port_20=YES > \# 是否设置ftp启用ftp数据端口的连接请求(主动模式需要打开,被动必须关闭) > xferlog_std_format=YES > \# 将日志设置为标准的format格式 > listen=NO > \# 是否允许监听,如果设置为YES,有vsftpd自己监听和处理ipv4端口的连接请求 > listen_ipv6=YES > \# 是否支持ipv6,设置YES表示ipv4/ipv6都监听 > pam_service_name=vsftpd.my > \# 设置pam认证配置文件的文件名,上面我们创建的配置文件为vsftpd.my > userlist_enable=YES > \# 是否允许ftpusers文件中的用户登录ftp服务器 > tcp_wrappers=YES > \# 是否使用tcp_wrappers作为主机访问控制方式 > user_config_dir=/etc/vsftpd/vconf > \# 虚拟用户的配置文件路径 > allow_writeable_chroot=YES > \# 用户对主目录有其写权限,非常重要,且必须配置 > guest_username=ftpadmin > guest_enable=YES > chroot_local_user=YES ### 4.为单个用户添加配置文件并重启服务 ~]# mkidr /etc/vsftpd/vconf ~]# cd /etc/vsftpd/vconf ~]# vim user1 键入以下内容,给予user1用户写上传权限,并限制user1的home文件夹中 local_root=/opt/ftproot/user1 #限制用户在user1目录下,当然,要确保文件夹存在且属于ftpadmin用户 anon_upload_enable=YES #允许上传 anon_mkdir_write_enable=YES #允许创建目录 anon_other_write_enable=YES #允许删除文件 给user2提供配置文件 ~]# vim user2 local_root=/opt/ftproot/user2 anon_mkdir_write_enable=YES #允许创建目录 重启服务 ~]# systemctl restart vsftpd.service ## 二:CentOS 7的实现 ### 1.安装前言提到的软件包 如果没有开发工具包还需要安装开发包组 ~]# yum groupinstall "Development Tools" -y 下载pam_mysql的源码,进行编译安装 ~]# wget http://www.huzs.net/soft/vsftpd/pam_mysql-0.7RC1.tar.gz ~]# tar xvf pam_mysql-0.7RC1.tar.gz && cd pam_mysql-0.7RC1 ~]# ./configure --with-openssl --with-pam-mods-dir=/usr/lib64/security ~]# make && make install ### 2.基于CentOS 6实现的方法,修改vsftpd.my 修改后的内容如下: auth required /usr/lib64/security/pam_mysql.so user=vsftpd passwd=123456789 host=127.0.0.1 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2 account required /usr/lib64/security/pam_mysql.so user=vsftpd passwd=123456789 host=127.0.0.1 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2 <div class="tip inlineBlock warning"> 主要是修改“/usr/lib64/security/pam_mysql.so”,修改为so文件的实际路径 6/7的区别就是7需要自己编译pam_mysql.so动态库文件 </div> ### 3.重启服务 ~]# systemctl restart vsftpd.service ------------ <center>END</center> ------------ 最后修改:2019 年 09 月 30 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 0 如果觉得我的文章对你有用,请随意赞赏
1 条评论
叼茂SEO.bfbikes.com