网络文件共享服务

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网络文件共享服务相关的知识,希望对你有一定的参考价值。

说明:本实验在两台CentOS主机上实现,一台做为FTP服务器,一台做数据库服务器

实验:实现基于mysql验证的vsftpd虚拟用户

一、安装所需要包和包组:

?在数据库服务器上安装包:
?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
[email protected]‘172.16.%.%‘ IDENTIFIED BY ‘magedu‘;
?ftp服务和mysql在同一主机:
mysql> GRANT SELECT ON vsftpd.* TO
[email protected] IDENTIFIED BY ‘magedu‘;
mysql> GRANT SELECT ON vsftpd.* TO
[email protected]‘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=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

?四、启动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

自动挂载

可使用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服务共享

远程用户的家目录通过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=)

以上是关于网络文件共享服务的主要内容,如果未能解决你的问题,请参考以下文章

系统安全——Windows中的共享文件和文件服务器

2-7.访问网络文件共享服务

linux网络文件共享服务的实现

访问网络文件共享服务

C 中的共享内存代码片段

企业级NFS网络文件共享服务