如何在 Linux 上查看 sudo 命令用法

已發表: 2022-08-24
顯示 bash 提示符的 Linux 筆記本電腦
fatmawati achmad zaenuri/Shutterstock.com

sudo命令賦予用戶超級用戶或 root 權限。 毫無疑問,你給了他們“權力越大,責任越大”的演講。 這是檢查他們是否聽過的方法。

sudo 命令

sudo命令代表“替代用戶執行”。 它允許授權人員執行命令,就好像他們是另一個用戶一樣。 它可以採用命令行參數,其中之一是您希望執行命令的用戶的名稱。 sudo最常見的使用方式是省略命令行選項並使用默認操作。 這有效地以 root 用戶身份執行命令。

以這種方式使用sudo需要特殊權限。 只有特權才能使用sudo 。 當您安裝現代 Linux 發行版時,系統會提示您設置可以與sudo一起使用的 root 密碼。 這樣做的權限授予您在安裝期間創建的普通用戶。 這是處理對 root 用戶功能的訪問的首選方式。 舊的方法是創建一個 root 用戶並以他們的身份登錄以管理您的系統。

這是一個危險的場景。 當您不再需要 root 權限時,很容易忘記或懶得註銷並以普通用戶身份重新登錄。 您在終端窗口中以 root 身份犯下的任何錯誤都會被執行,無論多麼嚴重。 如果普通用戶嘗試執行這些操作,則會被 shell 阻止的東西在 root 請求它們時會毫無疑問地運行。 使用 root 帳戶而不是普通帳戶也是一種安全風險。

如何在 Linux 上控制 sudo 訪問
相關如何在 Linux 上控制 sudo 訪問

使用sudo可以集中註意力。 你正在進入同樣危險的水域,但你有意識地選擇這樣做,並希望非常小心。 只有當您需要做一些需要他們的事情時,您才會調用您的超級用戶狀態。

如果您向其他用戶開放 root 訪問權限,您想知道他們和您一樣關心他們。 您不希望他們魯莽或投機地運行命令。 Linux 安裝的健康和幸福取決於特權用戶的行為尊重和負責任。

以下是監控其根使用情況的幾種方法。

auth.log 文件

一些發行版在名為“auth.log”的文件中維護身份驗證日誌。 隨著systemd的出現和迅速普及,不再需要“auth.log”文件。 systemd-journal守護進程將系統日誌整合為一種新的二進制格式, journalctl為您提供了一種檢查或詢問日誌的方法。

如果你的 Linux 計算機上確實有一個“auth.log”文件,它可能在“/var/log/”目錄中,儘管在某些發行版上文件名和路徑是“/var/log/audit/audit 。日誌。”

您可以less這樣打開文件。 請記住調整路徑和文件名以適合您的發行版,並做好準備,以防您的 Linux 甚至沒有創建身份驗證文件。

此命令適用於 Ubuntu 22.04。

 少 /var/log/auth.log 

用 less 查看 /var/log/auth.log 文件

日誌文件已打開,您可以滾動瀏覽文件或使用 less 內置的搜索工具搜索“sudo”。

/var/log/auth.log文件的內容顯示在less

即使使用less的搜索功能,也可能需要一些時間才能找到您感興趣的sudo條目。

假設我們想看看一個叫mary的用戶使用sudo做什麼。 我們可以使用grep搜索日誌文件中包含“sudo”的行,然後再次通過grep管道輸出並查找其中包含“mary”的行。

請注意 grep 之前日誌文件名之前的sudo

 sudo grep sudo /var/log/auth.log | grep “瑪麗” 

使用 grep 過濾掉提及 mary 和 sudo 的條目

這為我們提供了其中包含“sudo”和“mary”的行。

我們可以看到用戶mary在 15:25 獲得了sudo權限,並且在 15:27 她正在編輯器中打開fstab文件。 從與用戶聊天開始,這種活動絕對值得深入探討。

使用 journalctl

基於systmd的 Linux 發行版的首選方法是使用journalctl命令查看系統日誌。

如果我們將程序的名稱傳遞給journalctl ,它將在日誌文件中搜索包含對該程序的引用的條目。 因為sudo是位於“/usr/bin/sudo”的二進製文件,我們可以將其傳遞給journactl-e (尋呼機結束)選項告訴journalctl打開默認文件尋呼機。 通常這會less 。 顯示屏會自動滾動到底部以顯示最近的條目。

 sudo journalctl -e /usr/bin/sudo 

使用 journalctl 搜索提及 sudo 的條目

具有sudo功能的日誌條目在 less 中列出。

journalctl 在 less 文件查看器中顯示包含 sudo 的條目

使用“RightArrow”鍵向右滾動以查看每次調用sudo時使用的命令。 (或拉伸您的終端窗口,使其更寬。)

橫向滾動以查看與 sudo 一起使用的命令

並且由於輸出顯示在less中,您可以搜索命令名稱、用戶名和時間戳等文本。

相關:如何使用 journalctl 讀取 Linux 系統日誌

使用 GNOME 日誌實用程序

圖形桌面環境通常包括查看日誌的方法。 我們將看看 GNOME 日誌實用程序。 要訪問日誌實用程序,請按“空格鍵”左側的“超級”鍵。

在搜索字段中輸入“日誌”。 出現“日誌”圖標。

單擊圖標以啟動“日誌”應用程序。

GNOME 日誌應用程序

單擊側欄中的類別將按消息類型過濾日誌消息。 要進行更精細的選擇,請單擊邊欄中的“全部”類別,然後單擊工具欄上的放大鏡圖標。 輸入一些搜索文本。 我們將搜索“sudo”。

在 GNOME 日誌應用程序中搜索包含 sudo 的條目

過濾事件列表以僅顯示與sudo命令相關的事件。 每行末尾的小灰色塊包含該事件會話中的條目數。 單擊一條線將其展開。

包含 sudo 會話中條目數的灰色塊

我們單擊頂行以查看該會話中 24 個條目的詳細信息。

展開視圖中顯示的事件的詳細信息

稍微滾動一下,我們可以看到我們在使用journalctl命令時看到的相同事件。 很快就找到了用戶maryfstab文件的不明原因的編輯會話。 我們本可以搜索“mary”,但這將包括除了她使用sudo之外的條目。

不是每個人都需要 root 訪問權限

如果有真正合理的要求,將sudo權限授予其他用戶可能是有意義的。 同樣,只有檢查他們對這些權力的使用或濫用情況才有意義,尤其是在他們被賦予這些權力之後。