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