我试图了解 sudo 会话日志的详细信息,特别是有关 TSID 的详细信息。
我有几个问题:
- TSID 代表什么?
- 它是形成目录结构的 6 个字符序列 - 0001A1:每对 2 个字符代表什么?
- 与理解 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