Annotation of embedaddon/sudo/doc/sudoreplay.pod, revision 1.1.1.2

1.1       misho       1: Copyright (c) 2009-2011 Todd C. Miller <Todd.Miller@courtesan.com>
                      2: 
                      3: Permission to use, copy, modify, and distribute this software for any
                      4: purpose with or without fee is hereby granted, provided that the above
                      5: copyright notice and this permission notice appear in all copies.
                      6: 
                      7: THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
                      8: WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
                      9: MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
                     10: ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
                     11: WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
                     12: ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
                     13: OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
                     14: ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
                     15: 
                     16: =pod
                     17: 
                     18: =head1 NAME
                     19: 
                     20: sudoreplay - replay sudo session logs
                     21: 
                     22: =head1 SYNOPSIS
                     23: 
                     24: B<sudoreplay> [B<-h>] [B<-d> I<directory>] [B<-f> I<filter>] [B<-m> I<max_wait>] [B<-s> I<speed_factor>] ID
                     25: 
                     26: B<sudoreplay> [B<-h>] [B<-d> I<directory>] -l [search expression]
                     27: 
                     28: =head1 DESCRIPTION
                     29: 
                     30: B<sudoreplay> plays back or lists the output logs created by B<sudo>.
                     31: When replaying, B<sudoreplay> can play the session back in real-time,
                     32: or the playback speed may be adjusted (faster or slower) based on
                     33: the command line options.
                     34: 
                     35: The I<ID> should either be a six character sequence of digits and
                     36: upper case letters, e.g. C<0100A5>, or a pattern matching the
                     37: I<iolog_file> option in the I<sudoers> file.  When a command is run
                     38: via B<sudo> with I<log_output> enabled in the I<sudoers> file, a
                     39: C<TSID=ID> string is logged via syslog or to the B<sudo> log file.
                     40: The I<ID> may also be determined using B<sudoreplay>'s list mode.
                     41: 
                     42: In list mode, B<sudoreplay> can be used to find the ID of a session
                     43: based on a number of criteria such as the user, tty or command run.
                     44: 
                     45: In replay mode, if the standard output has not been redirected,
                     46: B<sudoreplay> will act on the following keys:
                     47: 
                     48: =over 8
                     49: 
                     50: =item ' ' (space)
                     51: 
                     52: Pause output; press any key to resume.
                     53: 
                     54: =item '<'
                     55: 
                     56: Reduce the playback speed by one half.
                     57: 
                     58: =item '>'
                     59: 
                     60: Double the playback speed.
                     61: 
                     62: =back
                     63: 
                     64: =head1 OPTIONS
                     65: 
                     66: B<sudoreplay> accepts the following command line options:
                     67: 
                     68: =over 12
                     69: 
                     70: =item -d I<directory>
                     71: 
                     72: Use I<directory> to for the session logs instead of the default,
                     73: F</var/log/sudo-io>.
                     74: 
                     75: =item -f I<filter>
                     76: 
                     77: By default, B<sudoreplay> will play back the command's standard
                     78: output, standard error and tty output.  The I<-f> option can be
                     79: used to select which of these to output.  The I<filter> argument
                     80: is a comma-separated list, consisting of one or more of following:
                     81: I<stdout>, I<stderr>, and I<ttyout>.
                     82: 
                     83: =item -h
                     84: 
                     85: The B<-h> (I<help>) option causes B<sudoreplay> to print a short
                     86: help message to the standard output and exit.
                     87: 
                     88: =item -l [I<search expression>]
                     89: 
                     90: Enable "list mode".  In this mode, B<sudoreplay> will list available
1.1.1.2 ! misho      91: sessions in a format similar to the B<sudo> log file format, sorted
        !            92: by file name (or sequence number).  If a I<search expression> is
        !            93: specified, it will be used to restrict the IDs that are displayed.
        !            94: An expression is composed of the following predicates:
