SUDO I/O 日誌和 TSID
我試圖了解 sudo 會話日誌的詳細資訊,特別是關於 TSID。
我有幾個問題:
- TSID 代表什麼?
- 它是構成目錄結構的 6 個字元序列 - 0001A1:每對 2 個字元表示什麼?
- 與了解 TSID 相關的任何其他內容都會有所幫助。
背景
TSID 在
sudoreplay
手冊頁中描述如下:ID 應該是由數字和大寫字母組成的六個字元序列,例如 0100A5,或者是與 sudoers 文件中的 iolog_file 選項匹配的模式。當通過 sudo 執行命令並在 sudoers 文件中啟用 log_output 時,TSID=ID 字元串會通過 syslog 或 sudo 日誌文件記錄。ID 也可以使用 sudoreplay 的列表模式來確定。
您可以使用
sudoreplay -l
列出可用會話,重播一個,您將執行如下命令:sudoreplay <tsid>
.樣本輸出
我在 AU Q&A 中找到了範例輸出,標題為:如何使 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 程式碼倉庫中,有一個NEWS 文件,其中說明了以下內容:
- 即使“iolog_file”sudoers 選項定義為 %{sessid} 以外的值,sudoers 策略現在也會將 TSID 欄位儲存在日誌中。以前,僅當“iolog_file”選項設置為其預設值時,TSID 欄位才會包含在日誌文件中。
如果您好奇,原始碼
TSID=
位於logging.c文件中。參考