SHARE_NFS(8) Maintenance Commands and Procedures SHARE_NFS(8)
NAME
share_nfs - make local NFS file systems available for mounting by
remote systems
SYNOPSIS
share [
-d description] [
-F nfs] [
-o specific_options]
pathnameDESCRIPTION
The
share utility makes local file systems available for mounting by
remote systems. It starts the
nfsd(8) and
mountd(8) daemons if they
are not already running.
If no argument is specified, then
share displays all file systems
currently shared, including NFS file systems and file systems shared
through other distributed file system packages.
OPTIONS
The following options are supported:
-d description Provide a comment that describes the file system to be
shared.
-F nfs Share NFS file system type.
-o specific_options Specify
specific_options in a comma-separated list of
keywords and attribute-value-assertions for interpretation by
the file-system-type-specific command. If
specific_options is not specified, then by default sharing is read-write to
all clients.
specific_options can be any combination of the
following:
aclok Allows the NFS server to do access control for NFS
Version 2 clients (running SunOS 2.4 or earlier).
When
aclok is set on the server, maximal access is
given to all clients. For example, with
aclok set,
if anyone has read permissions, then everyone does.
If
aclok is not set, minimal access is given to all
clients.
anon=
uid Set
uid to be the effective user ID of unknown
users. By default, unknown users are given the
effective user ID UID_NOBODY. If uid is set to -1,
access is denied.
charset=
access_list Where
charset is one of: euc-cn, euc-jp, euc-jpms,
euc-kr, euc-tw, iso8859-1, iso8859-2, iso8859-5,
iso8859-6, iso8859-7, iso8859-8, iso8859-9,
iso8859-13, iso8859-15, koi8-r.
Clients that match the
access_list for one of these
properties will be assumed to be using that
character set and file and path names will be
converted to UTF-8 for the server.
gidmap=
mapping[~
mapping]...
Where
mapping is: [
clnt]:[
srv]:
access_list Allows remapping the group ID (gid) in the incoming
request to some other gid. This effectively
changes the identity of the user in the request to
that of some other local user.
For clients where the gid in the incoming request
is
clnt and the client matches the
access_list,
change the group ID to
srv. If
clnt is asterisk
(*), all groups are mapped by this rule. If
clnt is omitted, all unknown groups are mapped by this
rule. If
srv is set to -1, access is denied. If
srv is omitted, the gid is mapped to UID_NOBODY.
The particular
mappings are separated in the
gidmap= option by tilde (~) and are evaluated in
the specified order until a match is found. Both
root= and
root_mapping= options (if specified) are
evaluated before the
gidmap= option. The
gidmap=
option is skipped in the case where the client
matches the
root= option.
The
gidmap= option is evaluated before the
anon=
option.
This option is supported only for AUTH_SYS.
index=
file Load
file rather than a listing of the directory
containing this file when the directory is
referenced by an NFS URL.
log[=
tag]
Enables NFS server logging for the specified file
system. The optional
tag determines the location
of the related log files. The
tag is defined in
/etc/nfs/nfslog.conf. If no
tag is specified, the
default values associated with the global tag in
/etc/nfs/nfslog.conf are used. Support of NFS
server logging is only available for NFS Version 2
and Version 3 requests.
nohide By default, if server exports two filesystems, one
of which is mounted as a child of the other, NFS
Version 2 and Version 3 clients must mount both
filesystems explicitly in order to access them. If
a client only mounts the parent, it will see an
empty directory at the location where the other
filesystem is mounted.
Setting the
nohide option on a filesystem causes it
to no longer be hidden in this manner, and the
client will be able to move from the parent
filesystem to this one without noticing the change.
However, some NFS clients or applications may not
function correctly when this option is used. In
particular, files on different underlying
filesystems may appear to have the same inode
numbers. The
nohide option only applies to NFS
Version 2 and Version 3 requests.
noaclfab By default, the NFS server will fabricate POSIX-
draft style ACLs in response to ACL requests from
NFS Version 2 or Version 3 clients accessing shared
file systems that do not support POSIX-draft ACLs
(such as ZFS). Specifying
noaclfab disables this
behavior.
none=
access_list Access is not allowed to any client that matches
the access list. The exception is when the access
list is an asterisk (*), in which case
ro or
rw can
override
none.
nosub Prevents clients from mounting subdirectories of
shared directories. For example, if
/export is
shared with the
nosub option on server "fooey" then
a NFS client cannot do:
mount -F nfs fooey:/export/home/mnt
NFS Version 4 does not use the MOUNT protocol. The
nosub option only applies to NFS Version 2 and
Version 3 requests.
nosuid By default, clients are allowed to create files on
the shared file system with the setuid or setgid
mode enabled. Specifying
nosuid causes the server
file system to silently ignore any attempt to
enable the setuid or setgid mode bits.
public Moves the location of the public file handle from
root (
/) to the exported directory for WebNFS-
enabled browsers and clients. This option does not
enable WebNFS service; WebNFS is always on. Only
one file system per server may use this option.
Any other option, including the
ro=
list and
rw=
list options can be included with the
public option.
ro Sharing is read-only to all clients.
ro=
access_list Sharing is read-only to the clients listed in
access_list; overrides the
rw suboption for the
clients specified. See
access_list below.
root=
access_list Only root users from the hosts specified in
access_list have root access. See
access_list below. By default, no host has root access, so
root users are mapped to an anonymous user ID (see
the
anon=
uid option described above). Netgroups
can be used if the file system shared is using UNIX
authentication (AUTH_SYS).
root_mapping=
uid For a client that is allowed root access, map the
root UID to the specified user id.
rw Sharing is read-write to all clients.
rw=
access_list Sharing is read-write to the clients listed in
access_list; overrides the
ro suboption for the
clients specified. See
access_list below.
sec=
mode[:
mode]...
Sharing uses one or more of the specified security
modes. The
mode in the
sec=
mode option must be a
mode name supported on the client. If the
sec=
option is not specified, the default security mode
used is AUTH_SYS. Multiple
sec= options can be
specified on the command line, although each mode
can appear only once. The security modes are
defined in
nfssec(7).
Each
sec= option specifies modes that apply to any
subsequent
window=,
rw,
ro,
rw=,
ro=, and
root=
options that are provided before another
sec=
option. Each additional
sec= resets the security
mode context, so that more
window=,
rw,
ro,
rw=,
ro=, and
root= options can be supplied for
additional modes.
sec=
none If the option
sec=
none is specified when the client
uses AUTH_NONE, or if the client uses a security
mode that is not one that the file system is shared
with, then the credential of each NFS request is
treated as unauthenticated. See the
anon=
uid option for a description of how unauthenticated
requests are handled.
secure This option has been deprecated in favor of the
sec=
dh option.
uidmap=
mapping[~
mapping]...
Where
mapping is: [
clnt]:[
srv]:
access_list Allows remapping the user ID (uid) in the incoming
request to some other uid. This effectively
changes the identity of the user in the request to
that of some other local user.
For clients where the uid in the incoming request
is
clnt and the client matches the
access_list,
change the user ID to
srv. If
clnt is asterisk
(*), all users are mapped by this rule. If
clnt is
omitted, all unknown users are mapped by this rule.
If
srv is set to -1, access is denied. If
srv is
omitted, the uid is mapped to UID_NOBODY.
The particular
mappings are separated in the
uidmap= option by tilde (~) and are evaluated in
the specified order until a match is found. Both
root= and
root_mapping= options (if specified) are
evaluated before the
uidmap= option. The
uidmap=
option is skipped in the case where the client
matches the
root= option.
The
uidmap= option is evaluated before the
anon=
option.
This option is supported only for AUTH_SYS.
window=
value When sharing with
sec=
dh, set the maximum life time
(in seconds) of the RPC request's credential (in
the authentication header) that the NFS server
allows. If a credential arrives with a life time
larger than what is allowed, the NFS server rejects
the request. The default value is 30000 seconds
(8.3 hours).
access_list The
access_list argument is a colon-separated list whose components may
be any number of the following:
hostname The name of a host. With a server configured for DNS or LDAP
naming in the nsswitch
hosts entry, any hostname must be
represented as a fully qualified DNS or LDAP name.
netgroup A netgroup contains a number of hostnames. With a server
configured for DNS or LDAP naming in the nsswitch
hosts entry, any hostname in a netgroup must be represented as a
fully qualified DNS or LDAP name.
domain name suffix To use domain membership the server must use DNS or LDAP to
resolve hostnames to IP addresses; that is, the
hosts entry
in the
/etc/nsswitch.conf must specify
dns or
ldap ahead of
nis since only DNS and LDAP return the full domain name of
the host. Other name services like NIS cannot be used to
resolve hostnames on the server because when mapping an IP
address to a hostname they do not return domain information.
For example,
NIS 172.16.45.9 --> "myhost"
and
DNS or LDAP 172.16.45.9 --> "myhost.mydomain.example.com"
The domain name suffix is distinguished from hostnames and
netgroups by a prefixed dot. For example,
rw=.mydomain.example.com
A single dot can be used to match a hostname with no suffix.
For example,
rw=.
matches "mydomain" but not "mydomain.example.com". This
feature can be used to match hosts resolved through NIS
rather than DNS and LDAP.
network The network or subnet component is preceded by an at-sign
(@). It can be either a name or a dotted address. If a
name, it is converted to a dotted address by
getnetbyname(3SOCKET). For example,
=@mynet
would be equivalent to:
=@172.16 or =@172.16.0.0
The network prefix assumes an octet-aligned netmask
determined from the zeroth octet in the low-order part of the
address up to and including the high-order octet, if you want
to specify a single IP address (see below). In the case
where network prefixes are not byte-aligned, the syntax
allows a mask length to be specified explicitly following a
slash (/) delimiter. For example,
=@theothernet/17 or =@172.16.132/22
where the mask is the number of leftmost contiguous
significant bits in the corresponding IP address.
When specifying individual IP addresses, use the same @
notation described above, without a netmask specification.
For example:
=@172.16.132.14
Multiple, individual IP addresses would be specified, for
example, as:
root=@172.16.132.20:@172.16.134.20
A prefixed minus sign (-) denies access to that component of
access_list. The list is searched sequentially until a match is found
that either grants or denies access, or until the end of the list is
reached. For example, if host "terra" is in the "engineering"
netgroup, then
rw=-terra:engineering
denies access to "terra" but
rw=engineering:-terra
grants access to "terra".
OPERANDS
The following operands are supported:
pathname The pathname of the file system to be shared.
FILES
/etc/dfs/fstypes list of system types, NFS by default
/etc/dfs/sharetab system record of shared file systems
/etc/nfs/nfslogtab system record of logged file systems
/etc/nfs/nfslog.conf logging configuration file
EXIT STATUS
The
share_nfs utility exits 0 on success, and >0 if an error occurs.
EXAMPLES
Example 1 Sharing A File System With Logging Enabled The following example shows the
/export file system shared with logging
enabled:
share -o log /export
The default global logging parameters are used since no tag identifier
is specified. The location of the log file, as well as the necessary
logging work files, is specified by the global entry in
/etc/nfs/nfslog.conf. The
nfslogd(8) daemon runs only if at least one
file system entry in
/etc/dfs/dfstab is shared with logging enabled
upon starting or rebooting the system. Simply sharing a file system
with logging enabled from the command line does not start the
nfslogd(8).
Example 2 Remap A User Coming From The Particular NFS Client The following example remaps the user with uid
100 at client
10.0.0.1 to user
joe:
share -o uidmap=100:joe:@10.0.0.1 /export
SEE ALSO
getnetbyname(3SOCKET),
netgroup(5),
nfslog.conf(5),
acl(7),
attributes(7),
nfssec(7),
mount(8),
mountd(8),
nfsd(8),
nfslogd(8),
share(8),
unshare(8)NOTES
If the
sec= option is presented at least once, all uses of the
window=,
rw,
ro,
rw=,
ro=, and
root= options must come after the first
sec=
option. If the
sec= option is not presented, then
sec=
sys is implied.
If one or more explicit
sec= options are presented,
sys must appear in
one of the options mode lists for accessing using the AUTH_SYS security
mode to be allowed. For example:
share -F nfs /var
share -F nfs -o sec=sys /var
grants read-write access to any host using AUTH_SYS, but
share -F nfs -o sec=dh /var
grants no access to clients that use AUTH_SYS.
Unlike previous implementations of
share_nfs, access checking for the
window=,
rw,
ro,
rw=, and
ro= options is done per NFS request, instead
of per mount request.
Combining multiple security modes can be a security hole in situations
where the
ro= and
rw= options are used to control access to weaker
security modes. In this example,
share -F nfs -o sec=dh,rw,sec=sys,rw=hosta /var
an intruder can forge the IP address for "hosta" (albeit on each NFS
request) to side-step the stronger controls of AUTH_DES. Something
like:
share -F nfs -o sec=dh,rw,sec=sys,ro /var
is safer, because any client (intruder or legitimate) that avoids
AUTH_DES only gets read-only access. In general, multiple security
modes per share command should only be used in situations where the
clients using more secure modes get stronger access than clients using
less secure modes.
If
rw= and
ro= options are specified in the same
sec= clause, and a
client is in both lists, the order of the two options determines the
access the client gets. If client "hosta" is in two netgroups,
"group1" and "group2", in this example, the client would get read-only
access:
share -F nfs -o ro=group1,rw=group2 /var
In this example "hosta" would get read-write access:
share -F nfs -o rw=group2,ro=group1 /var
If within a
sec= clause, both the
ro and
rw= options are specified, for
compatibility, the order of the options rule is not enforced. All
hosts would get read-only access, with the exception to those in the
read-write list. Likewise, if the
ro= and
rw options are specified,
all hosts get read-write access with the exceptions of those in the
read-only list.
The
ro= and
rw= options are guaranteed to work over UDP and TCP but may
not work over other transport providers.
The
root= option with AUTH_SYS is guaranteed to work over UDP and TCP
but may not work over other transport providers.
The
root= option with AUTH_DES is guaranteed to work over any transport
provider.
There are no interactions between the
root= option and the
rw,
ro,
rw=,
and
ro= options. Putting a host in the root list does not override the
semantics of the other options. The access the host gets is the same
as when the
root= option is absent. For example, the following share
command denies access to "hostb":
share -F nfs -o ro=hosta,root=hostb /var
The following gives read-only permissions to "hostb":
share -F nfs -o ro=hostb,root=hostb /var
The following gives read-write permissions to "hostb":
share -F nfs -o ro=hosta,rw=hostb,root=hostb /var
If the file system being shared is a symbolic link to a valid pathname,
the canonical path (the path which the symbolic link follows) is
shared. For example, if
/export/foo is a symbolic link to
/export/bar,
the following share command results in
/export/bar as the shared
pathname (and not
/export/foo):
share -F nfs /export/foo
An NFS mount of
server:/export/foo results in
server:/export/bar really
being mounted.
This line in the
/etc/dfs/dfstab file shares the
/disk file system
read-only at boot time:
share -F nfs -o ro /disk
The
mountd(8) process allows the processing of a path name that
contains a symbolic link. This allows the processing of paths that are
not themselves explicitly shared with
share_nfs. For example,
/export/foo might be a symbolic link that refers to
/export/bar which
has been specifically shared. When the client mounts
/export/foo the
mountd processing follows the symbolic link and responds with the
/export/bar. The NFS Version 4 protocol does not use the mountd
processing and the client's use of
/export/foo does not work as it does
with NFS Version 2 and Version 3 and the client receives an error when
attempting to mount
/export/foo.
The
nohide option violates RFC 1094,
Network File System Protocol Specification and RFC 1813,
NFS: Network File System Version 3 Protocol Specification The
nohide option is provided for compatibility with Linux NFS.
illumos November 22, 2021 illumos