Advanced Server (AS/U) implements NT style file system permissions
which are not part of the HP-UX file system. This is done through
an Access Control List (ACL) database. For every file or directory
open, the ACL database must be queried to determine if the user/group
making the request has permission to perform the operation. If
too many ACLs are created, the ACL database grows to an excessive
size and AS/U performance may be impacted.
An ACL is not required for each directory or file. If an ACL
is not present, permissions are inherited from the parent directory.
By default, an ACL is created for each new directory, but not for
new files. An ACL has one or more Access Control Entries (ACE)
each of which specifies the permissions that a particular user or
group has to that directory or file.
As ACL entries are created, the ACL database file (/var/opt/asu/lanman/datafiles/acl)
is automatically extended from its initial size; the ACL file does
not automatically contract as ACL/ACE entries are deleted. Since
limiting the physical size of the ACL file is important for good
performance, every effort should be made to minimize the number
of ACL/ACEs used.
Here are some steps you can take to avoid creating unnecessary
ACL/ACEs:
Use inherited access control entries
rather than explicit access control entries whenever possible. Permissions
are passed down from parent directories to child directories and
to the files in the child directories, thus only one set of ACEs
are required at the root directory.
Put users with the same permissions in the same
group and give permission to the group as a whole and not to individual
users. In this way, one ACE for the group can replace many ACEs
necessary for individual users.
Set both the ForceDirectoryAcl and ForceFileAcl
registry values to off using the regconfig command on the server
or the regedt32 utility on the client. When you set these values
to off, newly created directories and files get their permissions
through inheritance and no new ACLs are created. If you later move
a directory or file, ACLs will be created to assure the permissions
stay the same as they were before the file or directory was moved.
By setting the registry values to off, effective permissions will
not be different.
Avoid using the Replace Permissions on Existing
Files and Replace Permissions on Subdirectories in the Security/Directory
permissions tab of Explorer. These options may create unnecessary
ACLs, so use them only when they are needed and worthwhile.
Restrict Change Permissions permission to administrative
users who understand the ACL concepts. Educated users will be less
likely to create unnecessary ACLs.
If the ACL database file is already too large, use the acladm
utility to identify and eliminate unnecessary ACL/ACE entries:
Use the acladm -E option to list all
file paths with ACL entries so that redundant or obsolete ACLs can
be deleted using the net perms /revoke ASU command.
Use the acladm -P (prune) option to eliminate ACLs
that refer to files or directories that have been removed by UNIX
users.
Use the acladm -S (squeeze) option to combine related
ACEs into a single ACE.
Use the acladm -U (unknown) option to remove ACEs
that refer to deleted or unknown AS/U users.
Removing ACL/ACEs will not reduce the ACL data file
size;however, entries are freed so that new ACL/ACEs can be added
without growing the physical size of the file.
After all unnecessary ACL/ACE entries have been removed use
the blobadm utility to physically shrink the ACL database file,
blobadm -qA. The server must be stopped in order to use this option.