smbd常用命令 + smb.conf共享配置示例

一、Samba常用命令

注意smbd用户和系统用户是不同的smb用户的使用需要先有实际的系统用户才行

  • 可以用以下命令创建无ssh权限用户

    1
    useradd -s /sbin/nologin 【username】
  • 常用命令

命令 作用
systemctl status smb 查看smb服务状态
systemctl start smb 启动smb服务
systemctl stop smb 停止smb服务
systemctl restart smb 重启smb服务
testparm 校验smb.conf配置语法
testparm -s 输出完整生效的smb配置(带共享目录)
smbstatus 查看当前SMB连接、打开的文件、锁
smbstatus -S 只列出已加载的共享名称
smbclient -L //127.0.0.1 -N 本机查询本机所有SMB共享
pdbedit -L 列出全部Samba账号
smbpasswd -a 用户名 添加Samba密码(系统用户必须预先存在)
smbpasswd -x 用户名 删除Samba账号(仅删SMB密码,不删系统用户)
useradd 用户名 创建Linux系统用户
userdel -r 用户名 删除系统用户并删除家目录
id 用户名 检查系统用户是否存在

二、/etc/samba/smb.conf 共享段写法

基础私有共享(需要账号密码,推荐)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[myshare]
# 本地磁盘目录
path = /mnt/data
# 是否可浏览,设no不在列表显示
browseable = yes
# 允许写入
writable = yes
# 不允许匿名访问
guest ok = no
# 限定可访问用户
valid users = smbuser
# 关闭文件权限映射(Linux下常用)
create mask = 0644
directory mask = 0755
noatime = yes

只读共享(仅读取,不可写入)

1
2
3
4
5
6
7
8
[read_only]
path = /mnt/readonly
browseable = yes
writable = no
guest ok = no
valid users = smbuser
create mask = 0644
directory mask = 0755

匿名共享(公开,慎用)

1
2
3
4
5
6
[public]
path = /mnt/public
browseable = yes
writable = no
guest ok = yes
guest only = yes

常用参数说明

参数 说明
[名字] 共享名称,Windows访问:\\ip\名字
path 本机对应的本地目录
browseable 是否在共享列表展示 yes/no
writable 是否允许写入 yes/no
guest ok 是否允许匿名访客 yes/no
valid users 限制登录用户,多个用空格隔开
create mask 新建文件权限
directory mask 新建文件夹权限

修改配置后的操作

改完配置,校验并重启服务

1
2
testparm
systemctl restart smb nmb