Linux--Samba文件共享服务

Linux下Samba文件共享服务的部署

SMB(Server Messages Block,服务器消息块)
SMB服务器消息协议由微软公司和英特尔公司共同制定,为了解决局域网内的文件或打印机等资源的共享问题,使多个主机之间共享文件变得简单。
Samba
为了解决Linux系统与为Windows系统之间的文件共享问题,基于SMB协议开发出了SMBServer服务程序。这是一款开源的文件共享软件,经过简单配置就能够实现Linux系统与window系统之间的文件共享系统。
CIFS(Common Internet File System)通用网络文件系统
cifs是公共的或开放的SMB协议版本。它使程序可以访问远程Internet计算机上的文件并要求此计算机提供服务。
CIFS使用客户/服务器模式。客户程序请求远在服务器上的服务器程序为它提供服务。服务器获得请求并返回响应。像SMB协议一样,CIFS在高层运行,而不像TCP/IP协议那样运行在底层。CIFS可以看做是应用程序协议如文件传输协议和超文本传输协议的一个实现。

CIFS 可以达到以下功能:
1)访问服务器本地文件并读写这些文件
2)与其它用户一起共享一些文件块
3)在断线时自动恢复与网络的连接
4)使用统一码(Unicode)文件名:文件名可以使用任何字符集,而不局限于为英语或西欧语言设计的字符集。

1.服务的安装部署以及添加samba用户

服务端:【linux 172.25.254.100】
客户端:【linux 172.25.254.200】

1.1安装服务

samba服务端安装:

samba.x86_64 与windows机器相互操作的服务器和客户端软件
samba-client.x86_64 Samba客户程序(客户端,服务端都得有)
samba-common.x86_64 Samba服务器和客户端都使用的文件

 [root@server ~]#  yum install samba.x86_64 -y
 [root@server ~]#  yum install samba-client.x86_64  -y
 [root@server ~]#  yum install samba-common.x86_64 -y
 启动 smb 服务
 [root@server ~]# systemctl start smb
 [root@server ~]# systemctl enable smb
 关闭防火墙
 [root@server ~]# systemctl stop firewalld  
客户端:
在samba客户端安装:
 [root@client ~]# yum install samba-client.x86_64 -y
 安装完成,通过 smbclient 管理命令对 samba 客户端来进行查看
 [root@client ~]# smbclient -L //172.25.254.100
  以匿名用户身份查看 samba 服务器上可用的共享服务
操作如下:

在这里插入图片描述

1.2 服务端为samba服务添加用户(必须为服务端本地存在的用户)

服务端使用 smbpasswd 命令为系统用户设置 Samba 服务程序的密码
 [root@server ~]# smbpasswd -a student   #将系统用户 student 添加为 smb 用户
 New SMB password:                       #设定用户密
 Retype new SMB password:                #再次输入密码
 Added user smbuser.                     #添加成功

 可以通过 pdbedit 来管理 Samba 用户数据库
 [root@server ~]# pdbedit 
                -L 列出账户列表
                -Lv 列出账户详细信息的列表

 在客户端执行:
 [root@client ~]# smbclient -L //172.25.254.100 -U student
                 以 student 身份对 samba 服务器上可用的共享服务进行查看
操作如下:

服务端添加samba用户:
在这里插入图片描述
客户端查看:
smbclient -L //172.25.254.100 -U student

在这里插入图片描述

2.samba服务的访问操作管理

2.1 samba客户端访问共享资源

 [root@client ~]# smbclient //172.25.254.100/haha -U haha
 访问 samba 用户默认访问的家目录
操作如下:

在这里插入图片描述

可以访问,但无法进行查看,执行 ls 发现不被允许
这是因为服务端 SELinux 的问题
在服务端进行对该服务的允许:

 [root@server ~]# getsebool -a | grep samba
                #查看该服务的sebool值
 [root@server ~]# setsebool -P samba_enable_home_dirs on
                #让selinux 允许用户访问家目录
 然后在smb客户端进行查看访问
操作如下:

在这里插入图片描述

客户端进行查看:

在这里插入图片描述

2.2通过挂载进行共享资源的操作

登陆后,可以进行上传下载命令,能进行删除,创建等命令,输入?查看可以执行的命令
但是
登陆后上传时,不能切换目录,只能上传登录前客户端所在目录的文件,下载也同样只能下载到当前目录局限性太大,可以通过挂载对共享目录进行使用

在客户端执行 smbclient -L //172.25.151.150 -U smbuser
可看到smaba 共享目录类型为 disk ,类型为硬盘
可对其进行挂载后应用

操作如下:

在这里插入图片描述
在这里插入图片描述

在客户端挂载:
[root@client ~]# mount //172.25.254.100/haha /mnt/ -o username=haha,password=redhat
将默认服务端共享目录 smbuser 挂载到客户端 /mnt/ 下
然后对其进行操作新建文件,上传远程文件等操作
想要开机自动挂载
 可以编写/etc/fstab 文件(必须保证 samba 服务端的服务开启,否则将会无法开机)
 [root@client ~]# vim /etc/fstab
 内容如下:

 //172.25.254.100/haha   /mnt   cifs   defaults,username=haha,password=redhat 0  0
     执行开机自动挂载

重启后成功

操作如下:
在这里插入图片描述
vim /etc/fstab
在这里插入图片描述

2.3 限制用户访问

