tmpreaper man page on DragonFly

Man page or keyword search:  
man Server   44335 pages
apropos Keyword Search (all sections)
Output format
DragonFly logo
[printable version]

TMPREAPER(8)							  TMPREAPER(8)

NAME
       tmpreaper  -  removes files which haven't been accessed for a period of
       time

SYNOPSIS
       tmpreaper  [-htvfmMsaT]	 [--help]   [--test]   [--verbose]   [--force]
       [--delay=x] [--runtime=x] [--showdeleted] [--ctime] [--mtime] [--mtime-
       dir]   [--symlinks]    [--all]	 [[--protect	'<shell_pattern>']...]
       <time_spec> <dirs>...

DESCRIPTION
       tmpreaper recursively searches for and removes files and empty directo‐
       ries which haven't been accessed for a given number of  seconds.	  Nor‐
       mally,  it's  used to clean up directories which are used for temporary
       holding space, such as "/tmp".  Please read  the	 WARNINGS  section  of
       this manual.

       When changing directories, tmpreaper is very sensitive to possible race
       condition security exploits[1], and will exit with an error if  one  is
       detected.   It  does  not follow symbolic links in the directories it's
       cleaning (even if a symbolic link is given as its argument), never per‐
       forms chdir(".."), will not switch file systems, and only removes empty
       directories and regular files. Unless your machine is one with lots  of
       relatively  untrusted  users,  such as an ISP or school, you don't need
       this program; `find ... -exec rm ...' works just as well when you don't
       have  to be concerned about people trying to exploit the race condition
       on you.

       tmpreaper will stop itself after almost one minute with an  appropriate
       warning	message, as attempts to keep it running long enough so that it
       runs in parallel with another instance of itself may also lead to  pos‐
       sible  vulnerabilities.	Normally,  tmpreaper won't need that amount of
       time.  If your system is so slow that it does, try to configure	things
       so  that	 this doesn't happen. As a last resort, the --runtime=x option
       can be used to set the  number  of  seconds  after  which  the  timeout
       occurs; the default setting is 55 seconds.

       tmpreaper  dates	 files	by  their  atime,  not their mtime, unless you
       select the --mtime option.  If files aren't being removed  when	ls  -l
       implies	they should be, use stat(1) or ls --time=access to examine the
       file's atime and see if that helps to explain the problem.

       Additionally, tmpreaper can be  instructed  to  also  check  the	 ctime
       (inode  change  time, which is updated e.g. when the file is created or
       permissions are changed). This is primarily useful  when	 tmpreaper  is
       used  to clean up directories that are accessible as a Samba share; DOS
       (and Windows) PCs preserve the mtime and the atime when	copying	 to  a
       new  file,  so  that  it	 appears  that	the newly created file is old.
       tmpreaper will remove such files is the atime  is  beyond  the  removal
       time,  even though they were just created. This is avoided by using the
       --ctime option.

       As testing the contents of subdirectories will  update  those  directo‐
       ries'  atime,  empty  directories  won't be removed. To circumvent this
       problem you can use the --mtime-dir option, which will switch on	 mtime
       checking for directories only. Using --mtime-dir in addition to --mtime
       doesn't do anything useful.

       The <time_spec> parameter defines the age threshold for removing files.
       If  the file has not been accessed for <time_spec>, it becomes eligible
       for removal.  The <time_spec> should be a number, defaulting to	hours,
       optionally  suffixed by one character: `d' for days, `h' for hours, `m'
       for minutes, or `s' for seconds.	 Following the	time  option,  one  or
       more directories must be given for tmpreaper to clean up.

       On  linux ext2/ext3 filesystems, no errors will be given when trying to
       remove files marked as immutable. A common situation  for  this	(nowa‐
       days)  is the ext3 .journal file. However, there may of course be other
       files marked as such by the system administrator.

