萌新的linux之旅25
来源:互联网 发布:vmware虚拟机备份软件 编辑:程序博客网 时间:2024/05/16 11:57
samba 网络文件系统(存储分离)
简介
Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。
yum install samba samba-common samba-client -y 安装samba
samba在TCP,UDP上的端口都打开
samba可以挂载,可以运用操作,和apache不一样,apache只是文件传输,而samba可以共享文件,可以操作运用共享文件
/etc/samba/smb.conf samba的主配置文件
可以通过修改里面的配置信息,来实现一些我们需要的功能,不过修改后得重启smb服务才能生效
例如,在samba里建立两个共享目录
vim /etc/samba/smb.conf
然后添加用户
[root@localhost ~]# smbpasswd -a student 添加用户,前提是这个用户是在本机真实存在的用户
New SMB password:
Retype new SMB password:
Added user student.
pdbedit -L ##查看用户信息
关闭selinux,不然无法查看
smbclient -L //172.25.254.209 -U student 查看信息
smbclient //172.25.254.209/DATA -U student 以student用户身份登陆/DATA 目录
在另一台主机上直接挂载
mount -o username=student,password=student //172.25.254.209/student /mnt
如果df发现挂载上了,这样,哪怕原来的服务器损坏了,也还可以使用,这就实现了存储分离,也可以登陆使用,不需要挂载
可以开启selinux ,不过得打开相应的selinux权限才可以访问,为了实验方便,建议关闭selinux,因为selinux开启时,samba服务因为安全上下文不符合,导致文件无法查看。而且系统级目录不能随意更改安全上下文,所以要么修改布尔值,要么关闭selinux。
setsebool -P samba_enable_home_dirs on 打开selinux上的samba服务
setsebool -P samba_export_all_ro on 打开samba服务的读功能
samba是服务,用cifs协议
samba_enable_home_dirs on 只是打开samba服务
需要开启samba_export_all_ro 开启后/westos才能查看
给DATA目录添加设定
browseable = no
是否使你的共享在客户端发现时被发现,no 隐藏
guest ok = yes
是否可以让匿名用户访问,默认值是no,得手动开启
把无身份的bad user映射成 guest匿名用户
map to guest = bad user
修改完重启服务生效
用匿名用户连接
[root@foundation9 ~]# mount -o username=guest //172.25.254.209/DATA /mnt
Password for guest@//172.25.254.209/DATA:
打开/etc/fstab,文件类型是cifs
//172.25.254.209/DATA /mnt cifs defaults,username=guest,password=”” 0 0
保存退出后,mount -a 就直接可以挂上了
writable = yes 是否对文件内部可写
如果查看时出问题,先看selinux是否关闭, 系统级的目录只能改布尔值,不能改上下文
samba_export_all_rw 开启
restorecon -RvvF
再看权限是否允许,用student登陆测试,所以文件的使用者student的权限要给
可以直接给777
chmod 777 /westos/
/mnt 本来就是777
下来才是配置文件的写入问题 添加writable = yes
进入smb.conf 之后,可以man smb.conf 查看一些指令帮助
进入输入help查看系统命令
登陆进去没有一些命令,但挂载都有
新建用户lee
将lee添加到smb中
首先设定writadble = no 关闭对所有可写,然后单独给定权限
write list = student
指定用户可写student
+student | @student 用户组
将lee添加到student的附属组
用哪个身份挂载建立的文件就是谁的
admin users = lee ,lee建立的文件所属用户root
挂载之后在挂载的文件中建立文件,查看文件的属性,是root用户lee组
yum install cifs-utils -y 安装这个软件,可以管理登陆访问的权限
man mount.cifs 查看这个软件的帮助
[root@foundation9 /]# vim /root/smbpassword ##指定认证密码文件
username=lee
password=lee
chmod 600 /root/smbpassword
挂载
mount -o credentials=/root/smbpassword,multiuser,sec=ntlmssp //172.25.254.209/CONFIG /mnt/
此时,kiosk用户就无法查看挂载的/mnt了,需要认证才可以进入
认证方法: cifscreds
Usage:
cifscreds add [-u username] [-d] < host|domain >
cifscreds clear [-u username] [-d] < host|domain >
cifscreds clearall
cifscreds update [-u username] [-d] < host|domain >
直接输入指令就是查看基本的帮助
cifscreds add -u lee 172.25.254.209 ##以lee登陆
在其中建立文件,这里的文件的建立就按lee的相应配置来
client端: touch /mnt/tes
在client端看的时候,文件的所属是kiosk,即客户端的用户,但是实际并不是
在刚刚对CONFIG的设定,新建立的文件的权限在server端查看:
[root@smb_server ~]# ll /mnt/tes
-rw-r–r–. 1 root lee 0 Aug 14 23:43 /mnt/tes
这个目录共享可用的用户
valid users = student
@student | +student 用户组
修改时注释掉匿名用户
发现,只有用student用户可以登陆,lee就会被拒绝
变成 +student之后,因为已经设置过lee是student组,所以lee又可以登陆了
samba主要针对windows客户端与linux客户端
linux与linux客户端用NFS
查看samba
1.可以挂载用文件系统看
2.用登陆看
3.用本地看
再次强调,本地chmod设置的权限是针对本地用户的
哪怕就是别人远程登陆共享,权限也是按每个服务器自己的,跟主机chmod设置的没关系
NFS
NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。
安装yum install nfs-utils -y
systemctl start nfs 开启服务
systemctl enable nfs-server 开机自启nfs-server
关闭防火墙
查看共享目录,这是里面是空的
[root@smb_server ~]# showmount -e 172.25.254.209
Export list for 172.25.254.209:
创建共享目录及文件
mkdir /westosshare
touch /westosshare/file{1..5}
编辑文件/etc/exports配置
man 5 exports查看文件的编辑格式,这个比samba要简单很多
还可以使用正则表达式书写
/westosshare 172.25.254.9(sync) 172.25.254.110(ro)
sync 数据同步 只给172.25.254.9所有权限 给172.25.254.110只读的权限
修改完千万不能重启服务,重启服务的话,会自动重新读取数据,对比两边是否数据同步,这个过程非常缓慢,浪费大量的时间。
可以用exportfs -rv 刷新 (显示v刷新r)
在172.25.254.9进行远程挂载:
mount 172.25.254.209:/westosshare /mnt/
用mount | df 可以看见挂载的相应信息
用172.25.254.209本机去mount也会失败,因为没有权限
[root@smb_server ~]# mount 172.25.254.209:/westosshare /mnt/
mount.nfs: access denied by server while mounting 172.25.254.209:/westosshare
showmount -e 172.25.254.209都可以查看209共享的目录
再次编辑/etc/exports
/westosshare 172.25.254.9(sync) 172.25.254.209(rw,sync,anonuid=1000,anongid=1001)
给209添加读写,数据同步,匿名用户创建时文件的uid是1000,gid是1001
no_root_squash 写的时候以root身份操作,出来的文件所属用户所属组都是root
存储分离
一台服务器损坏
另一台还可以使用损坏的服务器的数据
例如在/etc/fstab里面写
172.25.254.209:/westosshare /home nfs defaults 0 0
重新登陆之后进去就直接挂载到/home里,也可以直接操作
但是,这样并不合理,自己不用的时候,依然在挂载占用服务器内存
所以得解决这个问题,在客户端上闲置时自动卸载,使用的时候在挂载
autonfs 只支持nfs协议
安装yum install autofs -y
systemctl start autofs.service
开启之后会自动生成一个/net文件
进入后ls没有东西
cd 172.25.254.209 可以直接进入172.25.254.209查看共享的文件
但是出来后df发现还是有挂载,这是因为这个服务默认休眠时间是300秒
所以可以修改他的配置文件
/etc/autofs.conf , 也可能是 /etc/sysconfig/autofs
发现里面timeout = 300 单位为秒
将他修改为3
出来之后,等待三秒
df挂载点就取消了 (注,df也会触发使用挂载,所以出来等待三秒再df)
让客户端自己直接进入共享的家目录,进自己的家目录,就直接是共享。
比如业务服务器,正常写数据,但是写的,都是用户自己的用户目录都是直接的共享目录,这样即使损坏,也没有任何影响
首先要再主服务器编辑可以共享的目录
这里共享两个用户目录
[root@smb_server /]# cp -rp /home/student/ /westosshare/
[root@smb_server /]# cp -rp /home/lee/ /westosshare/
编辑/etc/exports,
/westosshare/student 172.25.254.0/24(rw,sync,anonuid=1000,anongid=1000)
/westosshare/lee 172.25.254.0/24(rw,sync,anonuid=1001,anongid=1001)
配置好后exportfs -rv 刷新
下面是client端,即相当于业务服务器
编辑/etc/auto.master,是编辑它的存放目录
最终挂载点的上一层 /etc/auto.nfs 指定配置文件,这个是自己编写的
/home /etc/auto.nfs ##名称随意
创建/etc/auto.nfs
编辑/etc/auto.nfs
* … /& &后面接着就是*的内容
* 172.25.254.209:/westosshare/& ##这里前面是任意匹配填写,后面的&是替换前面输入的,即*写了什么,它就是什么
或者单独的话
student 172.25.254.209/westosshare/student
这里选择*的写法
重启autofs
在客户端student用户下写的文件就直接同步server端了
部署服务时,一定要搞清你的安装源,和你的版本
yum history 有update更新时,一定要查看你的版本
版本兼容性一定要考虑
- 萌新的linux之旅25
- 萌新的linux之旅1
- 萌新的linux之旅2
- 萌新的linux之旅3
- 萌新的linux之旅5
- 萌新的linux之旅
- 萌新的linux之旅7
- 萌新的linux之旅8
- 萌新的linux之旅9
- 萌新的linux之旅11
- 萌新的linux之旅10
- 萌新的linux之旅13
- 萌新的linux之旅14
- 萌新的linux之旅12
- 萌新的linux之旅15
- 萌新的linux之旅16
- 萌新的linux之旅17
- 萌新的linux之旅 find
- HDU 6153
- 树的邻接表储存与遍历,给自己留个成长记录吧
- Jobdu1113 二叉树
- listener.ora/sqlnet.ora/tnsnames.ora配置文件详解
- Linux 修改环境变量
- 萌新的linux之旅25
- IPMI
- codeforces 850C dfs
- markdown实现首行缩进
- 475. Heaters
- win8系统安装.net Framework3.5
- JavaScript是一门怎样的语言
- Vertex Cover
- [Java]一个简单的对象池