nistbladm -a | -A [-D defaults] colname = value... tablename
nistbladm -a | -A [-D defaults] indexedname
nistbladm -c [-D defaults] [-p path] [-s sep] type colname = [flags] [, access]... tablename
nistbladm -d tablename
nistbladm -e | -E colname = value... indexedname
nistbladm -m colname = value... indexedname
nistbladm -r | -R [colname = value...] tablename
nistbladm -r | -R indexedname
nistbladm -u [-p path] [-s sep] [-t type] [colname = access...] tablename
The nistbladm command is used to administer NIS+ tables. There are five primary operations that it performs: creating and deleting tables, adding entries to, modifying entries within, and removing entries from tables.
Though NIS+ does not place restrictions on the size of tables or entries, the size of data has an impact on the performance and the disk space requirements of the NIS+ server. NIS+ is not designed to store huge pieces of data, such as files; instead, pointers to files should be stored in NIS+.
NIS+ design is optimized to support 10,000 objects with a total size of 10M bytes. If the requirements exceed the above, it is suggested that the domain hierarchy be created, or the data stored in the tables be pointers to the actual data, instead of the data itself.
When creating tables, a table type, type, and a list of column definitions must be provided.
type is a string that is stored in the table and later used by the service to verify that entries being added to it are of the correct type.
Syntax for column definitions is:
flags is a combination of:
access is specified in the format as defined by the nischmod(1) command.
When manipulating entries, this command takes two forms of entry name. The first uses a series of space separated colname=value pairs that specify column values in the entry. The second is a NIS+ indexed name, indexedname, of the form:
[ colname=value, ... ],tablename
The following options are supported:
-a | A
Normally, NIS+ reports an error if an attempt is made to add an entry to a table that would overwrite an entry that already exists. This prevents multiple parties from adding duplicate entries and having one of them get overwritten. If you wish to force the add, the uppercase `A' specifies that the entry is to be added, even if it already exists. This is analogous to a modify operation on the entry.
The change (colname=value) may affect other entries in the table if the change results in an entry whose indexed name is different from indexedname and which matches that of another existing entry. In this case, the -e option will fail and an error will be reported. The -E option will force the replacement of the existing entry by the new entry (effectively removing two old entries and adding a new one).
Example 1 Creating an Unmodifiable Table
This example creates a table named hobbies in the directory foo.com. of the type hobby_tbl with two searchable columns, name and hobby.
example% nistbladm -c hobby_tbl name=S,\ a+r,o+m hobby=S,a+r hobbies.foo.com.
The column name has read access for all (that is, owner, group, and world) and modify access for only the owner. The column hobby is readable by all, but not modifiable by anyone.
In this example, if the access rights had not been specified, the table's access rights would have come from either the standard defaults or the NIS_DEFAULTS variable (see below).
Example 2 Adding Entries to the Table
To add entries to this table:
example% nistbladm -a name=bob hobby=skiing hobbies.foo.com. example% nistbladm -a name=sue hobby=skiing hobbies.foo.com. example% nistbladm -a name=ted hobby=swimming hobbies.foo.com.
Example 3 Adding the Concatenation Path
In the following example, the common root domain is foo.com (NIS+ requires at least two components to define the root domain) and the concatenation path for the subdomains bar and baz are added:
example% nistbladm -u -p hobbies.bar.foo.com.:hobbies.baz.foo.com. \ hobbies
Example 4 Deleting Skiers from the List
To delete the skiers from our list:
example% nistbladm -R hobby=skiing hobbies.foo.com.
Note: The use of the -r option would fail because there are two entries with the value of skiing.
Example 5 Naming a Column with no Flags Set
To create a table with a column that is named with no flags set, you supply only the name and the equals (=) sign as follows:
example% nistbladm -c notes_tbl name=S,a+r,o+m note= notes.foo.com.
This example created a table, named notes.foo.com., of type notes_tbl with two columns name and note. The note column is not searchable.
Example 6 Protecting Terminal Characters
When entering data for columns in the form of a value string, it is essential that terminal characters be protected by single or double quotes. These are the characters equals (=), comma (,), left bracket ([), right bracket (]), and space ( ). These characters are parsed by NIS+ within an indexed name. These characters are protected by enclosing the entire value in double quote (") characters as follows:
example% nistbladm -a fullname="Joe User" nickname=Joe nicknames
If there is any doubt about how the string will be parsed, it is better to enclose it in quotes.
The following exit values are returned:
See attributes(5) for descriptions of the following attributes:
nis+(1), niscat(1), nischmod(1), nischown(1), nischttl(1), nisdefaults(1), nismatch(1), nissetup(1M), attributes(5)
NIS+ might not be supported in future releases of the Solaris operating system. Tools to aid the migration from NIS+ to LDAP are available in the current Solaris release. For more information, visit http://www.sun.com/directory/nisplus/transition.html.
To modify one of the entries, say, for example, from "bob" to "robert":
example% nistbladm -m name=robert [name=bob],hobbies
Notice that "[name=bob],hobbies" is an indexed name, and that the characters `[' (open bracket) and `]' (close bracket) are interpreted by the shell. When typing entry names in the form of NIS+ indexed names, the name must be protected by using single quotes.
It is possible to specify a set of defaults such that you cannot read or modify the table object later.