share_smb(1M)
名称
share_smb - 使 SMB 共享可供远程系统挂载
用法概要
share -F smb [-a [-o
specific-options] [-d description]
pathname sharename | [-A]]
zfs set share.smb=on | off filesystem|filesystem%share
zfs share -o share.smb=on | off specific_options
filesystem|filesystem%share
描述
share 命令用于定义和发布 SMB 共享,这使得本地文件系统可供远程系统挂载。
通过使用 share 命令或者使用 zfs set 命令或 zfs share 命令设置属性值来修改 SMB 共享的行为。请参见 share(1M) 和 zfs(1M) 手册页。
share 命令包含以下选项:
- –F smb
共享 SMB 文件共享协议。
- –a
发布所有已定义的共享。
- –o specific-options
以逗号分隔的关键字和属性-值-断言列表形式指定 specific-options,以供 SMB 协议进行解释。缺省情况下,以读写访问权限向所有客户机发布共享,除非使用特定选项覆盖缺省访问权限。specific-options 可以是给定文件系统所支持属性的任意组合。
- –d description
提供用于描述要共享的文件系统的注释。
- –A
显示所有定义的共享。
共享属性
支持以下 SMB 共享属性,可通过 zfs 和 share 命令设置这些属性:
- abe=boolean
为共享设置基于访问权限的枚举 (access-based enumeration, ABE) 策略。设置为 true 时,会为此共享启用 ABE 过滤,在返回给客户机的目录列表中将省略提出请求的用户无权访问的目录条目。设置为 false 或者未定义时,将不会对此共享执行 ABE 过滤。缺省情况下,未定义此属性。
- false
为此共享禁用 ABE。
- true
为此共享启用 ABE。
- ad-container
指定要用于发布共享的 AD 容器。
可将 AD 容器指定为以逗号分隔的属性名称-值对列表,名称-值对使用 LDAP 标识名 (distinguished name, DN) 或相对标识名 (relative distinguished name, RDN) 格式。
以下示例使用 share 命令指定 AD 容器:
$ share -F smb -o abe=true,ad-container=cn=sales,ou=mycompany,dc=com /export/home
以下示例使用 zfs share 命令指定 AD 容器:
$ zfs share -o share.smb=on -o share.smb.ad-container=cn=sales,ou=mycompany,dc=com -o share.smb.abe=on rpool/export/home%share1
必须使用 cn=、ou= 和 dc= 前缀以 LDAP 格式指定 DN 或 RDN:
cn 表示通用名称 (common name)
ou 表示组织单元 (organizational unit)
dc 表示域组件 (domain component)
cn=、ou= 和 dc= 均为属性类型。用于描述对象 RDN 的属性类型称为命名属性,ADS 的命名属性包括以下对象类:
- catia=boolean
指定是否执行 CATIA 字符替换。CATIA V4 允许在文件名中使用 Windows 视为无效的字符。如果 CATIA V4 文件名包含任何在 Windows 中被视为非法的字符,Windows 客户机可能无法访问该 CATIA V4 文件。缺省情况下,不执行 CATIA 字符替换。请参见Managing SMB File Sharing and Windows Interoperability in Oracle Solaris 11.2
。
如果 catia 属性设置为 true,将对文件名应用以下字符替换。
CATIA CATIA
V4 UNIX V5 Windows
" \250 0x00a8 Dieresis
* \244 0x00a4 Currency Sign
/ \370 0x00f8 Latin Small Letter O with Stroke
: \367 0x00f7 Division Sign
< \253 0x00ab Left-Pointing Double Angle Quotation Mark
> \273 0x00bb Right-Pointing Double Angle Quotation Mark
? \277 0x00bf Inverted Question Mark
\ \377 0x00ff Latin Small Letter Y with Dieresis
| \246 0x00a6 Broken Bar
- csc=value
设置共享的客户端高速缓存策略。客户端高速缓存是一项客户机功能,脱机文件完全由客户机管理。
以下是 csc 属性的有效值:
manual-允许客户机缓存指定共享中的文件,以供用户请求时脱机使用。但是,不允许自动基于每个文件重新整合。manual 为缺省值。
auto-允许客户机自动缓存指定共享中的文件以供脱机使用,允许基于每个文件重新整合。
vdo-允许客户机自动缓存指定共享中的文件以供脱机使用,允许基于每个文件重新整合,允许客户机使用其本地高速缓存进行处理,即使在脱机时也如此。
disabled-不允许对此共享执行客户端高速缓存。
- dfsroot=boolean
将共享标记为分布式文件系统 (distributed file system, DFS) 根共享,以区别于常规共享。缺省情况下,未定义 dfsroot。如果 dfsroot 为 false 或者未进行定义,则共享不是 DFS 根共享。
- guestok=boolean
为共享设置来宾访问策略。设置为 true 时,允许对此共享进行来宾访问。设置为 false 或未进行定义时,不允许对此共享进行来宾访问。缺省情况下,未定义此属性。
可以使用 idmap(1M) 中基于名称的规则将 guest 映射到任何本地用户名(例如 guest 或 nobody)。如果该本地帐户在 /var/smb/smbpasswd 中具有口令,将根据此口令对来宾连接进行验证。使用映射到本地来宾帐户的帐户创建的任何连接将被视为来宾连接。
以下基于名称的规则将 Windows Guest 用户映射到 UNIX guest 用户:
# idmap add winname:Guest unixuser:guest
- none=access-list
指定不允许与访问列表匹配的所有客户机进行访问。访问列表是一个星号 (*) 时例外,在这种情况下,ro 或 rw 可以覆盖 none。
- ro=access-list
指定 access-list 中列出的客户机对于共享具有只读权限。覆盖指定客户机的 rw 子选项。请参见 access-list。
- rw=access-list
指定 access-list 中列出的客户机对于共享具有读写权限。覆盖指定客户机的 ro 子选项。请参见 access-list。
访问列表参数
access-list 参数可以是字符串 "*"(表示所有主机),也可以是由冒号分隔的列表,其组件可以是任意数量的以下项:
- hostname
指定主机名。如果主机在 nsswitch.conf 文件的 hosts 部分中指定了 DNS 或 LDAP 命名模式,hostname 必须为全限定的 DNS 或 LDAP 名称。
- netgroup
网络组包含多个主机名。如果主机在 nsswitch.conf 文件的 hosts 部分中指定了 DNS 或 LDAP 命名模式,网络组中的任何 hostname 都必须为全限定的 DNS 或 LDAP 名称。
- domainname. suffix
要使用域成员关系,服务器必须使用 DNS 或 LDAP 将主机名解析为 IP 地址。这意味着,/etc/nsswitch.conf 文件的 hosts 条目必须在 nis 之前指定 dns 或 ldap。必须执行此操作,因为只有 DNS 和 LDAP 会返回主机的完整域名。
其他命名服务(如 NIS)不能用于解析服务器上的主机名,因为这些命名服务不返回域信息。例如,下面展示了 NIS、DNS 和 LDAP 如何返回 172.16.45.9 IP 地址的主机名信息:
- NIS
返回:myhost
- DNS 或 LDAP
返回:myhost.mydomain.mycompany.com
域名后缀通过前缀句点与主机名和网络组区分开来。例如,rw=.mydomain.mycompany.com 匹配 mydomain.mycompany.com 中的所有主机名。
rw=. 表示法使用一个句点匹配无后缀的主机名。此表示法匹配 mydomain 但不匹配 mydomain.mycompany.com。此功能可用于匹配通过 NIS(而不是 DNS 和 LDAP)解析的主机。
- network
网络或子网组件位于 at 符号 (@) 之后。该值可以是一个网络名称或点分地址。
可使用 getnetbyname(3SOCKET) 将网络名称转换为点分地址。例如,=@mynet 等效于 =@172.16 或 =@172.16.0.0。
网络前缀采用八位字节对齐的网络掩码。网络掩码由地址低位部分中的第零个八位字节直至(包括)高位八位字节确定。如果网络前缀未按字节对齐,语法允许在斜杠 (/) 分隔符后显式指定掩码长度。例如,=@theothernet/17 或 =@172.16.132/22,其中掩码是对应 IP 地址中最左侧的连续有效数位。
指定单个 IP 地址时,也使用上述 @ 表示法,但不指定网络掩码。例如,=@172.16.132.14。
可以使用冒号字符 (:) 分隔多个单独的 IP 地址。例如,root=@172.16.132.20:@172.16.134.20。
减号 (−) 前缀表示拒绝 access-list 中的该组件访问。系统将按顺序搜索该列表,直至找到允许或拒绝访问的匹配项,或直至到达该列表的末尾。例如,如果主机 terra 位于 engineering 网络组中,指定 rw=-terra:engineering 将拒绝 terra 访问。但是,指定 rw=engineering:-terra 则允许 terra 访问。
示例
示例 1 设置共享属性
以下示例使用 zfs share 和 share 命令创建并发布 SMB 共享。
以下示例显示如何使用 zfs share 命令创建并发布同时启用来宾访问的 SMB 共享:
# zfs share -o share.smb=on -o share.smb.guestok=on tank/home%hshare
以下示例显示如何使用 share 命令对共享启用来宾访问:
# share -F smb -o guestok=true /tank/home
示例 2 查看共享属性
以下示例显示如何使用 zfs get 命令和 /etc/dfs/sharetab 文件查看共享属性:
通过 zfs get 命令可以查看 tank/home 数据集的共享属性:
# zfs get share.smb tank/home%hshare
NAME PROPERTY VALUE SOURCE
tank/home%hshare share.smb on local
/etc/dfs/sharetab 文件显示了系统中的所有活动共享。每个共享的对应条目会显示属性集及其值:
# grep home /etc/dfs/sharetab
/tank/home hshare smb guestok
文件
- /etc/dfs/sharetab
共享文件系统的系统记录
属性
有关下列属性的说明,请参见 attributes(5):
|
|
可用性
|
service/file-system/smb
|
接口稳定性
|
Committed(已确定)
|
|
另请参见
idmap(1M)、share(1M)、zfs(1M)、zfs(1M)、getnetbyname(3SOCKET)、netgroup(4)、attributes(5)