samba学习笔记

本文详细介绍了如何在RHEL7中安装samba服务,配置用户验证,创建共享目录,以及通过Windows和Linux访问。还展示了如何使用Ansible进行自动化部署和管理。重点涉及备份配置、SELinux策略调整及安全设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

RHEL7搭建samba服务器

实验环境:Centos7
smbd服务提供文件共享打印服务,并侦听TCP端口139445nmbd服务向客户端提供基于IP命名服务NetBIOS,并侦听UDP端口137


1.安装samba服务

# 安装samba依赖包
yum install -y samba samba-client

# 设置samba服务自启动
systemctl enable --now smb.service

# 查看smb服务是否启动
systemctl status smb

按需关闭防火墙和SELinux

## 关闭防火墙
systemctl stop firewalld.service  

## 禁止防火墙开机启动
systemctl disable firewalld.service

## 永久关闭selinux
vi /etc/selinux/config
将`SELINUX=enforcing`改为`SELINUX=disabled`

# 关闭selinux服务
setenforce 0

注意:如果要配置SELinux版samba,参考
https://zh.codepre.com/centos-7493.html


2.备份主配置文件

配置文件位置:/etc/samba/smb.conf

备份并过滤smb.conf

# 备份samba配置文件
cp /etc/samba/smb.conf{,.bak}

# cd到Samba配置文件目录
[root@localhost ~]# cd /etc/samba/

# 过滤配置文件
## 过滤所有注释行
[root@localhost samba]# grep -v "#" smb.conf.bak

## 过滤所有注释行和“;”行
[root@localhost samba]# grep -v "#" smb.conf.bak | grep -v ";"

## 过滤所有注释行 和“;”行 和 空行(^$)
[root@localhost samba]# grep -v "#" smb.conf.bak | grep -v ";" | grep -v "^$"

## 过滤并重新写入主配置文件
[root@localhost samba]# grep -v "#" smb.conf.bak | grep -v ";" | grep -v "^$" > smb.conf

3.修改配置文件

示例文件:
注意=(等号)两侧有空格

# Samba服务器的全局设置--必须配置
[global]
    # 指定Samba服务器所在的工作组名称
    workgroup = WORKGROUP
    # 指定Samba服务器的描述信息。"%v"会被Samba版本号替换
    server string = Samba Server %v
    # 指定Samba服务器在网络上的NetBIOS名称
    netbios name = samba-server
    # 指定Samba服务器的安全模式为user口令验证
    ## user : 口令验证
    ## share : 公开不需要验证
    ## server domain : 根据来源信息进行验证
    security = user
    # 允许匿名用户访问Samba共享
    ## 此设置意思为:当客户端无法提供有效的用户名和密码时,Samba服务器将会将其映射到一个名为“bad user”的用户帐户。
    map to guest = bad user
    # 指定Samba服务器是否充当DNS代理。
    ## 如果设置为“yes”,Samba服务器将会尝试将DNS查询转发到其他DNS服务器。
    ## 如果设置为“no”,Samba服务器不会充当DNS代理。
    dns proxy = no

## 共享名称--共享站点配置
[Depp_Public]
    # 设置共享目录的描述信息为 "深度恭喜"。
    comment = 深度共享
    # 指定共享目录的服务器路径。
    path = /var/disk1/share
    # 设置共享目录在网络邻居中可见
    browseable = yes
    # 允许未经认证的用户(访客)访问。
    guest ok = yes
    ## 可写权限
    writable = yes
    # 设置共享目录为非读写(可写)
    read only = no
    # 设置文件创建时的权限掩码为 0755
    ## (即文件拥有者具有读、写和执行权限;同组用户和其他用户只具有读和执行权限)
    create mask = 0755

  • 3种常用验证方式:
配置参数解释
user口令验证
share公开不需要验证
server domain根据来源信息进行验证

配置用户口令验证模式

注意=(等号)两侧有空格

# Samba服务器的全局设置
[global]
    # 工作组名称
    workgroup = WORKGROUP
    # 指定Samba服务器的描述信息。"%v"会被Samba版本号替换
    server string = Samba Server Version %v
    # 日志保存路径,%m是按月进行保存
    log file = /var/log/samba/log.%m
    # 日志保存大小,50kb
    max log size = 50
    # 验证方式:user口令验证 share公开不需要验证 server domain 根据来源信息进行验证
    security = user
    # 用pdbedit生成pam信息的数据库文件
    passdb backend = tdbsam

# 共享站点名称              
[rick]
	comment = 站点描述信息,用户登录后提示的信息
	# 共享的目录
	path = /data/sahre
	# 不允许公开访问,也就是不认证不能访问       
	public = no
	# 允许写权限            
	writable = yes

