随机
Enter 搜索 ↑↓ 切换 Esc 清空

smb-server

命令

Samba/CIFS 文件共享服务端配置工具

smb-server

Samba/CIFS 文件共享服务端配置工具

补充说明

samba命令 是 Linux 系统上实现 SMB/CIFS 协议的软件套件,用于与 Windows 系统之间共享文件和打印机。Samba 服务端通过 smb.conf 配置文件定义共享目录、权限控制、用户认证等,提供跨平台文件共享能力。

安装

安装 Samba

# Debian / Ubuntu
sudo apt-get update && sudo apt-get install samba

# RHEL / CentOS / Rocky / AlmaLinux
sudo yum install samba samba-client

# Fedora
sudo dnf install samba samba-client

# openSUSE
sudo zypper install samba samba-client

# Arch Linux
sudo pacman -S samba

启动并设置自启动

sudo systemctl enable smbd        # 设置开机自启
sudo systemctl start smbd         # 启动服务
sudo systemctl status smbd        # 查看服务状态

创建 Samba 用户

Samba 使用独立的用户数据库(与系统用户分离),但 Samba 用户必须已存在于系统用户中。

# 创建系统用户(如已存在可跳过)
sudo useradd -M -s /sbin/nologin <用户名>

# 添加 Samba 密码
sudo smbpasswd -a <用户名>

smbpasswd -a 会交互式提示输入两次密码。也可使用 sudo smbpasswd -a <用户名> <密码> 非交互式设置。

配置共享目录

创建共享目录并设置权限:

sudo mkdir -pm 755 /mnt
sudo chown <用户名>:<用户名> /mnt

编辑配置文件

编辑 /etc/samba/smb.conf,在文件末尾追加共享定义:

sudo tee -a /etc/samba/smb.conf <<'EOF'

###################################
########   共享配置示例   ########
[共享名称]
     comment = 共享说明
     path = /mnt
     browseable = yes
     writeable = yes
     read only = no
     create mask = 0777
     directory mask = 0777
     guest ok = no
     force user = root
     force group = root
     admin users = <用户名>
     valid users = <用户名>,root
     password required = yes
     available = yes
EOF

重启服务

sudo systemctl restart smbd

配置防火墙

如果系统启用了防火墙,需放行 Samba 端口:

# firewalld(RHEL/CentOS/Fedora)
sudo firewall-cmd --permanent --add-service=samba
sudo firewall-cmd --reload

# ufw(Debian/Ubuntu)
sudo ufw allow samba

验证

查看 Samba 用户

sudo pdbedit -L

查看共享配置

cat /etc/samba/smb.conf | grep -A 5 "\[共享名称"

本地验证共享

# 安装 smbclient(如未安装)
sudo apt-get install smbclient          # Debian/Ubuntu
sudo yum install samba-client           # RHEL/CentOS

# 查看服务器共享列表
smbclient -L 127.0.0.1 -U <用户名>

# 连接共享
smbclient //127.0.0.1/共享名称 -U <用户名>

查看本机 IP

hostname -I | awk '{print $1}'

其他设备通过 //<本机IP>/共享名称 访问共享。

常见问题

权限拒绝

# 确认共享目录权限
ls -ld /mnt

# 确认 Samba 用户存在
sudo pdbedit -L

# 检查配置文件语法
sudo testparm

防火墙阻挡

# 确认 Samba 端口放行:137/udp、138/udp、139/tcp、445/tcp
sudo firewall-cmd --list-services  # firewalld
sudo ufw status                    # ufw

SELinux 阻挡(RHEL/CentOS)

# 查看 SELinux 状态
getenforce

# 允许 Samba 共享目录
sudo setsebool -P samba_export_all_rw on