• 搭建SAMBA服务


    说明:这里是Linux服务综合搭建文章的一部分,本文可以作为单独搭建SABMA服务的参考。

    注意:这里所有的标题都是根据主要的文章(Linux基础服务搭建综合)的顺序来做的。

    如果需要查看相关软件版本和主机配置要求,请根据目录自行查看。

    Linux服务综合搭建的文章目录

    ====================================================

    Linux基础服务搭建综合

    1、foundation创建yum仓库

    2、部署DNS

    3、将YUM源通过httpd发布出来

    4、rhel7主机安装JDK

    5、foundation通过Rsyslog搭建集中日志服务器

    6、foundation LAMP环境搭建

    7、foundation搭建NFS服务

    8、rhel7 JAVA web环境搭建(使用Tomcat8整合httpd)

    9、foundation自建CA实现HTTPS

    10、foundation配置kerberos和NTP服务以及安全的NFS挂载

    11、foundation提供SAMBA服务

    12、rhel7 配置软ISCSI存储

    13 rhel7主机配置端口转发和地址伪装

    ====================================================

    主机角色说明

    11、foundation提供SAMBA服务

    UNC路径:SAMBA要使用UNC路径书写资源

    UNC(Universal Naming Convention)通用命名规则,也叫通用命名规范、通用命名约定。 网络(主要指局域网)上资源的完整名称。

    它符合\servernamesharename 格式,其中 servername 是服务器名,sharename 是共享资源的名称。

    目录或文件的 UNC 名称可以包括共享名称下的目录路径,格式为:\servernamesharenamedirectoryfilename。

    unc共享就是指网络硬盘的共享

    我们熟悉的命令行访问法访问网上邻居,实际上应该称作UNC路径访问法。

    11.1 安装软件包

    搭建SAMBA服务需要在服务端安装samba和samba-client(安装了它可以使用sbmpasswd命令创建SAMBA用户)两个包,在客户端需要安装samba-client包。

    1 [root@foundation ~]# yum install samba samba-client

    11.2 配置SAMBA共享

    11.2.1 准备共享目录

    SAMBA除了自己的用户权限控制外还要依赖系统本地的用户权限控制,所有要想谁能访问首先要做好本地的权限控制。

    1 [root@foundation ~]# mkdir /smbshare/sambashare -p
    2 [root@foundation /]# chown :mei /smbshare/sambashare
    3 [root@foundation ~]# chmod -R 2775 /smbshare/sambashare
    4  [root@foundation ~]# echo "samba share test."> /smbshare/sambashare/test.txt

    11.2.2 设置SELinux

    1 [root@foundation ~]# semanage fcontext -a -t samba_share_t '/smbshare(/.*)?'
    2 [root@foundation ~]# restorecon -FRv /smbshare/

    注意

    Samba还可以提供使用SELinux 类型 public_content_t (只读)和public_content_rw_t (读写)标记的文件。

    要允许对标记为public_content_rw_t的文件和目录进行读写访问,必须还要启用SELinux布尔值smba-anon-write。

    11.2.3 编辑配置文件

    [root@foundation ~]# grep -v -E "^$|#|;" /etc/samba/smb.conf
    [global]
            workgroup = SAMBA
            security = user
            passdb backend = tdbsam
            printing = cups
            printcap name = cups
            load printers = yes
            cups options = raw
    [homes]
            comment = Home Directories
            valid users = %S, %D%w%S
            browseable = No
            read only = No
            inherit acls = Yes
    [printers]
            comment = All Printers
            path = /var/tmp
            printable = Yes
            create mask = 0600
            browseable = No
    [print$]
            comment = Printer Drivers
            path = /var/lib/samba/drivers
            write list = root
            create mask = 0664
            directory mask = 0775
    [sambashare] #共享名称
            path = //smbshare/sambashare  #实际路径
            write list = @mei  # writable为no时,用它控制可写用户是哪些,@开头表示是一个用户组
            browseable = yes  #所有用户可浏览
    #writable = yes   默认是no,表示所有用户都可以写

    11.2.4 准备SAMBA用户

    [root@foundation ~]# useradd -s /sbin/nologin mei
    [root@foundation ~]# useradd -G mei -s /sbin/nologin tom
    [root@foundation ~]# useradd -s /sbin/nologin danny
    设不设置密码都无所谓
    
    将用户添加进SAMBA自己的数据库
    [root@foundation ~]# smbpasswd -a mei
    New SMB password:
    Retype new SMB password:
    Added user mei.
    [root@foundation ~]# smbpasswd -a tom
    New SMB password:
    Retype new SMB password:
    Added user tom.
    [root@foundation ~]# smbpasswd -a danny
    New SMB password:
    Retype new SMB password:
    Added user danny.
    [root@foundation ~]#

    11.3 启动服务并配置防火墙

    1 [root@foundation ~]# systemctl enable smb nmb
    2 [root@foundation ~]# systemctl restart smb nmb
    3 [root@foundation ~]# firewall-cmd --permanent --add-service=samba
    4 [root@foundation ~]# firewall-cmd --reload

    11.4 客户端测试(多用户挂载)

    这里我们使用rhel7主机来测试

    11.4.1 安装软件包

    1 [root@rhel7 ~]# yum install samba-client
    2 [root@rhel7 ~]# yum install cifs-utils  #默认不支持samba,所以安装文件系统clifs
    3 samba的文件系统类型为cifs

    11.4.2 创建挂载点

    1 [root@rhel7 ~]# mkdir /smbmnt
    2 [root@rhel7 ~]# chown :mei /smbmnt/
    3 [root@rhel7 /]# chmod -R 2775 /smbmnt/

    11.4.3 准备SAMBA用户

    注意,客户端必须要实现多用户挂载,必须在存在和服务端相同用户名的用户,

    用户组关系可以不一致,而且要有登录shell,如果没有,不便于我们切换用户测试权限是否正确。

     1 [root@rhel7 ~]# useradd mei && echo "test" |passwd --stdin mei
     2 Changing password for user mei.
     3 passwd: all authentication tokens updated successfully.
     4 [root@rhel7 ~]# useradd tom && echo "test" |passwd --stdin tom   
     5 Changing password for user tom.
     6 passwd: all authentication tokens updated successfully.
     7 [root@rhel7 ~]# useradd danny && echo "test" |passwd --stdin danny   
     8 Changing password for user danny.
     9 passwd: all authentication tokens updated successfully.
    10 [root@rhel7 ~]#

    11.4.5 持久挂载和用户单独挂载

    SAMBA挂载时可以credentials指定认证文件。如果认证文件中有多组username和password,挂载时将使用最后一组,所以写很多组也没用。

    先准备SAMBA用户密码登录认证文件(默认是文件,也可以是数据库),注意密码是服务端smbpasswd创建SAMBA用户时的密码。

    格式为:注意,不要有空格

    username=用户名

    password=密码

     

    注意,如果像下面这样写多组username和password,挂载时将使用最后一组。

    编辑/etc/fstab文件,添加如下内容

    //foundation.mei.com/sambashare /smbmnt cifs credentials=/root/smbpasswd.txt,multiuser,sec=ntlmssp 0 0
    
    [root@rhel7 ~]# mount -a

    权限测试

    1 #先切换用户,这也是为什么之前在客户端创建用户时要提供登录shell的原因
    2 [root@rhel7 smbmnt]# su - tom    
    3 [tom@rhel7 ~]$ cifscreds add foundation.mei.com  #手动切换SAMBA登录用户

    1、根据我们之前的配置,默认使用的是最后一组用户名和密码挂载,即使用mei用户挂载,现在我们用mei用户测试读写权限发现能够正常读写。

    在服务端foundation上主机查看权限如下

    2、手动切换到tom用户进行访问,注意tom是mei组(注意这里的组是指在服务端的组,

    为了加以区别我们特意在客户端创建用户时没有把tom加入到mei组中。)中的用户,也能正常读写。

    在服务端foundation上主机查看权限如下

    3、手动切换到danny用户进行访问,注意danny不是是mei组中的用户我们也没有给他写的权限,所以只能浏览不能写入。

    4、在Windows客户端测试

     

     
    最后希望大家提意见、转发、评论和交流!!!

  • 相关阅读:
    Win10怎么默认用Windows照片查看程序打开图片
    Class类文件结构——访问标志
    栈的压入弹出序列
    Java中length,length()以及size()的区别
    包含min函数的栈
    extends和implements的区别
    顺时针打印矩阵
    二叉树的镜像
    Class类文件结构解读——常量池
    进制、字(word)、字节(byte)、位(bit)的关系
  • 原文地址:https://www.cnblogs.com/meizy/p/samba.html
Copyright © 2020-2023  润新知