1.1       misho      95: 
                     96: =over 8
                     97: 
                     98: =item command I<command pattern>
                     99: 
                    100: Evaluates to true if the command run matches I<command pattern>.
                    101: On systems with POSIX regular expression support, the pattern may
                    102: be an extended regular expression.  On systems without POSIX regular
                    103: expression support, a simple substring match is performed instead.
                    104: 
                    105: =item cwd I<directory>
                    106: 
                    107: Evaluates to true if the command was run with the specified current
                    108: working directory.
                    109: 
                    110: =item fromdate I<date>
                    111: 
                    112: Evaluates to true if the command was run on or after I<date>.
                    113: See L<"Date and time format"> for a description of supported
                    114: date and time formats.
                    115: 
                    116: =item group I<runas_group>
                    117: 
                    118: Evaluates to true if the command was run with the specified
                    119: I<runas_group>.  Note that unless a I<runas_group> was explicitly
                    120: specified when B<sudo> was run this field will be empty in the log.
                    121: 
                    122: =item runas I<runas_user>
                    123: 
                    124: Evaluates to true if the command was run as the specified I<runas_user>.
                    125: Note that B<sudo> runs commands as user I<root> by default.
                    126: 
                    127: =item todate I<date>
                    128: 
                    129: Evaluates to true if the command was run on or prior to I<date>.
                    130: See L<"Date and time format"> for a description of supported
                    131: date and time formats.
                    132: 
                    133: =item tty I<tty>
                    134: 
                    135: Evaluates to true if the command was run on the specified terminal
                    136: device.  The I<tty> should be specified without the F</dev/> prefix,
                    137: e.g.  F<tty01> instead of F</dev/tty01>.
                    138: 
                    139: =item user I<user name>
                    140: 
                    141: Evaluates to true if the ID matches a command run by I<user name>.
                    142: 
                    143: =back
                    144: 
                    145: Predicates may be abbreviated to the shortest unique string (currently
                    146: all predicates may be shortened to a single character).
                    147: 
                    148: Predicates may be combined using I<and>, I<or> and I<!> operators
                    149: as well as C<'('> and C<')'> for grouping (note that parentheses
                    150: must generally be escaped from the shell).  The I<and> operator is
                    151: optional, adjacent predicates have an implied I<and> unless separated
                    152: by an I<or>.
                    153: 
                    154: =item -m I<max_wait>
                    155: 
                    156: Specify an upper bound on how long to wait between key presses or
                    157: output data.  By default, B<sudo_replay> will accurately reproduce
                    158: the delays between key presses or program output.  However, this
                    159: can be tedious when the session includes long pauses.  When the
                    160: I<-m> option is specified, B<sudoreplay> will limit these pauses
                    161: to at most I<max_wait> seconds.  The value may be specified as a
                    162: floating point number, .e.g. I<2.5>.
                    163: 
                    164: =item -s I<speed_factor>
                    165: 
                    166: This option causes B<sudoreplay> to adjust the number of seconds
                    167: it will wait between key presses or program output.  This can be
                    168: used to slow down or speed up the display.  For example, a
                    169: I<speed_factor> of I<2> would make the output twice as fast whereas
                    170: a I<speed_factor> of <.5> would make the output twice as slow.
                    171: 
                    172: =item -V
                    173: 
                    174: The B<-V> (version) option causes B<sudoreplay> to print its version number
                    175: and exit.
                    176: 
                    177: =back
                    178: 
                    179: =head2 Date and time format
                    180: 
                    181: The time and date may be specified multiple ways, common formats include:
                    182: 
                    183: =over 8
                    184: 
                    185: =item HH:MM:SS am MM/DD/CCYY timezone
                    186: 
                    187: 24 hour time may be used in place of am/pm.
                    188: 
                    189: =item HH:MM:SS am Month, Day Year timezone
                    190: 
                    191: 24 hour time may be used in place of am/pm, and month and day names
                    192: may be abbreviated.  Note that month and day of the week names must
                    193: be specified in English.
                    194: 
                    195: =item CCYY-MM-DD HH:MM:SS
                    196: 
                    197: ISO time format
                    198: 
                    199: =item DD Month CCYY HH:MM:SS
                    200: 
                    201: The month name may be abbreviated.
                    202: 
                    203: =back
                    204: 
                    205: Either time or date may be omitted, the am/pm and timezone are
                    206: optional.  If no date is specified, the current day is assumed; if
                    207: no time is specified, the first second of the specified date is
                    208: used.  The less significant parts of both time and date may also
                    209: be omitted, in which case zero is assumed.  For example, the following
                    210: are all valid:
                    211: 
                    212: The following are all valid time and date specifications:
                    213: 
                    214: =over 8
                    215: 
                    216: =item now
                    217: 
                    218: The current time and date.
                    219: 
                    220: =item tomorrow
                    221: 
                    222: Exactly one day from now.
                    223: 
                    224: =item yesterday
                    225: 
                    226: 24 hours ago.
                    227: 
                    228: =item 2 hours ago
                    229: 
                    230: 2 hours ago.
                    231: 
                    232: =item next Friday
                    233: 
                    234: The first second of the next Friday.
                    235: 
                    236: =item this week
                    237: 
                    238: The current time but the first day of the coming week.
                    239: 
                    240: =item a fortnight ago
                    241: 
                    242: The current time but 14 days ago.
                    243: 
                    244: =item 10:01 am 9/17/2009
                    245: 
                    246: 10:01 am, September 17, 2009.
                    247: 
                    248: =item 10:01 am
                    249: 
                    250: 10:01 am on the current day.
                    251: 
                    252: =item 10
                    253: 
                    254: 10:00 am on the current day.
                    255: 
                    256: =item 9/17/2009
                    257: 
                    258: 00:00 am, September 17, 2009.
                    259: 
                    260: =item 10:01 am Sep 17, 2009
                    261: 
                    262: 10:01 am, September 17, 2009.
                    263: 
                    264: =back
                    265: 
                    266: =head1 FILES
                    267: 
                    268: =over 24
                    269: 
                    270: =item F</var/log/sudo-io>
                    271: 
                    272: The default I/O log directory.
                    273: 
                    274: =item F</var/log/sudo-io/00/00/01/log>
                    275: 
                    276: Example session log info.
                    277: 
                    278: =item F</var/log/sudo-io/00/00/01/stdin>
                    279: 
                    280: Example session standard input log.
                    281: 
                    282: =item F</var/log/sudo-io/00/00/01/stdout>
                    283: 
                    284: Example session standard output log.
                    285: 
                    286: =item F</var/log/sudo-io/00/00/01/stderr>
                    287: 
                    288: Example session standard error log.
                    289: 
                    290: =item F</var/log/sudo-io/00/00/01/ttyin>
                    291: 
                    292: Example session tty input file.
                    293: 
                    294: =item F</var/log/sudo-io/00/00/01/ttyout>
                    295: 
                    296: Example session tty output file.
                    297: 
                    298: =item F</var/log/sudo-io/00/00/01/timing>
                    299: 
                    300: Example session timing file.
                    301: 
                    302: =back
                    303: 
                    304: Note that the I<stdin>, I<stdout> and I<stderr> files will be empty
                    305: unless B<sudo> was used as part of a pipeline for a particular
                    306: command.
                    307: 
                    308: =head1 EXAMPLES
                    309: 
                    310: List sessions run by user I<millert>:
                    311: 
                    312:  sudoreplay -l user millert
                    313: 
                    314: List sessions run by user I<bob> with a command containing the string vi:
                    315: 
                    316:  sudoreplay -l user bob command vi
                    317: 
                    318: List sessions run by user I<jeff> that match a regular expression:
                    319: 
                    320:  sudoreplay -l user jeff command '/bin/[a-z]*sh'
                    321: 
                    322: List sessions run by jeff or bob on the console:
                    323: 
                    324:  sudoreplay -l ( user jeff or user bob ) tty console
                    325: 
                    326: =head1 SEE ALSO
                    327: 
                    328: L<sudo(8)>, L<script(1)>
                    329: 
                    330: =head1 AUTHOR
                    331: 
                    332: Todd C. Miller
                    333: 
                    334: =head1 BUGS
                    335: 
                    336: If you feel you have found a bug in B<sudoreplay>, please submit a bug report
                    337: at http://www.sudo.ws/sudo/bugs/
                    338: 
                    339: =head1 SUPPORT
                    340: 
                    341: Limited free support is available via the sudo-users mailing list,
                    342: see http://www.sudo.ws/mailman/listinfo/sudo-users to subscribe or
                    343: search the archives.
                    344: 
                    345: =head1 DISCLAIMER
                    346: 
                    347: B<sudoreplay> is provided ``AS IS'' and any express or implied warranties,
                    348: including, but not limited to, the implied warranties of merchantability
                    349: and fitness for a particular purpose are disclaimed.  See the LICENSE
                    350: file distributed with B<sudo> or http://www.sudo.ws/sudo/license.html
                    351: for complete details.

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>