您的位置:首页 > 其它

通过nfs与samba实现文件系统共享

2016-07-25 18:43 281 查看
nfs和samba都是我们比较常见的文件系统共享服务,nfs工作于系统内核之上,一般的系统并不需要安装此服务的程序,而且其工具组件nfs-utils也一般都是自带的,如果没有,通过软件包安装就好;而samba的话,服务端需要yum install samba,客户端则是samba-client。
然后在服务端,我们只需要修改nfs或samba的配置文件,将需要分享的路径和访问控制等信息写入配置文件,挂载的准备工作就做好了。






上面两图是nfs和samba的配置文件,nfs的配置文件开始是空的,我们只需要添加条目即可,而samba的配置,我主要修改的是图中[netlogon]共享名称下的信息,[netlogon]是文件中原有的类似配置示例的条目,开始时是被注释的,我去掉注释并在上面做了修改,就直接用了,自定义共享名称当然是可以的,我[netlogon]下定义的是/data/fpm-vhosts/web,也可以多家几个,定义成别的路径;[homes]和[printers]是定义访问用户的家目录及打印选项的,这里不用改。
samba的配置文件还提供的全局的访问控制



我基本没改,但interfaces和hosts allow开始时是被注释掉的,我启用了,并做了修改;由此可见,我这台主机ip是172.16.0.214,并允许172.16网段的客户机访问此共享文件系统。
此外,还有一些日志文件配置和安全级别的配置,可以改一下max log size,调整一下日志文件的滚动上限:


其他的都没必要改;

好,下面我们做一下总结及环境介绍:
nfs的配置文件为/etc/exports或/etc/exports.d/*,因为一开始都是空的,所以就直接在/etc/exports里加条目就好;
/PATH/TO/SOME_DIR clients1(options,.....)
ro:只读
rw:读写;
sync:同步;
async:异步;
root_squash:压缩root用户,一般指将其映射为nfsnobody;
no_root_squash:不压缩root用户;
all_squash:压缩所有用户;
anonuid and anongid:将压缩的用户映射为此处指定的用户;
图中我共享的是跟samba上一样的/data/fpm-vhosts/web路径及/data路径,为了方便实验,都设成了读写挂载及不压缩root用户。
注意:现实中不压缩root用户就表示访问你共享文件系统的用户,如果在客户端他自己的机器上用的是root用户,在你的文件系统中也是root,有着跟你的root一样的权限,多危险就不用多说了。
而samba的配置文件为/etc/samba/smb.conf,主要定义的地方是共享文件系统配置,也就是上文提到的“[]”里面加共享名称的地方
它的常用指令有:
comment:注释信息;
path:当前共享所映射的文件系统路径;
browseable:是否可浏览,指是否可被用户查看;
guest ok:是否允许来宾账号访问;
public:是否公开所有用户;
writable:是否可写;
write list:拥有写权限的用户列表;
用户名
@组名
+组名
当然,图中我设定的guest ok是yes的,允许匿名用户访问,如果不允许的话,就需要使用系统用户身份登录,但此处需注意的是:用户是那个用户,密码却是由samba自己管理的密码,命令是:smbpasswd
smbpasswd [options] USERNAME
-a:添加
-x:删除
-d:禁用
-e:启用
总之,我在172.16.0.214上已经做好了nfs和samba的分享且权限什么的都没问题,只要开启服务和端口,起码我的另一台作为客户端的主机172.16.0.215可以实现无阻力访问;
/data/fpm-vhosts/web是我在服务端搭建的lamp的跟路径,打算在其下放一个wordpress程序,客户端挂载之后可以访问;
/data路径打算让客户端挂载之后,让其做数据库的储存文件路径,samba中的共享名称为[mys]。
接下来就是在客户端挂载了;

/data路径:
nfs挂载之前先看看服务端分享了哪些文件系统路径是个好习惯:showmount -e 172.16.0.214;
得知/data路径已被分享后:mount -t nfs 172.16.0.214:/data /var/lib/mysql/;
这样就挂上了,之后安装上mariadb,它的存储文件的目录默认为 /var/lib/mysql/,只要授权之后就可以使用了。
samba中查看服务端共享的方法是:smbclient -L 172.16.0.214;
值得一提的是,samba还能像lftp一样进行交互式访问:smbclient //172.16.0.214/mys(这里只是举例,此次试验无需用到交互访问);
挂载的话:mount -t cifs //172.16.0.214/mys /var/lib/mysql/
注意:上述访问和挂载都是匿名的,如果挂载时以用户身份来完成的话,可以在后面跟上:
-o username=USERNAME,password=PASSWORD
用户与-o选项中指定用户直接产生映射关系,此时,访问挂载点,是以-o选项中的username指定的用户身份进行,与本地用户无关;

/data/fpm-vhosts/web路径:
首先,我的服务端与客户端两台主机上都搭建了lamp,并且都部署了wordpress。因为wordpress能通过windows上的浏览器来访问,很直观,所以方便对比;



这是我客户端之下自己的wordpress,叫jiangzhi's wordpress,可以看到,这台主机ip尾号是215;




在服务端部署的wordpress,叫jz's wordpress,测试上传图片和发送文章,上传的图片就是自己本页面,开始上传图片时就报错了,于是我根据提示修改了wp-content目录的属主属组都为apache,而且是递归修改(为了保险);之后图片上传成功,于是我将这句话写到文章中当内容;



文章上传成功,标题为:《世界,您好不好?》
最后在215上挂载之:mount -t nfs 172.16.0.214:/data/fpm-vhosts/web /var/www/html/;
重启httpd服务后,在浏览器上输入客户端(215)的地址
再看:



此时,不在是jiangzhi‘s wordpress了,而是nfs服务端的部署;
由于我权限放的比较松,所以samba上除了挂载命令以外,其他操作大同小异,总体来说,测试成功!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息