马哥教育面授21期
运维
vsftpd
MySQL
说明:本实验在两台CentOS主机上实现,一台做为FTP服务器,一台做数据库服务器
一、安装所需要包和包组:
-
在数据库服务器上安装包:
yum –y install mariadb-server mariadb-devel
systemctl start mariadb.service
systemctl enable mariadb -
在FTP服务器上安装包pam_mysql
centos7:无对应rpm包,需手动编译安装
•yum -y groupinstall "Development Tools"
•yum -y install mariadb-devel pam-devel vsftpd
•下载pam_mysql-0.7RC1.tar.gz
ftp://172.16.0.1/pub/Sources/sources/pam/
•tar xvfpam_mysql-0.7RC1.tar.gz
•cd pam_mysql-0.7RC1/
•./configure –with-mysql=/usr –with-pam=/usr –with-pam-mods-dir=/lib64/security
•make
•make install
二、在数据库服务器上创建虚拟用户账号
-
1.建立存储虚拟用户的数据库,示例创建为vsftpd数据库
mysql> CREATE DATABASE vsftpd;
mysql> SHOW DATABASES;
ftp服务和mysql不在同一主机:
mysql> GRANT SELECT ON vsftpd.* TO
vsftpd@'172.16.%.%' IDENTIFIED BY 'magedu';
ftp服务和mysql在同一主机:
mysql> GRANT SELECT ON vsftpd.* TO
vsftpd@localhost IDENTIFIED BY 'magedu';
mysql> GRANT SELECT ON vsftpd.* TO
vsftpd@'127.0.0.1' IDENTIFIED BY 'magedu';
mysql> FLUSH PRIVILEGES; -
2.准备相关表
mysql> USE vsftpd;
Mysql> SHOW TABLES;
mysql> CREATE TABLE users ( id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,name CHAR(50) BINARY NOT NULL,password CHAR(48) BINARY NOT NULL);
mysql>DESC users;
#mysql -uvsftpd -h 172.16.200.200 -pmagedu
mysql> SHOW DATABASES; -
3.添加测试的虚拟用户
根据需要添加所需要的用户,为了安全应该使用PASSWORD函数加密其密码后存储
mysql>DESC users;
mysql> INSERT INTO users(name,password) values(‘wang',password('magedu'));
mysql> INSERT INTO users(name,password) values(‘mage',password('magedu'));
mysql> SELECT * FROM users;
三、在FTP服务器上配置vsftpd服务
-
1.在FTP服务器上建立pam认证所需文件
#vi /etc/pam.d/vsftpd.mysql
添加如下两行
auth required pam_mysql.so user=vsftpd passwd=magedu host=mysqlserver db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
account required pam_mysql.so user=vsftpd passwd=magedu host=mysqlserver db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
注意:参考README文档,选择正确的加密方式crypt是加密方式,0表示不加密,1表示crypt(3)加密,2表示使用mysql password()函数加密,3表示md5加密,4表示sha1加密
配置字段说明
•auth 表示认证
•account 验证账号密码正常使用
•required 表示认证要通过
•pam_mysql.so模块是默认的相对路径,是相对/lib64/security/路径而言,也可以写绝对路径;后面为给此模块传递的参数
•user=vsftpd为登录mysql的用户
•passwd=mageedu 登录mysql的的密码
•host=localhost 在mysql中定义的允许连接的主机名或ip地址
•db=vsftpd 连接msyql的哪一个库
•table=users 连接库里的哪一个表
•usercolumn=name 当做用户名的字段
•passwdcolumn=password 当做用户名字段的密码
•crypt=2 密码的加密方式为mysql password()函数加密 -
2.建立相应用户和修改vsftpd配置文件,使其适应mysql认证
建立虚拟用户映射的系统用户及对应的目录
useradd -s /sbin/nologin -d /var/ftproot vuser
chmod 555 /var/ftproot centos7 需除去ftp根目录的写权限
mkdir /var/ftproot/{upload,pub}
setfacl –m u:vuser:rwx /var/ftproot/upload
确保/etc/vsftpd.conf中已经启用了以下选项
anonymous_enable=YES
添加下面两项
guest_enable=YES
guest_username=vuser
修改下面一项,原系统用户无法登录
pam_service_name=vsftpd.mysql
四、启动vsftpd服务
service vsftpd start;systemctl start vsftpd
chkconfig vsftpd on;systemctl enable vsftpd
查看端口开启情况
netstat -tnlp |grep :21
五、Selinux相关设置:在FTP服务器上执行
•restorecon -R /lib64/security
•setsebool -P ftpd_connect_db 1
•setsebool -P ftp_home_dir 1
•chcon -R -t public_content_rw_t /var/ftproot/
六、测试:利用FTP客户端工具,以虚拟用户登录验证结果
•tail /var/log/secure
七、在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 wangmage -
3、配置虚拟用户的访问权限
虚拟用户对vsftpd服务的访问权限是通过匿名用户的相关指令进行的。如果需要让用户wang具有上传文件的权限,可以修改/etc/vsftpd/vusers_config/wang文件,在里面添加如下选项并设置为YES即可,只读则设为NO
注意:需确保对应的映射用户对于文件系统有写权限
anon_upload_enable={YES|NO}
anon_mkdir_write_enable={YES|NO}
anon_other_write_enable={YES|NO}
总结:本次实验出现最多的问题是敲错字和漏做了步骤……
原创文章,作者:wangshuai,如若转载,请注明出处:http://www.178linux.com/64385
评论列表(1条)
文章实用性很强,很具有操作性