samba服务器配置是什么?

Samba是Linux/Unix系统上实现SMB/CIFS协议(即Windows网络邻居协议)的软件,配置Samba服务器,核心是编辑配置文件/etc/samba/smb.conf,并管理Samba用户。

下面是一个从安装到完成基本共享的完整配置指南,你可以根据需要直接使用。

一、安装Samba

Debian/Ubuntu 系列:

sudo apt update
sudo apt install samba samba-common-bin

RHEL/CentOS/Fedora 系列:

sudo yum install samba samba-client samba-common
或
sudo dnf install samba samba-client samba-common

二、核心配置文件:/etc/samba/smb.conf

该文件分为两个主要部分:[global](全局设置)和[共享名称](具体共享定义)。

1. 全局配置([global] 段)

这是最基础的配置,通常保持默认即可,但建议调整以下项:

[global]
   # 工作组或域名(Windows上的工作组名称)
   workgroup = WORKGROUP
   # 服务器描述,在Windows网络邻居中显示
   server string = %h server (Samba, Ubuntu)
   # 网络接口监听,通常监听所有网卡
   interfaces = lo eth0
   bind interfaces only = yes
   # 安全模式,推荐使用 user
   # user: 需要samba独立密码验证
   # share: 不需要密码(已废弃)
   # domain: 使用域控制器验证
   security = user
   # 来宾账户(如果允许匿名访问,一般用没人账号)
   map to guest = Bad User
   # 日志设置
   log file = /var/log/samba/log.%m
   max log size = 1000
   # Unix编码与Windows编码转换(解决中文乱码)
   unix charset = UTF-8
   dos charset = CP936
   display charset = UTF-8

共享目录配置示例

例1:创建无需密码的公共只读共享

[public]
   comment = Public Share
   path = /srv/samba/public
   browseable = yes
   public = yes      # 允许来宾访问
   read only = yes   # 只读
   guest ok = yes    # 与public等价
   create mask = 0755
   directory mask = 0755

例2:创建需要用户名密码的私有共享

[private]
   comment = Private Share
   path = /srv/samba/private
   browseable = yes
   valid users = bob, alice @staff   # 允许的用户或组(@组名)
   read list = alice                  # 只读用户
   write list = bob @staff            # 可写用户/组
   read only = no
   create mask = 0700
   directory mask = 0700

关键参数解释:

参数 含义
path 要共享的Linux本地目录路径
browseable 是否在“网上邻居”中可见(yes/no)
read only 是否只读(yes/no)
public /guest ok 是否允许匿名来宾访问(yes/no)
valid users 允许访问的用户列表(空格或逗号分隔)
write list 可写用户(覆盖read only限制)
create mask 新创建的文件的权限掩码
directory mask 新创建的目录的权限掩码

三、创建共享目录并设置权限

Linux的文件系统权限Samba用户验证是两层独立的限制(取交集)。

创建目录
sudo mkdir -p /srv/samba/public
sudo mkdir -p /srv/samba/private
设置所有者(让root拥有,但samba用户组可访问)
sudo chown -R nobody:nogroup /srv/samba/public
sudo chmod -R 0755 /srv/samba/public
sudo chown -R root:sambashare /srv/samba/private
sudo chmod -R 0770 /srv/samba/private

>注意:对于私有共享,需要确保valid_users 对应的系统用户名有访问目录的权限(至少 rx 权限),可以使用setfacl 精细控制。

四、添加Samba用户

Samba用户必须首先是一个Linux系统用户

1. 创建系统用户(若无)
sudo useradd -M -s /sbin/nologin bob
sudo useradd -M -s /sbin/nologin alice
2. 添加用户到Samba密码数据库
sudo smbpasswd -a bob
提示输入Samba密码(独立于Linux登录密码)
重复两次
查看Samba用户列表
sudo pdbedit -L

五、启动服务与防火墙

重启服务
sudo systemctl restart smbd nmbd
设置开机自启
sudo systemctl enable smbd nmbd
防火墙开放(如有)
firewalld (CentOS/RHEL)
sudo firewall-cmd --permanent --add-service=samba
sudo firewall-cmd --reload
ufw (Ubuntu)
sudo ufw allow samba

六、客户端访问

Windows 客户端:

1、打开“运行”(Win+R),输入\\samba服务器IP 回车。

2、右键“此电脑” -> “映射网络驱动器”。

Linux 客户端:

安装客户端
sudo apt install smbclient
列出共享
smbclient -L //192.168.1.100 -U bob
挂载共享
sudo mount -t cifs //192.168.1.100/private /mnt -o username=bob,password=yourpass

七、常见排错

1、无法连接?

- 检查服务是否运行:sudo systemctl status smbd

- 检查防火墙:telnet 192.168.1.100 445

- 检查SELinux(CentOS需开启相关布尔值):setsebool -P samba_enable_home_dirs on

2、中文文件名乱码?

- 确保global 段已设置dos charset = CP936unix charset = UTF-8

3、文件不能写入?

- 确认Linux系统权限(目录所有者/组)允许写入。

- 确认smb.conf中已设置read only = no 且用户出现在write list 中。

- 确认SELinux上下文:chcon -t samba_share_t /path/to/share

4、修改配置后立即生效?

- 执行testparm 检查语法是否正确。

- 执行sudo systemctl reload smbd(热重载,不中断连接)。

Samba配置的流程就是:修改smb.conf -> 创建目录并设权限 -> 添加Samba用户 -> 重启服务 -> 开放防火墙,如果只是临时需要共享几个文件夹给Windows,以上步骤应该够用了。

文章摘自:https://idc.huochengrm.cn/js/25962.html

评论