=head1 NAME

fs cleanacl - Remove obsolete entries from an ACL

=head1 SYNOPSIS

fs cleanacl [B<-path> I<dir/file path> [I<dir/file path> ...]]  [B<-help>]

fs cl [B<-p> I<dir/file path> [I<dir/file path> ...]]  [B<-h>]

=head1 DESCRIPTION

The C<fs cleanacl> command removes from the access control list (ACL) of
each specified directory or file any entry that refers to a user or
group that no longer has a Protection Database entry. Such an entry
appears on the ACL as an AFS user ID number (UID) rather than a name,
because without a Protection Database entry, the File Server cannot
translate the UID into a name.

Cleaning access control lists in this way not only keeps them from
becoming crowded with irrelevant information, but also prevents the
new possessor of a recycled AFS UID from obtaining access intended for
the former possessor of the AFS UID. (Note that recycling UIDs is not
recommended in any case.)

=head1 OPTIONS

=over 4

=item B<-path> I<dir/file path> [I<dir/file path> ...]

Names each directory for which to clean the ACL (specifying a
filename cleans its directory's ACL). If this argument is
omitted, the current working directory's ACL is cleaned.

Specify the read/write path to each directory, to avoid the
failure that results from attempting to change a read-only
volume. By convention, the read/write path is indicated by
placing a period before the cell name at the pathname's second
level (for example, B</afs/.abc.com>). For further discussion of
the concept of read/write and read-only paths through the
filespace, see the L<fs_mkmount(1)> reference page.

=item B<-help>

Prints the online help for this command. All other valid
options are ignored.

=back

=head1 OUTPUT

If there are no obsolete entries on the ACL, the following message
appears:

Access list for I<dir/file path> is fine.

Otherwise, the output reports the resulting state of the ACL,
following the header

Access list for I<dir/file path> is now

At the same time, the following error message appears for each file in
the cleaned directories:

fs: 'I<filename>': Not a directory

=head1 EXAMPLES

The following example illustrates the cleaning of the ACLs on the
current working directory and two of its subdirectories. Only the
second subdirectory had obsolete entries on it.

    fs cleanacl -path . ./reports ./sources
   Access list for . is fine.
   Access list for ./reports is fine.
   Access list for ./sources is now
   Normal rights:
      system:authuser rl
      pat rlidwka

=head1 PRIVILEGE REQUIRED

The issuer must have the B<a> (B<administer>) permission on each directory's
ACL (or the ACL of each file's parent directory); the directory's
owner and the members of the B<system:administrators> group have the
right implicitly, even if it does not appear on the ACL.

=head1 COPYRIGHT

IBM Corporation 2000. <http://www.ibm.com/> All Rights Reserved.

Converted from html to pod by Alf Wachsmann <alfw@slac.stanford.edu>, 2003,
and Elizabeth Cassell <e_a_c@mailsnare.net>, 2004,
Stanford Linear Accelerator Center, a department of Stanford University.

=head1 SEE ALSO

L<fs_listacl(1)>,
L<fs_mkmount(1)>

=cut
