linux系统如何实现文件共享?
linux >>>>>>>>> linux or windows -------------利用linux中的 samba服务软件!!!
注: samba服务 默认共享的是 本地用户的家目录(/home/username)!!
实验测试环境:
利用虚拟机 desktop 和 server;
其中server作为服务端
为了方便分辨 :
更改主机名称为 shareserver(.westos.com) ip:172.25.254.223
hostnamectl set-hostname shareserver.westos.com #设置主机名
nm-connection-editor #利用图形界面设置IP
@ 给shareserver安装samba系列服务软件:(当然你得配置好你的yum源!!!)
@启动并查看状态:
@此时我们需要将真实存在的本地用户(eg:student,root等)添加到smb用户:
创建一个本地的asuka用户:
添加asuka用户到smb用户:(smbpasswd -a asuka):
通过pdbedit -L 来查看已经添加了的smb用户:
pdbedit -x asuka
删除添加过的smb用户!
@关闭防火墙(因为防火墙会阻拦smb服务):
@将Selinux调至 警告状态或者关闭:(当selinux开启且状态为enforcing时,登陆smb共享服务会报错!)
在客户端:shareclient (配置IP)
@安装smb客户端软件:
@匿名登陆查看:
此处需要输入密码时直接回车即可登陆!
@smb用户 asuka登陆查看:
@smb用户 asuka登陆并操作:
第一种共享方式:
注: (只能创建目录,或者上传文件,不能touch 文件!)
这种方式上传的文件应为客户端当前所在目录中含有的文件,否则系统会报错!
创建一个 haha目录:
可以看到 服务端家目录(/home/asuka)里也出现了 haha目录:
当我们上传不属于当前目录的文件时:(可以看到报错信息):
@第二种共享方式(挂载方式):(将共享的家目录挂载到客户端的mnt目录上):
这种方法是最有效的!
在客户端进入/mnt目录,建立5个file文件:
@在服务端家目录下查看变化:(客户端共享上传的file文件出现了)
相应的我们也可以删除文件:
#######smb用户的访问控制#########
实验背景(服务器:shareserver)
查看寻找smb的主配置文件:(/etc/samba/smb.conf)
@更改域名:
我们第一次登陆时可以发现域名为 WORKGROUP:
vim /etc/samba/smb.conf :(编写配置文件):
89行的 workgroup= 你的域名!(我的为 coolsing ):
不需要重启服务就可以看到变化:(域名变为了 我们设置的coolsing )
@设置smb用户白名单:(vim /etc/samba/smb.conf)
客户端shareclient(172.25.254.223被我们设置为白名单用户)
我们的服务端也安装了smb-client 登陆服务:(且不在白名单里面):
可以看到登陆失败了:
将服务端(172.25.254.223)加入白名单里:
可以看到223我们的服务端可以登陆smb系统了!
@设置黑名单(编辑配置文件):
设置客户端123为黑名单用户:
可以看到不能登陆了:
@使客户端访问服务端创建的目录【非默认目录(家目录)】:
(1)在服务端创建一个目录:
(2) 修改目录的安全上下文和smb服务的安全上下文保持一致(才可正常使用!)
『当selinux开启且为enforcing的情况时需要进行此项操作』
再逐层刷新安全上下文!
最后编辑配置文件:
在最后加入下面三行内容,其中:
322表示 coolsing目录
323表示目录的绝对路径
测试结果:(coolsing目录)
@共享系统目录:
编写格式与共享创建的目录相似:
当服务端selinux为enforcing状态时:
需要开启samba的 samba_export_all_ro 服务客户端才能登陆观察系统目录中的文件内容:
setsebool -P samba_export_all_ro on #开启smb只读服务
可以看到没有开启:
开启后:(可以观察/mnt系统目录下的hhhh文件了)
或者我们可以将selinux设置为permission状态就可以省去上面的操作了!
#####共享目录的功能设定#######
1.设定目录是否可以被浏览:
以 DIR为例,我们给后面加入 browseable=no 表示不让浏览(登陆查看会隐藏 DIR相关信息):
注:当时我们 smbclient //172.25.254.223/DIR -U asuka 登陆上还是可以看到的(这是正常的)
更改前:
更改后:(DIR信息隐藏了);当我们把 browseable改为=yes时就又可以查看了
2.设定目录是否可以写:(刚开始删除不允许!)
我们需要加入:(writeable=yes),并且需要给/coolsing目录加权限(777):
完成上述操作后可以看到可以删除文件了:
上传时:(writeable=no的话):
为yes的话:
3.设定指定用户可写:
指定student用户可写:(注:write list 和 writeable 相互冲突;所以得注释掉 writeable!!!)
而asuka用户不能删除掉:
@设定指定组用户可写:(表达方式有两种 ‘@’+用户名 或者 ‘+’ + 用户名)
在服务端将asuka用户的组改为student用户的组:(可以看到asuka也为student的组成员了)
实验删除:(可以删除了!)
当我们使用挂载的方式进行实验时:
还可以发现:(刚才利用asuka用户创建的yyyy目录 的 用户为 1001 组为 1001 ,这是因为客户端没有uid gid为1001的用户)
而在服务端查看:(uid =1001 >>>即 asuka用户!!!)
4.设定指定用户为超级用户(root)
加入327行,表示 asuka用户指定为root用户!:
指定完毕后,用asuka上传根目录下的(anaconda-ks.cfg文件)(当然我们得在此目录环境下登陆smb系统!):
利用挂载登陆的方式可以看到:(asuka上传的,显示出来的是root用户!)
5.smb的多用户挂载
@首先在客户端安装多用户挂载的软件:(cifs-utils)
@学会使用man命令来帮助我们使用软件!
查看我们smaba的版本:
@编写已知smb用户的认证文件:
vim /root/smbpass:(新建的一个文件)
@挂载DIR:
mount -o credentials=/root/smbpass,sec=ntlmssp,multiuser //172.25.254.223/DIR /mnt/
(/root/smbpass用来认证,采取加密方式为:ntlmssp,采用多用户挂载:multiuser)
@设置完毕后,当其他未经认证的用户是不能查看/mnt里的内容的:
新建一个hello用户:(客户端)
对hello认证后就可以查看/mnt目录下的内容了:
注当我们密码输入错误时需要重新认证:(输入:cifscreds clearall )
最后.smb的匿名访问(指定的目录)——————DIR为例
先编写328行内容:(允许guest用户访问)
再编写125行内容:(表示 guest用户的映射是非系统用户)
重启smb服务
进行实验:
可以看到成功了:
当我们没有编写时登陆是这个情况:(报错,拒绝!)
@在客户端匿名挂载:
当然前提是我们编写了上一步的配置文件才可匿名挂载:
否则:(报错如下)
OVER!!!