Annotation of embedaddon/sudo/doc/sudoreplay.pod, revision 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>