This chapter describes how to administer application specific contexts.
File contexts may be:
Created using the fncreate_fs command (see "Creating a File Context With fncreate_fs ").
Inspected using the fnlist command (see "Listing the Context") or the fnlookup command (see "Displaying the Binding").
Pruned or destroyed using fnunbind command (see "Removing a Composite Name") or the fndestroy command (see "Destroying a Context").
The fncreate_fs command creates file contexts for organizations and sites. It may also be used to override the default file contexts for users and hosts that are created by the fncreate command.
There are two methods of using the fncreate_fs command.
Input file. File context bindings may be provided by an input file (See "Creating File Contexts With an Input File")
Command line. File context bindings may be created from the command line (See "Creating File Contexts With Command-line Input").
The two methods of fncreate_fs have the following syntax:
fncreate_fs [-v] [-r] -f file composite_name fncreate_fs [-v] [-r] composite_name [options] [location...] |
Option |
Description |
---|---|
composite_name |
The composite name of the file context. |
-f file |
Use an input file named file. |
options |
Mount options |
location |
Mount location. |
-v |
Sets verbose output, displaying information about the contexts being created and modified. |
-r |
Replaces the bindings in the context named by composite_name --and all of its subcontexts--with only those specified in the input. This is equivalent to destroying the context (and, recursively, its subcontexts), and then running fncreate_fs without this option. The -r option should be used with care. |
The fncreate_fs command manipulates FNS contexts and bindings of the onc_fn_fs reference type. It uses an address of type onc_fn_fs_mount to represent each remote mount point. The data associated with an address of this type are the corresponding mount options and locations in a single, XDR-encoded string.
The input file supplies the names and values to be bound in the context of composite_name. Its format is based upon and similar, but not identical, to the format of indirect automount maps. The input file contains one or more entries with the form:
name [options] [location...] |
name is the reference name. The name field may be a simple atomic name or a slash-separated hierarchical name. It may also be "." (dot), in which case the reference is bound directly to composite_name.
options are mount options, if any. The options field begins with a hyphen ("-"). This is followed by a comma-separated list (with no spaces) of the mount options to use when mounting the directory. These options also apply to any subcontexts of composite_name/name that do not specify mount options of their own.
location is the mount location. The location field specifies the host or hosts that serve the files for composite_name/name. In a simple NFS mount, location takes the form:
host:path |
Where host is the name of the server from which to mount the file system and path is the path name of the directory to mount.
For each entry a reference to the mount locations and the corresponding mount options is bound to the name composite_name/name.
If options and location are both omitted, then no reference is bound to composite_name/name. Any existing reference is unbound.
For example, suppose you want kuanda's file system to be an NFS mount of the directory /export/home/kuanda from host altair as shown in Figure 21-4. The command would be run as follows:
% fncreate_fs -f infile user/kuanda/fs |
. altair:/export/home/kuanda |
To set up a more complex file system distributed over more than one server as shown in Figure 21-5, run the command
% fncreate_fs -f infile org/sales/fs |
with infile containing
tools/db altair:/export/db project altair:/export/proj project/lib altair:/export/lib project/src deneb:/export/src |
To change the NFS mounts for project and its subcontexts src and lib to be read-only, you can change infile as follows:
tools/db svr1:/export/db project -ro svr1:/export/projproject/lib altair:/export/lib project/src svr2:/export/src |
The -ro is unnecessary in the third and fourth lines because src and lib are subcontexts of project, they will inherit the -ro mount option from above.
The following input file would make all of the mounts read-only except for org/sales/fs/project/src.
. -ro tools/db svr1:/export/db project svr1:/export/proj project/lib altair:/export/lib project/src -rw svr2:/export/src |
The fncreate_fs command also allows the binding description to be provided on the command line:
fncreate_fs composite_name [mmount_options] [mount_location ...] |
This is equivalent to using the input file form of the command but entering the individual bindings from your keyboard. The previous example in which kuanda's file system was set could be set from the command line as follows:
% fncreate_fs user/kuanda/fs altair:/export/home/kuanda |
Similarly, the hierarchy illustrated in Figure 21-5 could have been set up by running the sequence of commands:
% fncreate_fs org/sales/fs/tools/db altair:/export/db % fncreate_fs org/sales/fs/project altair:/export/proj % fncreate_fs org/sales/fs/project/lib altair:/export/lib % fncreate_fs org/sales/fs/project/src deneb:/export/src |
To make all three of the mounts read-only, you would run this command:
% fncreate_fs org/sales/fs -ro |
The following two sections apply to both input file and command-line input formats.
Multiple location fields may be specified for NFS file systems that are exported from multiple, functionally equivalent locations:
% fncreate_fs org/sales/fs altair:/sales cygnus:/sales |
The automounter will attempt to choose the best server from among the alternatives provided. If several locations in the list share the same path name, they may be combined using a comma-separated list of host names:
% fncreate_fs org/sales/fs altair,cygnus:/sales |
The hosts may be weighted, with the weighting factor appended to the host name as an integer in parentheses: the lower the number, the more desirable the server. The default weighting factor is zero (most desirable). Negative numbers are not allowed.
The following example illustrates one way to indicate that cygnus is the preferred server:
% fncreate_fs org/sales/fs altair(2),cygnus(1):/sales |
Variable names, prefixed by $, may be used in the options or location fields of fncreate_fs. For example, a mount location may be given as:
altair:/export/$CPU |
The automounter will substitute client-specific values for these variables when mounting the corresponding file systems. In the above example, $CPU is replaced by the output of uname -p; for example, sparc.
For additional compatibility with automount maps, the following input file format is also accepted by fncreate_fs:
name [mount_options] [mount_location ...] \ /offset1 [mount_options1] mount_location1 ... \ /offset2 [mount_options2] mount_location2 ... \ ... |
Where each offset field is a slash-separated hierarchy. The backslash (\) indicates the continuation of a single long line. This is interpreted as being equivalent to:
name [mount_options] [mount_location ...] \ name/offset1 [ mount_options1] mount_location1 ... \ name/offset2 [mount_options2] mount_location2 ...... |
The first line is omitted if both mount_options and mount_location are omitted. This format is for compatibility only. It provides no additional functionality, and its use is discouraged.