在 samba 服务端编辑配置文件,限定访问 samba 服务的用户;
关于配置文件,可以将 /etc/samba/smb.conf.example的内容复制到/etc/samba/smb.conf下;

 编辑/etc/samba/smb.conf
 [root@server ~]# vim /etc/samba/smb.conf
 内容如下
 第 84 行 workgroup = Server #将工作组改为 Server
 第 96 行添加用户访问黑/白名单
 96          hosts allow = 172.25.254.100
            #允许172.25.254.100 主机进行访问,其他主机不被允许
 98;        hosts deny = 172.25.254.100
            #拒绝172.25.254.100 主机进行访问,其余主机可以访问

 编辑完成重启服务

操作如下:
在这里插入图片描述
在这里插入图片描述
客户端无法访问:
在这里插入图片描述

2.4 指定samba共享目录

2.4.1 新建共享目录
 [root@server ~]# mkdir /smbshare     #作为smb 的共享目录
 并编辑主配置文件/etc/samba/smb.conf
 在最后添加如下:
 322         [DIR]                    #指定共享目录
 323         comment = smbsharedir    #注释
 324         path = /smbshare         #路径

 重启服务
在客户端执行
 [root@client ~]# smbclient -L //172.25.254.200
 可以查看到共享的目录
 此时 /smbshare 可以被访问,但无法被查看,需要修改selinux安全上下文
 [root@server ~]# semanage fcontext -a -t samba_share_t '/smbshare(/.*)?'
                # 将/smbshare 的安全上下文修改为 samba_share_t
 [root@server ~]# restorecon  -Fvvr /smbshare/  #更新目录安全上下文
 此时就可对目录进行访问
操作如下:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
此时就可对目录进行访问
在这里插入图片描述

2.4.2 共享系统中的目录

将 /mnt 目录 作为smb 共享目录

 编辑主配置文件 /etc/samba/smb.conf
 编辑内容如下:
 326         [mnt]                 #指定共享目录
 327         comment = mntdir      #注释
 328         path = /mnt           #路径
 修改完成重启服务
客户端执行
 [root@client ~]# smbclient -L //172.25.254.100
 可以查看到共享的目录
 此时 /mnt 可以被访问,但无法被查看,不能像自建目录一样进行安全上下文的修改,
 因为,系统目录会被多个程序访问使用,修改安全上下文,则只能被 samba 服务访问,显然
 是合适的。此时需要修改 sebool 值

 [root@server ~]# setsebool -P samba_export_all_ro on
 此时smb服务的输出仅可以读,若想对其可写,可修改 sebool 值 samba_export_all_rw
 此时就可以对其进行查看
操作如下:

在这里插入图片描述
在这里插入图片描述

2.4.3 对共享目录进行权限设置

上述共享目录,是无法对其进行写操作的,因为在配置文件中,服务没有赋予权限

通过编辑配置文件,对目录进行权限设置:
 [root@server ~]# vim /etc/samba/smb.conf
 内容如下:
 322         [DIR]                   #指定共享目录
 323         comment = smbsharedir   #注释
 324         path = /smbshare        #路径
 325         browseable = yes        #是否允许浏览#此权限若为no 则无法看到 DIR
 326         writeable = yes         #是否可写(前提是对DIR有写的权限)
 327 #       write list = haha    #允许写的用户名单
             #允许指定用户或用户组可写(前提是该用户或者用户组对DIR有写的权限)
             #后直接跟用户名称,若名称前有 +(@) 表示用户组
 328         admin users = student   #指定 smb 服务的访问管理用户
 修改完毕后重启服务
通过 setfacl 对共享目录进行附加权限的设置
[root@server ~]# setfacl -Rm  d:u:Sambauser:rwx /smbshare
对/smbshare 目录 指定Sambuser 用户可读可写可执行
操作如下:

在这里插入图片描述
在这里插入图片描述

客户端挂载使用:
在这里插入图片描述

2.5 客户端多用户登陆管理

在客户端以一种用户(如root身份)执行挂载samba服务端的共享资源:
mount -o /172.25.254.239/Samber /mnt/ username=Sambauser,password=redhat
在切换为普通用户(如student)的情况下,smb服务的挂载点,是可以被看到的

操作如下:

在这里插入图片描述

为了安全,进行多用户挂载.

 在客户端安装:
 cifs-utils  用于安装和管理 CIFS 挂载的实用程序
 [root@client mnt]# yum install cifs-utils.x86_64 -y
 建立smb用户文件 /root/smbusers
 内容如下:输入已知smb用户的用户名以及密码
  1 username=haha
  2 password=redhat

  通过如下方式进行挂载:
 [root@client ~]# mount -o credentials=/root/smbusers,sec=ntlmssp,multiuser //172.25.254.100/SHARE /mnt
 其中:
     # credentials=filename
     指定包含用户名和/或密码以及可选工作组名称的文件。该文件的格式为:
          username=value   #用户名
          password=value   #密码
          domain=value     #域名
     这比在共享文件(如/etc/fstab)中使用明文密码要好。确保正确地保护任何凭证文件。
     # sec=ntlmssp
     安全模式设置为 ntlmssp ,此模式选择看版本,
     在v3.8之前,主线内核版本的默认值是sec=ntlm。在v3.8中,默认设置sec=ntlmssp。
     # multiuser  多用户模式

 此后切换用户后,无法对smb进行查看,需要进行认证,通过 cifscreds 进行访问
 cifscreds 在内核密钥环中管理NTLM凭据
 
 在另一用户student下执行:
 [student@client mnt]$ cifscreds add -u haha 172.25.254.100
       # cifscreds add [-u 用户名]  samba主机IP
 然后输入密码进行验证就可以
操作如下:

在这里插入图片描述

3.在windows下访问共享服务

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值