# Debian GNU/Linux 的 Samba 套件示例配置文件
#
# 这是 Samba 的主配置文件。你应该阅读 smb.conf(5) 手册页面，
# 以了解这里列出的选项。Samba 有大量可配置选项，
# 其中大部分没有在此示例中显示
#
# 一些经常需要调整的选项已作为注释示例包含在此文件中。
#  - 当选项前有 ";" 时，表示建议的设置与默认的 Samba 行为不同
#  - 当选项前有 "#" 时，表示建议的设置是 Samba 的默认行为
#    但该选项足够重要，值得在此提及
#
# 注意：每次修改此文件时，你都应该运行 "testparm" 命令
# 来检查是否有任何基本的语法错误。

#======================= 全局设置 =======================

[global]

## 浏览/标识 ###

# 将此项更改为你的 Samba 服务器将加入的工作组/NT-域名
   workgroup = WORKGROUP

#### 网络设置 ####

# 要绑定的特定接口/网络集
# 可以是接口名称或 IP 地址/子网掩码；
# 通常首选接口名称
;   interfaces = 127.0.0.0/8 eth0

# 仅绑定到指定的接口和/或网络；你必须使用上面的
# 'interfaces' 选项才能使用此功能。
# 如果你的 Samba 机器没有防火墙保护或本身就是防火墙，
# 建议启用此功能。但是，此选项无法正确处理动态或非广播接口。
;   bind interfaces only = yes

#### 调试/日志记录 ####

# 这告诉 Samba 为每个连接的机器使用单独的日志文件
   log file = /var/log/samba/log.%m

# 限制单个日志文件的大小（以 KiB 为单位）
   max log size = 1000

# 我们希望 Samba 只记录到 /var/log/samba/log.{smbd,nmbd}
# 如果你想要重要消息也发送到系统日志，请附加 syslog@1
   logging = file

# 当 Samba 崩溃时执行合理的操作：向管理员发送错误追踪邮件
   panic action = /usr/share/samba/panic-action %d

####### 认证 #######

# 服务器角色。定义 Samba 将在哪种模式下运行。可能的值有
# "standalone server"（独立服务器）, "member server"（成员服务器）,
# "classic primary domain controller"（经典主域控制器）,
# "classic backup domain controller"（经典备份域控制器）,
# "active directory domain controller"（活动目录域控制器）
#
# 大多数人会需要 "standalone server" 或 "member server"
# 要运行为 "active directory domain controller"，需要先
# 运行 "samba-tool domain provision" 来清除数据库并创建新域
   server role = standalone server

   obey pam restrictions = yes

# 此布尔参数控制当加密的 SMB 密码在 passdb 中更改时
# Samba 是否尝试同步 Unix 密码和 SMB 密码
   unix password sync = yes

# 要使 Unix 密码同步在 Debian GNU/Linux 系统上工作，
# 必须设置以下参数
   passwd program = /usr/bin/passwd %u
   passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .

# 此布尔值控制在 SMB 客户端请求时是否使用 PAM 进行密码更改，
# 而不是使用 'passwd program' 中列出的程序。默认值为 'no'
   pam password change = yes

# 此选项控制如何将失败的身份验证尝试映射到匿名连接
   map to guest = bad user

########## 域设置 ###########

# 以下设置仅在设置了 'server role = classic primary domain controller'、
# 'server role = classic backup domain controller' 或 'domain logons' 时生效
#

# 它指定用户配置文件目录的位置（从客户端的角度来看）
# 以下需要在 samba 服务器上设置 [profiles] 共享（见下文）
;   logon path = \\%N\profiles\%U
# 另一个常见选择是将配置文件存储在用户的主目录中（这是 Samba 的默认设置）
#   logon path = \\%N\%U\profile

# 以下设置仅在设置了 'domain logons' 时生效
# 它指定用户主目录的位置（从客户端的角度来看）
;   logon drive = H:
#   logon home = \\%N\%U

# 以下设置仅在设置了 'domain logons' 时生效
# 它指定登录时要运行的脚本。脚本必须存储在 [netlogon] 共享中
# 注意：必须以 'DOS' 文件格式存储
;   logon script = logon.cmd

