2009/184 SMB/CIFS Share Exec Properties
Edward Pilatowicz
edward.pilatowicz at Sun.COM
Mon Mar 23 10:47:14 PDT 2009
having worked on frameworks with lots of callbacks, i just have one nit
comment.
the names of the callbacks (map, and unmap) are ambigious wrt when they
are invoked wrt their associated event. i think it's implied that map
will be invoked after a mapping is established, and unmap will before,
but it would be nice if the name of these callbacks was changed so that
this was explicit. say post-map and pre-unmap.
ed
On Fri, Mar 20, 2009 at 03:43:37PM -0700, Jordan Brown wrote:
> I am sponsoring the following for fast track approval.
> The timer expires 27 March 2009.
>
> 1. Introduction
> 1.1. Project/Component Working Name:
> SMB/CIFS share exec properties
> 1.2. Name of Document Author/Supplier:
> Author: Hoa Nguyen
> 1.3 Date of This Document:
> 20 March, 2009
>
> A patch binding is requested for this change.
> This is a Committed interface.
>
> 4. Technical Description
>
> This fast-track proposes new service properties to support the
> execution of a command or script when connecting or disconnecting
> CIFS shares. These properties are configurable with sharectl(1M)
> and will be applied to all shares. The command may be used to
> perform automated administrative tasks each time a share is mapped
> or disconnected, for example, to create home directories or monitor
> resources. The command will be executed using the credentials of
> the smbd daemon, which, by default, is root/sys. The command
> will be executed using one of the exec() functions. The content
> of the environment is not specified.
>
> See also 6766364 Add scripting support to Autohome.
>
> In order to configure properties using sharectl(1M), a user must
> be the superuser or assume an equivalent role to obtain the
> solaris.smf.value.smb and solaris.smf.manage.smb RBAC
> authorizations, or use the SMB Management RBAC profile, which
> is part of the File System Management profile.
>
> Additional privileges are required to allow the smbd process to
> fork a child process and execute the commands. The privileges
> will be enabled in the effective set and inheritable set when
> needed for command execution. Otherwise, they will be disabled.
>
> The following privileges are enabled for the exec'd process:
> PRIV_FILE_CHOWN, PRIV_FILE_CHOWN_SELF, PRIV_FILE_DAC_EXECUTE,
> PRIV_FILE_DAC_READ, PRIV_FILE_DAC_SEARCH, PRIV_FILE_DAC_WRITE,
> PRIV_FILE_LINK_ANY, PRIV_FILE_OWNER, PRIV_FILE_SETID,
> PRIV_PROC_EXEC, PRIV_PROC_FORK, PRIV_PROC_INFO, PRIV_PROC_OWNER,
> PRIV_PROC_SESSION, PRIV_PROC_SETID, PRIV_SYS_CONFIG,
> PRIV_SYS_LINKDIR, and PRIV_SYS_MOUNT.
>
> The service property names and values are as follows:
>
> map The value is a command to be executed when connecting
> to the share. The command can take the following
> arguments, which will be substituted when the command
> is exec'd as described below.
>
> %U - Windows username.
>
> %D - Name of the domain or workgroup of %U.
>
> %h - The server hostname.
>
> %M - The client hostname, or "" if not available.
>
> %L - The server NetBIOS name.
>
> %m - The client NetBIOS name, or "" if not available.
> This option is only valid for NetBIOS connections
> (port 139).
>
> %I - The IP address of the client machine.
>
> %i - The local IP address to which the client is
> connected.
>
> %S - The name of the share.
>
> %P - The root directory of the share.
>
> %u - The UID of the Unix user.
>
> unmap The value is a command to be executed when
> disconnecting the share. The command can take the
> same substitutions listed on the map property.
>
> disposition A value that controls whether to disconnect the share
> or proceed if the map command fails. The disposition
> property only has meaning when the map property has
> been set. Otherwise it will have no effect.
>
> disposition = [ continue | terminate ]
>
> continue Proceed with share connection if the
> map command fails. This is the default
> in the event that disposition is not
> specified.
>
> terminate Disconnect the share if the map
> command fails.
>
> Examples of setting these properties with sharectl(1M):
>
> sharectl set -p map="/tmp/map_script %U" smb
> sharectl set -p unmap=/tmp/unmap_script smb
> sharectl set -p disposition=terminate smb
>
> For example,
>
> sharectl set -p map="/tmp/map_script %U" smb
>
> would be invoked with arguments of the form:
>
> arg0 = /tmp/map_script
> arg1 = <Windows username>
> arg2 = NULL
>
> 6. Resources and Schedule
> 6.4. Steering Committee requested information
> 6.4.1. Consolidation C-team Name:
> ON
> 6.5. ARC review type: FastTrack
> 6.6. ARC Exposure: open
More information about the opensolaris-arc
mailing list