配置完成后,重启服务

# 重启smb服务
systemctl restart smb

添加smb的验证用户

# 添加用户zhangsan
useradd zhangsan

# 为张三添加smb密码
## -a 将用户添加到pdbsam数据库中,第一次添加用户时使用
## -u 指定的账户名
pdbeidt -a -u zhangsan

# 提示两次输入密码,为zhangsan创建samba的访问密码

示例:创建smb站点并开启服务

下面是一个创建smb站点的演示过程。


1.创建共享目录

# 创建共享目录
mkdir -p /data/sahre

# 给共享目录设置属主和属组
chown -Rf zhangsan:zhangsan /data/sahre

# 考虑到其他人也要读写这个目录,权限给大一点
chmod -Rf 777 /data/sahre

2.配置SELinux策略

# 查看SELinux的安全上下文值
getsebool -a |grep samba

# 开启SELinux中samba对于文件读写的权限
setsebool -P samba_export_all_w=on

重启smb服务

# 重启smb服务
systemctl restart smb

Windows访问samba服务器

前置条件: Windows机器需要跟Samba服务器在同一局域网,且互联互通

使用WIN+R快捷键,输入\\samba服务器IP地址

# 访问samba服务
\\192.168.2.244

根据提示输入账号密码,这里输入的密码不是Linux的用户密码,而是pdbsam数据库中的对应的smb账号的密码

Windowssmb共享目录中创建一个测试文件:111.txt

# 查看共享文件目录,查看到创建的文本
[root@localhost samba]# cd /data/sahre

# 查看Windows下创建的文件在Linux服务器上能够看到
[root@localhost share]# ll
-rw-r--r--. 1 nobody nobody 0 115 15:51 111.txt

LInux访问samba

# 安装samba的Linux客户端cifs-utils
yum install cifs-utils -y

# 手动挂载samba
[root@localhost ~]# smbclient -U zhangsan -L 192.168.10.10
Enter SAMBA\zhangsan's password: 此处输入该账户在Samba服务数据库中的密码

	Sharename       Type      Comment
	---------       ----      -------
	database        Disk      Do not arbitrarily modify the database file
	IPC$            IPC       IPC Service (Samba 4.9.1)
Reconnecting with SMB1 for workgroup listing.

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

	Workgroup            Master
	---------            -------
  
# 查看挂载结果
df -h

Linux持久挂载samba

Linux用户端新建并配置samba账户验证文件

# 在home目录(也可其他目录,你记得就行)新建auth.smb
vim /root/auth.smb

# 配置auth.smb
## 将下面内容添加到auth.smb中
### 注意:这里的WORKGROUP名称一定要与服务器配置中的一致
username=zhangsan
passwdord=123456
domain=WORKGROUP 

将samba挂载信息写入/etc/fstab中

# 新建本地挂载点
mkdir /mnt/share

# 将samba挂载信息写入/etc/fstab中
vim /etc/fstab

## 写入samba挂载信息
## 挂载路径             挂载点     文件系统格式  权限(认证文件路径)               是否自动备份  是否自动校验 
//192.168.10.10/share  /mnt/share  cifs       credential=/root/auth.smb        0            0

自动挂载/etc/fstab中的设备

mount -a

ansible配置samba

---
- name: 安装samba server
  hosts: samba_servers
  # 使用的用户
  user: devops
  # 使用提权
  become: true
  # 变量
  vars:
    # 安装状态
    install_state: installed
    random_var:
      - This is colon: test

  tasks:
    # 安装samba
    - name: install samba
      yum:
        name: samba
        state: "{{ install_state }}"

    # 安装防火墙
    - name: install firewalld
      yum:
        name: firewalld
        state: installed

    - name: debug install_state variable
      debug:
        msg: "The state for the samba service is {{ install_state }}"

    # 启动samba服务,并设置开机自启
    - name: start samba
      service:
        name: smb
        state: started
        enabled: yes

    # 启动防火墙服务
    - name: start firewalld
      service:
        name: firewalld
        state: started
        enabled: yes

    # 防火墙放行samba服务
    - name: configure firewall for samba
      firewalld:
        state: enabled
        permanent: true
        immediate: true
        service: samba

    # 备份samba配置文件
    - name: back samba config
      copy:
        src: /etc/samba/smb.conf
        dest: /etc/samba/smb.conf.bak

    # 是samba配置文件生效
    - name: deliver samba config
      template:
        src: samba.conf.j2
        dest: /etc/samba/smb.conf
        owner: root
        group: root
        mode: 0644
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

教Linux的李老师

赞赏是第一生产力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值