OPTIONS
       <noargs>, -h, --help
	      Print a brief version, copyright, and usage statement on stderr,
	      then exit with error status 1.

       -t, --test
	      Don't  actually  remove  any  files, but go through the motions,
	      checking through the directory, then pretend to remove the  eli‐
	      gible files.

       -v, --verbose
	      Print  a	verbose	 display.  Two	levels of verbosity are avail‐
	      able---use this option twice to get  the	most  verbose  output.
	      The --test option automaticly sets --verbose once.
	      Higher numbers mean more output (max. is 3).
	      To force normal verbosity after --test, use "--verbose=0".  This
	      will generally only show error messages. Use "--test --verbose=0
	      --showdeleted"  to  give a shellscript-like list of actions that
	      would have been done (see the --showdeleted description below).

       --showdeleted
	      Show what files and directories are deleted. The	output	is  in
	      the  form of shell commands, i.e. "rm /dir/dir2/file" and "rmdir
	      /dir/dir2".
	      When used together with --test, this option will still cause the
	      "shell commands" to be printed, although nothing is really done.
	      Note that this may show more than without	 --test,  as  problems
	      removing the file won't be detected (e.g. immutable files).

       -f, --force
	      Remove  files even if EUID doesn't have write access (akin to rm
	      -f).  Normally, files owned by the current EUID, with  no	 write
	      bit set are not removed.

       --delay=x
	      Delay execution at the start for a random time, up to x seconds;
	      if no value is specified, the default maximum time to  delay  is
	      256  seconds.   This is an option useful in cron scripts to make
	      the execution of tmpreaper less predictable, thus making	things
	      a	 little harder for those who would attempt to use tmpreaper to
	      thwart security.

       -T x, --runtime=x
	      Execution of tmpreaper will aborted after x seconds; this is  to
	      prevent  attacks	that  create many, many files.	By default the
	      timeout is set to 55 seconds.  A value of 0  will	 disable  this
	      feature,	which is not advised as this feature prevents possible
	      race-conditions between different instances of tmpreaper.

       -m, --mtime
	      Base the decision of whether to remove the file  on  its	mtime,
	      rather than on its atime.

       -M, --mtime-dir
	      Base  the	 decision  of  whether	to remove the directory on its
	      mtime, rather than on its atime.

       -c, --ctime
	      Base the decision of whether to remove the file on its ctime, in
	      addition	to  its atime.	Only applicable if the --mtime options
	      is not given!

       -s, --symlinks
	      Remove symlinks too, not just regular files and directories.

       -a, --all
	      Remove all file types, not just  regular	files,	symlinks,  and
	      directories.

       --protect '<shell_pattern>'
	      Protect  the files that match the <shell_pattern> from deletion.
	      This option may be used more than once.  It has  no  one	letter
	      abbreviation, you must spell out the full word "protect".

	      If  you do not enclose the <shell_pattern> in single quotes, the
	      shell will perform the  expansion	 before	 tmpreaper  reads  its
	      argument	array.	 The  program does not support that syntax, so
	      you must use single quotes around the glob pattern.

	      tmpreaper will chdir(2) into  each  of  the  directories	you've
	      specified	  for  cleanup,	 and  check  for  files	 matching  the
	      <shell_pattern> there.  It then builds a list of them, and  uses
	      that to protect them from removal.  For example:

	      tmpreaper --test --verbose --protect \
	       '.X*-{lock,unix,unix/*}' --protect '.ICE-{unix{/*,}}' \
	       5d /tmp	# 5 day grace period

TIPS
       As  long as there are files present inside a subdirectory, it won't get
       removed.	 You can use a non-writable, self-owned	 file,	perhaps	 named
       ".tmpreaper",  or,  if you are su, a file that has the ext2fs immutable
       attribute set, to keep a subdirectory from being deleted.   Of  course,
       you  could  just	 as  easily use use the --protect option to obtain the
       same result.

       Because the command line argument processing is	implemented  with  GNU
       getopt_long(3)[2],  you	may  order the arguments thusly, if it pleases
       you:

       tmpreaper --test --verbose 5h \
	--protect './tmp/{blah?,dir{/blah4,}}' ./tmp \
	--protect '/tmp/.X*' /tmp

	... Note that if you use --all or  --symlinks,	it  will  have	global
       effect.	 If you only want it turned on for one directory, you must use
       separate commands.

WARNINGS
       Please do not ever run tmpreaper on  `/'!!!  There  are	no  safeguards
       against	this built into the program, because that would make it diffi‐
       cult to use in a chrooted environment.

SEE ALSO
       chattr(1) chdir(2) chroot(8)  cron(1)  getopt_long(3)  ls(1)  lsattr(1)
       rm(1) stat(1)

       [1]  http://seclists.org/lists/bugtraq/1996/May/0046.html or
	    http://www.security-express.com/archives/bugtraq/1996_2/0054.html

	    http://linuxgazette.net/18/tmp.html
	    (formerly http://www.linuxgazette.com/issue18/tmp.html)

	    http://linuxgazette.net/20/followup.html

       [2] info:(libc)Long Options

AUTHOR
	   Karl M. Hegbloom <karlheg@debian.org>

       Mostly based on `tmpwatch-1.2/1.4', by:
	   Erik Troan <ewt@redhat.com>

       Now being maintained for Debian by:
	   Paul Slootman <paul@debian.org>

4th Berkeley Distribution	Mon May 19 2008			  TMPREAPER(8)
[top]

List of man pages available for DragonFly

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net