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

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
                     91: session IDs.  If a I<search expression> is specified, it will be
                     92: used to restrict the IDs that are displayed.  An expression is
                     93: composed of the following predicates:
                     94: 
                     95: =over 8
                     96: 
                     97: =item command I<command pattern>
                     98: 
                     99: Evaluates to true if the command run matches I<command pattern>.
                    100: On systems with POSIX regular expression support, the pattern may
                    101: be an extended regular expression.  On systems without POSIX regular
                    102: expression support, a simple substring match is performed instead.
                    103: 
                    104: =item cwd I<directory>
                    105: 
                    106: Evaluates to true if the command was run with the specified current
                    107: working directory.
                    108: 
                    109: =item fromdate I<date>
                    110: 
                    111: Evaluates to true if the command was run on or after I<date>.
                    112: See L<"Date and time format"> for a description of supported
                    113: date and time formats.
                    114: 
                    115: =item group I<runas_group>
                    116: 
                    117: Evaluates to true if the command was run with the specified
                    118: I<runas_group>.  Note that unless a I<runas_group> was explicitly
                    119: specified when B<sudo> was run this field will be empty in the log.
                    120: 
                    121: =item runas I<runas_user>
                    122: 
                    123: Evaluates to true if the command was run as the specified I<runas_user>.
                    124: Note that B<sudo> runs commands as user I<root> by default.
                    125: 
                    126: =item todate I<date>
                    127: 
                    128: Evaluates to true if the command was run on or prior to I<date>.
                    129: See L<"Date and time format"> for a description of supported
                    130: date and time formats.
                    131: 
                    132: =item tty I<tty>
                    133: 
                    134: Evaluates to true if the command was run on the specified terminal
                    135: device.  The I<tty> should be specified without the F</dev/> prefix,
                    136: e.g.  F<tty01> instead of F</dev/tty01>.
                    137: 
                    138: =item user I<user name>
                    139: 
                    140: Evaluates to true if the ID matches a command run by I<user name>.
                    141: 
                    142: =back
                    143: 
                    144: Predicates may be abbreviated to the shortest unique string (currently
                    145: all predicates may be shortened to a single character).
                    146: 
                    147: Predicates may be combined using I<and>, I<or> and I<!> operators
                    148: as well as C<'('> and C<')'> for grouping (note that parentheses
                    149: must generally be escaped from the shell).  The I<and> operator is
                    150: optional, adjacent predicates have an implied I<and> unless separated
                    151: by an I<or>.
                    152: 
                    153: =item -m I<max_wait>
                    154: 
                    155: Specify an upper bound on how long to wait between key presses or
                    156: output data.  By default, B<sudo_replay> will accurately reproduce
                    157: the delays between key presses or program output.  However, this
                    158: can be tedious when the session includes long pauses.  When the
                    159: I<-m> option is specified, B<sudoreplay> will limit these pauses
                    160: to at most I<max_wait> seconds.  The value may be specified as a
                    161: floating point number, .e.g. I<2.5>.
                    162: 
                    163: =item -s I<speed_factor>
                    164: 
                    165: This option causes B<sudoreplay> to adjust the number of seconds
                    166: it will wait between key presses or program output.  This can be
                    167: used to slow down or speed up the display.  For example, a
                    168: I<speed_factor> of I<2> would make the output twice as fast whereas
                    169: a I<speed_factor> of <.5> would make the output twice as slow.
                    170: 
                    171: =item -V
                    172: 
                    173: The B<-V> (version) option causes B<sudoreplay> to print its version number
                    174: and exit.
                    175: 
                    176: =back
                    177: 
                    178: =head2 Date and time format
                    179: 
                    180: The time and date may be specified multiple ways, common formats include:
                    181: 
                    182: =over 8
                    183: 
                    184: =item HH:MM:SS am MM/DD/CCYY timezone
                    185: 
                    186: 24 hour time may be used in place of am/pm.
                    187: 
                    188: =item HH:MM:SS am Month, Day Year timezone
                    189: 
                    190: 24 hour time may be used in place of am/pm, and month and day names
                    191: may be abbreviated.  Note that month and day of the week names must
                    192: be specified in English.
                    193: 
                    194: =item CCYY-MM-DD HH:MM:SS
                    195: 
                    196: ISO time format
                    197: 
                    198: =item DD Month CCYY HH:MM:SS
                    199: 
                    200: The month name may be abbreviated.
                    201: 
                    202: =back
                    203: 
                    204: Either time or date may be omitted, the am/pm and timezone are
                    205: optional.  If no date is specified, the current day is assumed; if
                    206: no time is specified, the first second of the specified date is
                    207: used.  The less significant parts of both time and date may also
                    208: be omitted, in which case zero is assumed.  For example, the following
                    209: are all valid:
                    210: 
                    211: The following are all valid time and date specifications:
                    212: 
                    213: =over 8
                    214: 
                    215: =item now
                    216: 
                    217: The current time and date.
                    218: 
                    219: =item tomorrow
                    220: 
                    221: Exactly one day from now.
                    222: 
                    223: =item yesterday
                    224: 
                    225: 24 hours ago.
                    226: 
                    227: =item 2 hours ago
                    228: 
                    229: 2 hours ago.
                    230: 
                    231: =item next Friday
                    232: 
                    233: The first second of the next Friday.
                    234: 
                    235: =item this week
                    236: 
                    237: The current time but the first day of the coming week.
                    238: 
                    239: =item a fortnight ago
                    240: 
                    241: The current time but 14 days ago.
                    242: 
                    243: =item 10:01 am 9/17/2009
                    244: 
                    245: 10:01 am, September 17, 2009.
                    246: 
                    247: =item 10:01 am
                    248: 
                    249: 10:01 am on the current day.
                    250: 
                    251: =item 10
                    252: 
                    253: 10:00 am on the current day.
                    254: 
                    255: =item 9/17/2009
                    256: 
                    257: 00:00 am, September 17, 2009.
                    258: 
                    259: =item 10:01 am Sep 17, 2009
                    260: 
                    261: 10:01 am, September 17, 2009.
                    262: 
                    263: =back
                    264: 
                    265: =head1 FILES
                    266: 
                    267: =over 24
                    268: 
                    269: =item F</var/log/sudo-io>
                    270: 
                    271: The default I/O log directory.
                    272: 
                    273: =item F</var/log/sudo-io/00/00/01/log>
                    274: 
                    275: Example session log info.
                    276: 
                    277: =item F</var/log/sudo-io/00/00/01/stdin>
                    278: 
                    279: Example session standard input log.
                    280: 
                    281: =item F</var/log/sudo-io/00/00/01/stdout>
                    282: 
                    283: Example session standard output log.
                    284: 
                    285: =item F</var/log/sudo-io/00/00/01/stderr>
                    286: 
                    287: Example session standard error log.
                    288: 
                    289: =item F</var/log/sudo-io/00/00/01/ttyin>
                    290: 
                    291: Example session tty input file.
                    292: 
                    293: =item F</var/log/sudo-io/00/00/01/ttyout>
                    294: 
                    295: Example session tty output file.
                    296: 
                    297: =item F</var/log/sudo-io/00/00/01/timing>
                    298: 
                    299: Example session timing file.
                    300: 
                    301: =back
                    302: 
                    303: Note that the I<stdin>, I<stdout> and I<stderr> files will be empty
                    304: unless B<sudo> was used as part of a pipeline for a particular
                    305: command.
                    306: 
                    307: =head1 EXAMPLES
                    308: 
                    309: List sessions run by user I<millert>:
                    310: 
                    311:  sudoreplay -l user millert
                    312: 
                    313: List sessions run by user I<bob> with a command containing the string vi:
                    314: 
                    315:  sudoreplay -l user bob command vi
                    316: 
                    317: List sessions run by user I<jeff> that match a regular expression:
                    318: 
                    319:  sudoreplay -l user jeff command '/bin/[a-z]*sh'
                    320: 
                    321: List sessions run by jeff or bob on the console:
                    322: 
                    323:  sudoreplay -l ( user jeff or user bob ) tty console
                    324: 
                    325: =head1 SEE ALSO
                    326: 
                    327: L<sudo(8)>, L<script(1)>
                    328: 
                    329: =head1 AUTHOR
                    330: 
                    331: Todd C. Miller
                    332: 
                    333: =head1 BUGS
                    334: 
                    335: If you feel you have found a bug in B<sudoreplay>, please submit a bug report
                    336: at http://www.sudo.ws/sudo/bugs/
                    337: 
                    338: =head1 SUPPORT
                    339: 
                    340: Limited free support is available via the sudo-users mailing list,
                    341: see http://www.sudo.ws/mailman/listinfo/sudo-users to subscribe or
                    342: search the archives.
                    343: 
                    344: =head1 DISCLAIMER
                    345: 
                    346: B<sudoreplay> is provided ``AS IS'' and any express or implied warranties,
                    347: including, but not limited to, the implied warranties of merchantability
                    348: and fitness for a particular purpose are disclaimed.  See the LICENSE
                    349: file distributed with B<sudo> or http://www.sudo.ws/sudo/license.html
                    350: for complete details.

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