permit − RCS directory-level permissions


permit [options] [directory-specifications]


Permit maintains a special-purpose RCS archive in each RCS directory in a tree of files. The special archive records the access list for users who are allowed to use the checkin and checkout utilities to place locks on archives in the corresponding directories, as well as the initial revision number for new files.


Permit scans each directory-tree given as an argument. If no argument is given, permit processes the tree beginning with ".".

Each time an RCS directory is found, permit determines if the directory-access file exists.

If no directory-access file is found, permit scans through all other archives in the directory to infer the baseline version, and from that the initial revision number for new files which may be created in that directory. Then, permit creates a directory access file. By default, the RCS directory owner is on each access list − otherwise manipulating it is complicated.

Normally, permit issues rcs commands to add the directory owner to the access list of each archive. The "−p" (purge) option is used to delete all usernames from the access lists.



adds the list of specified users to each RCS archive access list.


specifies the baseline version for the directory. This must be an integer greater than one. Permit verifies that no version in the directory is higher than this value. Thereafter, this sets the initial version for new files which are archived using checkin in the directory.


expunges the list of specified users to each RCS archive access list.


show symbolic links


overrides permit’s default revision-log message "BASELINE date" which is entered in the RCS,v file.


no-op mode causes permit to run, showing what it would try to do.


purges all usernames from each RCS archive access list.


makes the listing less verbose (i.e., suppresses display of the rcs and ci commands, and of the directory tree).


same as "−q".


generates a report showing which archives have the specified users in their access lists.


makes the display more verbose; the names of files which cannot be opened are reported.


An example of the use of permit is shown below. The user has asked for a report showing what actions permit would make on the current directory tree. The directory-access archives are not found, so permit scans through each RCS archive to obtain the baseline revision number:

bsd4.2(64) permit -n
** path = .
   1:    ./
   2:    |-- RCS/
   3:    |---|-- 2.1 > COPYRIGHT,v (dickey,impact)
   4:    |---|-- 2.2 > Makefile,v (dickey,impact)
   5:    |---|-- 2.2 > README,v (dickey,impact)
   6:    |---|-- 2.1 > descrip.mms,v (dickey,impact)
ci -mPERMIT FILE -r2.1 ./RCS ./RCS,v
rcs -aimpact ./RCS,v
   7:    |-- certificate/
   8:    |---|-- RCS/
   9:    |---|---|-- 2.1 > Makefile,v (dickey,impact)
  10:    |---|---|-- 2.1 > config_sheet.txt,v (dickey,impact)
  11:    |---|---|-- 2.1 > descrip.mms,v (dickey,impact)
  12:    |---|---|-- 2.1 > release_notes.txt,v (dickey,impact)


Permit is a C-language program which runs in a portable POSIX environment.

Environment variables include:

specifies the directory in which permit will find the ",v" files. If not specified, permit assumes "RCS".


Permit is a single binary file, "permit". Within each RCS directory, permit maintains an archive "RCS,v", which records the directory-access list, as well as the beginning revision number for new files. The directory-acces s archive file is named so that the set-uid applications checkin and checkout are unable to modify it.




baseline, rcs (1), ci (1).


Thomas E. Dickey <>