手册页部分 1M: 系统管理命令

退出打印视图

更新时间: 2014 年 7 月
 
 

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 共享属性,可通过 zfsshare 命令设置这些属性:

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 的命名属性包括以下对象类:

  • cn 表示 user 对象类

  • ou 表示组织单元 (organizational unit, OU) 对象类

  • dc 表示 domainDns 对象类

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。如果 dfsrootfalse 或者未进行定义,则共享不是 DFS 根共享。

guestok=boolean

为共享设置来宾访问策略。设置为 true 时,允许对此共享进行来宾访问。设置为 false 或未进行定义时,不允许对此共享进行来宾访问。缺省情况下,未定义此属性。

可以使用 idmap(1M) 中基于名称的规则将 guest 映射到任何本地用户名(例如 guestnobody)。如果该本地帐户在 /var/smb/smbpasswd 中具有口令,将根据此口令对来宾连接进行验证。使用映射到本地来宾帐户的帐户创建的任何连接将被视为来宾连接。

以下基于名称的规则将 Windows Guest 用户映射到 UNIX guest 用户:

# idmap add winname:Guest unixuser:guest
none=access-list

指定不允许与访问列表匹配的所有客户机进行访问。访问列表是一个星号 (*) 时例外,在这种情况下,rorw 可以覆盖 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 之前指定 dnsldap。必须执行此操作,因为只有 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 shareshare 命令创建并发布 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)