zoukankan      html  css  js  c++  java
  • 搭建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客户端测试

     

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

  • 相关阅读:
    解决:Could not resolve archetype org.apache.maven.archetypes
    Spring MVC配置MyBatis输出SQL
    Spring集成MyBatis 通用Mapper以及 pagehelper分页插件
    关于SpringMVC或Struts2接受参数接收不到的原因
    配置quartz启动时就执行一次
    ajaxFileUpload进行文件上传时,总是进入error
    spring mvc注入配置文件里的属性
    java中将一个文件夹下所有的文件压缩成一个文件
    flume failed to start agent because dependencies were not found in classpath
    ubuntu不能安装pip unable to install pip in unbuntu
  • 原文地址:https://www.cnblogs.com/meizy/p/samba.html
Copyright © 2011-2022 走看看