# 这允许通过 SAMR RPC 管道在域控制器上创建 Unix 用户
# 示例命令创建一个禁用 Unix 密码的用户账户；请根据需要调整
; add user script = /usr/sbin/useradd --create-home %u

# 这允许通过 SAMR RPC 管道在域控制器上创建机器账户
# 以下假设系统上存在 "machines" 组
; add machine script  = /usr/sbin/useradd -g machines -c "%u machine account" -d /var/lib/samba -s /bin/false %u

# 这允许通过 SAMR RPC 管道在域控制器上创建 Unix 组
; add group script = /usr/sbin/addgroup --force-badname %g

############ 其他设置 ############

# 使用以下行可以根据每台机器自定义配置
# %m 将被替换为连接机器的 NetBIOS 名称
;   include = /home/samba/etc/smb.conf.%m

# winbind 的一些默认设置（确保你没有将这些范围用于其他用途）
;   idmap config * :              backend = tdb
;   idmap config * :              range   = 3000-7999
;   idmap config YOURDOMAINHERE : backend = tdb
;   idmap config YOURDOMAINHERE : range   = 100000-999999
;   template shell = /bin/bash

# 设置 usershare 选项以启用非 root 用户使用 net usershare 命令共享文件夹

# 最大用户共享数。0 表示禁用用户共享
#   usershare max shares = 100

# 允许被授予 usershare 权限的用户创建公共共享，而不仅仅是经过身份验证的共享
   usershare allow guests = yes

#======================= 共享定义 =======================

[homes]
   comment = 主目录
   browseable = no

# 默认情况下，主目录是只读的。如果你想要能够写入它们，
# 请将下一个参数更改为 'no'
   read only = yes

# 出于安全原因，文件创建掩码设置为 0700
# 如果你想创建具有 group=rw 权限的文件，请将下一个参数设置为 0775
   create mask = 0700

# 出于安全原因，目录创建掩码设置为 0700
# 如果你想创建具有 group=rw 权限的目录，请将下一个参数设置为 0775
   directory mask = 0700

# 默认情况下，任何有权访问 samba 服务器的人都可以连接到 \\server\username 共享
# 以下参数确保只有 "username" 可以连接到 \\server\username
# 使用外部认证方案时可能需要调整此项
   valid users = %S

# 取消注释以下内容并创建 netlogon 目录以进行域登录
# （你需要将 Samba 配置为域控制器）
;[netlogon]
;   comment = 网络登录服务
;   path = /home/samba/netlogon
;   guest ok = yes
;   read only = yes

# 取消注释以下内容并创建 profiles 目录以存储用户配置文件
# （参见上面的 "logon path" 选项）
# （你需要将 Samba 配置为域控制器）
# 下面的路径应该是所有用户都可以写入的，这样他们的配置文件目录
# 可以在首次登录时创建
;[profiles]
;   comment = 用户配置文件
;   path = /home/samba/profiles
;   guest ok = no
;   browseable = no
;   create mask = 0600
;   directory mask = 0700

[printers]
   comment = 所有打印机
   browseable = no
   path = /var/tmp
   printable = yes
   guest ok = no
   read only = yes
   create mask = 0700

# Windows 客户端将此共享名称视为可下载打印机驱动程序的来源
[print$]
   comment = 打印机驱动程序
   path = /var/lib/samba/printers
   browseable = yes
   read only = yes
   guest ok = no
# 取消注释以允许远程管理 Windows 打印机驱动程序
# 你可能需要将 'lpadmin' 替换为管理员用户所在的组名
# 请注意，你还需要为这些用户设置适当的 Unix 权限，
# 以便他们对驱动程序目录具有写入权限
;   write list = root, @lpadmin

#######################################################
#[共享显示的名称，可自定义]
[libao-tb]
    comment = 16G
    path = /mnt/libao
    valid users = lifuaini
    read only = no
    guest ok = yes
    create mask = 0777
    directory mask = 0777
    browseable = yes
    available = yes
    writable = yes
    force user = lifuaini

#######################################################
