标签:自动挂载 手工 localhost 需要 包括 文件夹 sele text acl
说明:本实验在两台CentOS主机上实现,一台做为FTP服务器,一台做数据库服务器?在数据库服务器上安装包:
?Centos7:在数据库服务器上安装
yum –y install mariadb-server
systemctl start mariadb.service
systemctl enable mariadb
?Centos6:在数据库服务器上安装
yum –y install mysql-server
?在FTP服务器上安装vsftpd和pam_mysql包
centos6:pam_mysql由epel6的源中提供
yum install vsftpd 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 xvf pam_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.建立存储虚拟用户数据库和连接的数据库用户
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;
# ?1.在FTP服务器上建立pam认证所需文件
vi /etc/pam.d/vsftpd.mysql 添加如下两行
auth required pam_mysql.so user=vsftpdpasswd=magedu host=mysqlserver db=vsftpd table=usersusercolumn=name passwdcolumn=password crypt=2
account required pam_mysql.so user=vsftpdpasswd=magedu host=mysqlserver db=vsftpd table=usersusercolumn=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=magedu 登录mysql的的密码
?host=mysqlserver 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
service vsftpd start;systemctl start vsftpd
chkconfig vsftpd on;systemctl enable vsftpd
查看端口开启情况
netstat -tnlp |grep :21
?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/
?tail /var/log/secure
可使用autofs按需要挂载NFS共享,在空闲时自动卸载
?由autofs包提供
?系统管理器指定由/etc/auto.master自动挂载器守护进程控制的挂载点
?自动挂载监视器访问这些目录并按要求挂载文件系统
?文件系统在失活的指定间隔5分钟后会自动卸载
?为所有导出到网络中的NFS启用特殊匹配 -host 至“browse”
?参看帮助:man 5 autofs
?支持含通配符的目录名
?* server:/export/&
自动挂载依赖autofs服务
yum install autofs
主配置文件 /etc/auto.master
/dev/cdrom /misc/cd
vim /etc/auto.master
1 相对路径法
文件路径:/d1/d2/d3/nfsdir2
两部分
dirname /d1/d2/d3
basename nfsdir2
vim /etc/auto.master 只定义dirname(文件的路径名)
/d1/d2/d3 /etc/nfsmount(与定义basename文件对应)
vim /etc/nfsmount 只定义basename(路径的具体文件名)
nfsdir2 -fstype=nfs,vers=3 192.168.27.7:/app/nfs2
例子 /misc/cd虚拟目录实现自动挂载
vim /etc/auto.misc
cd -fstype=iso9660,ro :/dev/cdrom
总结:dirname和basename都不需要手工创建,启动autofs服务自动生成dirname,访问basename目录时自动生成这个目录
2 绝对路径法:直接匹配包括本地路径名称,不会影响本地目录结构(home目录下其它用户文件夹可见)
vim /etc/auto.master
/- /etc/wanghome
vim /etc/wanghome
/home/wang -fstype=nfs,rw 192.168.27.7:/data/wanghome home目录下的mage文件夹将不受影响
远程用户的家目录通过nfs服务共享
vim /etc/exports.d/nfs.exports
data/wanghome *(rw)
setfacl -m u:wang(uid 1000):rwx /data/wanghome
cp /etc/skel/.[^.]* /data/wanghome/
useradd -u 500 nfsuser -M 创建用户时不创建家目录
setfacl -m u:500(nfsuser):rwx /data/wanghome 指定uid授权
客户端测试
手工挂载方式:
mount 192.168.27.7:/data/wanghome /home/wang
su - wang(uid 1000)
su - mage(uid 500)
不同客户端创建帐号uid最好统一
autofs自动挂载方式:
vim /etc/auto.master
dirname=/home
/home /etc/wanghome 自动挂载方式:home目录下的文件将由/etc/wanghome文件挂载决定
vim /etc/wanghome
wang -fstype=nfs,rw 192.168.27.7:/data/wanghome
nfs服务:伪根方式将多个不同的文件夹组织成根目录
nfs服务器配置
yum install nfs-utils
mkdir /nfsroot/nfsdir{1,2,3} –pv 伪根目录
?
mkdir /app/data{1,2,3} –pv 存放数据目录
挂载:
mount –B /app/data1 /nfsroot/nfsdir1/
mount -B /app/data2 /nfsroot/nfsdir2/
mount –B /app/data3 /nfsroot/nfsdir3/
nfs服务默认是以nfsnobody身份运行的
setfacl -m u:nobody:rwx /app/data2
exportfs –r
exportfs -v
?
vim /etc/exports
/nfsroot *(fsid=0,ro,crossmnt)
/nfsroot/nfsdir1 *(ro)
/nfsroot/nfsdir2 192.168.64.103(rw) 除了192.168.64.103主机外 继承父目录的只读权限
/nfsroot/nfsdir3 *(rw)
systemctl restart nfs-server
?
客户端配置
只读:nfs服务设置的权限 拒绝访问:文件系统设置的权限
mkdir /mnt/nfs
mount 192.168.64.7:/ /mnt/nfs 写的是根,其实挂载的是 192.168.64.7:/nfsroot 伪根目录
![](http://i2.51cto.com/images/blog/201802/04/fd93a63616583f7063d30d30a26b1bdc.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
标签:自动挂载 手工 localhost 需要 包括 文件夹 sele text acl
原文地址:http://blog.51cto.com/11034229/2068773