Linux学习笔记之samba服务器搭建

Samba是在Linux/UNIX系统上实现SMB协议的一个免费软件(安装在linux和Unix系统上),可以实现在 Linux/UNIX系统 和 windows 系统上实现资源共享,
可以让windows访问"网上邻居"的方式访问Linux/UNIX系统

由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,
它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以
访问服务器上的共享文件系统、打印机及其他资源。通过设置“NetBIOS over TCP/IP”使得Samba不但能与局域网络主机分享资源,
还能与全世界的电脑分享资源。

学习环境:CentOS Linux release 7.4.1708 (Core)

第一步:准备工作

服务端通常需要安装的软件如下: 通过 yum install samba samba-common -y 命令安装,可能还会安装一些相关的依赖软件
    samba-4.7.1-6.el7.x86_64.rpm             ## samba软件
    samba-common-4.7.1-6.el7.noarch.rpm      ## samba软件的配置文件在这个安装包中

    
客户端需要安装的软件: 
    samba-4.7.1-6.el7.x86_64.rpm             ## samba软件
    samba-common-4.7.1-6.el7.noarch.rpm      ## samba软件的配置文件在这个安装包中
    samba-client-4.7.1-6.el7.x86_64.rpm      ## 客户端软件,访问服务端的一个工具 
    cifs-utils-6.2-10.el7.x86_64.rpm         ## 挂载时 需要安装的软件包


    
第二步: 启动服务,samba涉及 smb 和 nmb两个服务

    systemctl status smb.service  ## 启动smb服务
    systemctl status smb.service  ## 设置开机重启时自动启动smb服务
    
    systemctl status nmb.service  ## 启动nmb服务
    systemctl status nmb.service  ## 设置开机重启时自动启动nmb服务
    

第三步: 在服务端的firewall防火墙上放通samba所需要的服务(服务器上只开启了firewall防火墙,iptable是关闭的)

    firewall-cmd --permanent --add-service=samba          ##在防火墙上放通samba服务
    firewall-cmd --permanent --add-service=samba-client   ##在防火墙上放通samba-client服务
    firewall-cmd --reload   ## 将刚才的配置加载到防火墙中,使刚才的配置生效
    
    firewall-cmd --list-services ## 查看防火墙中当前放通的服务 services
    或
    firewall-cmd --list-all ## 查看防火墙当前所有的配置项:services , ports等
    


第四步: 在配置文件/etc/samba/smb.conf 中添加 public配置(public配置项是匿名访问时可见的共享) (可参考/etc/samba/smb.conf.example 文件)

[[email protected] samba]# tail -n 7 /etc/samba/smb.conf
[public]
    comment = Public Stu
    path = /home/samba   ## /home/samba目录要存在
    public = yes
    writable = yes         ## writable = yes即允许有写权限
    printable = no
    write list = +staff
[[email protected] samba]# 

备注:
    systemctl restart smb.service  ## 重启smb服务,使修改生效
    
    

第五步:测试验证---如果遇到权限等相关问题主要考虑以下三个因素
    1.程序本身是否配置了正确的权限(查看/etc/samba/smb.conf中权限是否配置正确);
    2.User,Group,Other权限是否正确,对文件,目录是否有相关权限
    3.selinux权限是否正确,遇到问题时可通过在服务端执行 sealert -a /var/log/audit/audit.log 命令分析可能是问题。

    
5.1 查看匿名用户可以访问的资源:

[[email protected] ~]# smbclient -L 192.168.137.201  ##192.168.137.201为samba服务器IP
Enter SAMBA\root's password: 匿名访问时这里直接按回车键
Anonymous login successful

    Sharename       Type      Comment
    ---------       ----      -------
    print$          Disk      Printer Drivers
    public          Disk      Public Stu
    IPC$            IPC       IPC Service (Samba 4.7.1)
Reconnecting with SMB1 for workgroup listing.
Anonymous login successful

    Server               Comment
    ---------            -------

    Workgroup            Master
    ---------            -------
    SAMBA                VM201
    WORKGROUP            QCNABIWSDB4A8JW
[[email protected] ~]# 


5.2 查看系统用户可以访问的共享资源:
    smbpasswd -a USERNAME  ##执行此命令设置samba服务的访问密码,USERNAME为服务端/etc/passwd中真实存在的用户
    
    [[email protected] ~]# smbclient -L 192.168.137.201 -U sunrui  ##查看sunrui用户可以访问的共享资源
Enter SAMBA\sunrui's password: 这里输入执行smbpasswd -a USERNAME 命令时设置的密码

    Sharename       Type      Comment
    ---------       ----      -------
    print$          Disk      Printer Drivers
    public          Disk      Public Stu
    IPC$            IPC       IPC Service (Samba 4.7.1)
    sunrui          Disk      Home Directories
Reconnecting with SMB1 for workgroup listing.

    Server               Comment
    ---------            -------

    Workgroup            Master
    ---------            -------
    SAMBA                VM201
    WORKGROUP            QCNABIWSDB4A8JW
[[email protected] ~]# 

5.3 匿名访问服务器 192.168.137.201 的共享资源 public, 并测试上传,下载等
[[email protected] ~]# smbclient //192.168.137.201/public
Enter SAMBA\root's password: 这里直接按"enter"键回车
Anonymous login successful

5.4 匿名访问服务器 192.168.137.201 的共享资源 sunrui,并测试上传,下载等
[[email protected] ~]# smbclient //192.168.137.201/sunrui -U sunrui ##使用sunrui用户访问
Enter SAMBA\sunrui's password: ##这里输入smbpasswd -a USERNAME命令时分配的密码
Try "help" to get a list of possible commands.
smb: \> ls

5.5 可以mount
    mount -t cifs //192.168.137.201/public /mnt -o guest            ##匿名挂载,然后测试 创建,删除,修改等操作
    mount -t cifs //192.168.137.201/sunrui /mnt -o username=sunrui  ##使用sunrui用户挂载,然后测试 创建,删除,修改等操作
    

    
第六步: 测试和windows 系统之间的共享

在windows "运行" 框口的 "打开" 输入框中输入: \\192.168.137.201
然后根据提示输入用户名和密码(貌似不能匿名访问),windows即可向访问"网上邻居" 一样访问LInux/Unix的资源

 

Linux学习笔记之samba服务器搭建