SUDO I/O 日志和 TSID

SUDO I/O 日志和 TSID

我试图了解 sudo 会话日志的详细信息,特别是有关 TSID 的详细信息。

我有几个问题:

  1. TSID 代表什么?
  2. 它是形成目录结构的 6 个字符序列 - 0001A1:每对 2 个字符代表什么?
  3. 与理解 TSID 相关的任何其他内容都会有所帮助。

答案1

背景

TSID 在手册页中的描述sudoreplay如下:

ID 应该是由数字和大写字母组成的六字符序列(例如 0100A5),或者是与 sudoers 文件中的 iolog_file 选项匹配的模式。当通过 sudo 运行命令并在 sudoers 文件中启用 log_output 时,将通过 syslog 或 sudo 日志文件记录 TSID=ID 字符串。也可以使用 sudoreplay 的列表模式来确定 ID。

您可以用来sudoreplay -l列出可用的会话,要重播会话,您可以运行如下命令:sudoreplay <tsid>

样本输出

我在 AU 问答中找到了示例输出,标题为:如何使 sudoreplay 工作:

$ sudo sudoreplay -l
Nov 28 11:48:35 2014 : chrthomp : TTY=/dev/pts/1 ; CWD=/home/chrthomp/DJS/2014/Nov ; USER=root ; TSID=000001 ; COMMAND=/bin/su -

$ sudo sudoreplay 000001

进一步的研究

如果你浏览sudoers手册页它解释了这TSID=是什么:

使用包含在正常 sudo 日志行中的唯一会话 ID(以“TSID=”为前缀)将输入记录到 iolog_dir 选项指定的目录(默认为 /var/log/sudo-io)。 iolog_file 选项可用于控制会话 ID 的格式。

笔记:log_input和定义中都提到了类似的段落log_output

如果您进一步阅读sudoers手册页,您会发现它TSID=也称为logid

date hostname progname: username : TTY=ttyname ; PWD=cwd ; \
USER=runasuser ; GROUP=runasgroup ; TSID=logid ; \
ENV=env_vars COMMAND=command

这导致了这一点:

logid - 可用于重放命令输出的 I/O 日志标识符。仅当启用 log_input 或 log_output 选项时才会出现。

最初的想法...

我发现的大多数示例都显示TSID=为数字序列 (000001) 或数字和字母序列 (000AE1)。奇怪的是,我总是看到它带有特定的字母,主要是 AF,这让我相信它要么只是一个递增的整数,要么是十六进制。

无论哪种情况,它似乎都不是一个具有任何意义的“智能编号系统”。

查看源代码

grep通过 sudo 代码存储库时,有一个新闻档案其中规定如下:

  • 即使“iolog_file”sudoers 选项定义为 %{sessid} 以外的值,sudoers 策略现在也会将 TSID 字段存储在日志中。以前,只有当“iolog_file”选项设置为其默认值时,TSID 字段才会包含在日志文件中。

如果您好奇,其来源TSID=位于日志记录.c文件。

参考

答案2

TSID = TypeScript 标识符

与“script”命令相关: http://man7.org/linux/man-pages/man1/script.1.html

相关内容