Sudo

SUDO I/O 日誌和 TSID

  • May 26, 2020

我試圖了解 sudo 會話日誌的詳細資訊,特別是關於 TSID。

我有幾個問題:

  1. TSID 代表什麼?
  2. 它是構成目錄結構的 6 個字元序列 - 0001A1:每對 2 個字元表示什麼?
  3. 與了解 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,這會讓我相信它只是一個遞增的整數或十六進制。

在任何一種情況下,它似乎都不是任何後果的“智能編號系統”。

看原始碼

grepsudo 程式碼倉庫中,有一個NEWS 文件,其中說明了以下內容:

  • 即使“iolog_file”sudoers 選項定義為 %{sessid} 以外的值,sudoers 策略現在也會將 TSID 欄位儲存在日誌中。以前,僅當“iolog_file”選項設置為其預設值時,TSID 欄位才會包含在日誌文件中。

如果您好奇,原始碼TSID=位於logging.c文件中。

參考

引用自:https://unix.stackexchange.com/questions/453513