溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

可能不知道的sudo知識有哪些

發(fā)布時間:2022-01-07 09:09:14 來源:億速云 閱讀:111 作者:柒染 欄目:系統(tǒng)運維

可能不知道的sudo知識有哪些,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

大家都知道 sudo,對嗎?默認情況下,該工具已安裝在大多數(shù) Linux 系統(tǒng)上,并且可用于大多數(shù) BSD 和商業(yè) Unix 變體。不過,在與數(shù)百名 sudo 用戶交談之后,我得到的最常見的答案是 sudo 是一個使生活復雜化的工具。

有 root 用戶和 su 命令,那么為什么還要使用另一個工具呢?對于許多人來說,sudo 只是管理命令的前綴。只有極少數(shù)人提到,當你在同一個系統(tǒng)上有多個管理員時,可以使用 sudo 日志查看誰做了什么。

那么,sudo 是什么? 根據(jù) sudo 網(wǎng)站:

“sudo 允許系統(tǒng)管理員通過授予某些用戶以 root 用戶或其他用戶身份運行某些命令的能力,同時提供命令及其參數(shù)的審核記錄,從而委派權(quán)限?!?/p>

默認情況下,sudo 只有簡單的配置,一條規(guī)則允許一個用戶或一組用戶執(zhí)行幾乎所有操作(在本文后面的配置文件中有更多信息):

%wheel ALL=(ALL) ALL

在此示例中,參數(shù)表示以下含義:

  • 第一個參數(shù)(%wheel)定義組的成員。

  • 第二個參數(shù)(ALL)定義組成員可以在其上運行命令的主機。

  • 第三個參數(shù)((ALL))定義了可以執(zhí)行命令的用戶名。

  • 最后一個參數(shù)(ALL)定義可以運行的應用程序。

因此,在此示例中,wheel 組的成員可以以所有主機上的所有用戶身份運行所有應用程序。但即使是這個一切允許的規(guī)則也很有用,因為它會記錄誰在計算機上做了什么。

別名

當然,它不僅可以讓你和你最好的朋友管理一個共享機器,你還可以微調(diào)權(quán)限。你可以將以上配置中的項目替換為列表:用戶列表、命令列表等。多數(shù)情況下,你可能會復制并粘貼配置中的一些列表。

在這種情況下,別名可以派上用場。在多個位置維護相同的列表容易出錯。你可以定義一次別名,然后可以多次使用。因此,當你對一位管理員不再信任時,將其從別名中刪除就行了。使用多個列表而不是別名,很容易忘記從具有較高特權(quán)的列表之一中刪除用戶。

為特定組的用戶啟用功能

sudo 命令帶有大量默認設置。不過,在某些情況下,你想覆蓋其中的一些情況,這時你可以在配置中使用 Defaults 語句。通常,對每個用戶都強制使用這些默認值,但是你可以根據(jù)主機、用戶名等將設置縮小到一部分用戶。這里有個我那一代的系統(tǒng)管理員都喜歡玩的一個示例:“羞辱”。這些只不過是一些有人輸入錯誤密碼時的有趣信息:

czanik@linux-mewy:~> sudo ls[sudo] password for root:Hold it up to the light --- not a brain in sight!  # 把燈舉高點,腦仁太小看不到[sudo] password for root:My pet ferret can type better than you!     # 我的寵物貂也比你輸入的好[sudo] password for root:sudo: 3 incorrect password attemptsczanik@linux-mewy:~>

由于并非所有人都喜歡系統(tǒng)管理員的這種幽默,因此默認情況下會禁用這些羞辱信息。以下示例說明了如何僅對經(jīng)驗豐富的系統(tǒng)管理員(即 wheel 組的成員)啟用此設置:

Defaults !insultsDefaults:%wheel insults

我想,感謝我將這些消息帶回來的人用兩只手也數(shù)不過來吧。

摘要驗證

當然,sudo 還有更嚴肅的功能。其中之一是摘要驗證。你可以在配置中包括應用程序的摘要:

peter ALL = sha244:11925141bb22866afdf257ce7790bd6275feda80b3b241c108b79c88 /usr/bin/passwd

在這種情況下,sudo 在運行應用程序之前檢查應用程序摘要,并將其與配置中存儲的摘要進行比較。如果不匹配,sudo 拒絕運行該應用程序。盡管很難在配置中維護此信息(沒有用于此目的的自動化工具),但是這些摘要可以為你提供額外的保護層。

會話記錄

會話記錄也是 sudo 鮮為人知的功能。在演示之后,許多人離開我的演講后就計劃在其基礎(chǔ)設施上實施它。為什么?因為使用會話記錄,你不僅可以看到命令名稱,還可以看到終端中發(fā)生的所有事情。你可以看到你的管理員在做什么,要不他們用 shell 訪問了機器而日志僅會顯示啟動了 bash。

當前有一個限制。記錄存儲在本地,因此具有足夠的權(quán)限的話,用戶可以刪除他們的痕跡。所以請繼續(xù)關(guān)注即將推出的功能。

插件

從 1.8 版開始,sudo 更改為基于插件的模塊化體系結(jié)構(gòu)。通過將大多數(shù)功能實現(xiàn)為插件,你可以編寫自己的功能輕松地替換或擴展 sudo 的功能。已經(jīng)有了 sudo 上的開源和商業(yè)插件。

在我的演講中,我演示了 sudo_pair 插件,該插件可在 GitHub 上獲得。這個插件是用 Rust 開發(fā)的,這意味著它不是那么容易編譯,甚至更難以分發(fā)其編譯結(jié)果。另一方面,該插件提供了有趣的功能,需要第二個管理員通過 sudo 批準(或拒絕)運行命令。不僅如此,如果有可疑活動,可以在屏幕上跟蹤會話并終止會話。

在最近的 All Things Open 會議上的一次演示中,我做了一個臭名昭著的演示:

czanik@linux-mewy:~> sudo  rm -fr /

看著屏幕上顯示的命令。每個人都屏住呼吸,想看看我的筆記本電腦是否被毀了,然而它逃過一劫。

日志

正如我在開始時提到的,日志記錄和警報是 sudo 的重要組成部分。如果你不會定期檢查 sudo 日志,那么日志在使用 sudo 中并沒有太多價值。該工具通過電子郵件提醒配置中指定的事件,并將所有事件記錄到 syslog 中。可以打開調(diào)試日志用于調(diào)試規(guī)則或報告錯誤。

警報

電子郵件警報現(xiàn)在有點過時了,但是如果你使用 syslog-ng 來收集日志消息,則會自動解析 sudo 日志消息。你可以輕松創(chuàng)建自定義警報并將其發(fā)送到各種各樣的目的地,包括 Slack、Telegram、Splunk 或 Elasticsearch。你可以從我在 syslong-ng.com 上的博客中了解有關(guān)此功能的更多信息。

配置

我們談論了很多 sudo 功能,甚至還看到了幾行配置?,F(xiàn)在,讓我們仔細看看 sudo 的配置方式。配置本身可以在 /etc/sudoers 中獲得,這是一個簡單的文本文件。不過,不建議直接編輯此文件。相反,請使用 visudo,因為此工具還會執(zhí)行語法檢查。如果你不喜歡 vi,則可以通過將 EDITOR 環(huán)境變量指向你的首選編輯器來更改要使用的編輯器。

在開始編輯 sudo 配置之前,請確保你知道 root 密碼。(是的,即使在默認情況下 root 用戶沒有密碼的 Ubuntu 上也是如此。)雖然 visudo 會檢查語法,但創(chuàng)建語法正確而將你鎖定在系統(tǒng)之外的配置也很容易。

如果在緊急情況下,而你手頭有 root 密碼,你也可以直接編輯配置。當涉及到 sudoers 文件時,有一件重要的事情要記?。簭纳系较伦x取該文件,以最后的設置為準。這個事實對你來說意味著你應該從通用設置開始,并在末尾放置例外情況,否則,通用設置會覆蓋例外情況。

你可以在下面看到一個基于 CentOS 的簡單 sudoers 文件,并添加我們之前討論的幾行:

Defaults !visiblepwDefaults always_set_homeDefaults match_group_by_gidDefaults always_query_group_pluginDefaults env_resetDefaults env_keep = "COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS"Defaults env_keep += "MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE"Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/binroot ALL=(ALL) ALL%wheel ALL=(ALL) ALLDefaults:%wheel insultsDefaults !insultsDefaults log_output

該文件從更改多個默認值開始。然后是通常的默認規(guī)則:root 用戶和 wheel 組的成員對計算機具有完全權(quán)限。接下來,我們對 wheel 組啟用“羞辱”,但對其他所有人禁用它們。最后一行啟用會話記錄。

上面的配置在語法上是正確的,但是你可以發(fā)現(xiàn)邏輯錯誤嗎?是的,有一個:后一個通用設置覆蓋了先前的更具體設置,讓所有人均禁用了“羞辱”。一旦交換了這兩行的位置,設置就會按預期進行:wheel 組的成員會收到有趣的消息,但其他用戶則不會收到。

配置管理

一旦必須在多臺機器上維護 sudoers 文件,你很可能希望集中管理配置。這里主要有兩種可能的開源方法。兩者都有其優(yōu)點和缺點。

你可以使用也用來配置其余基礎(chǔ)設施的配置管理應用程序之一:Red Hat Ansible、Puppet 和 Chef 都具有用于配置 sudo 的模塊。這種方法的問題在于更新配置遠非實時。同樣,用戶仍然可以在本地編輯 sudoers 文件并更改設置。

sudo 工具也可以將其配置存儲在 LDAP 中。在這種情況下,配置更改是實時的,用戶不能弄亂sudoers 文件。另一方面,該方法也有局限性。例如,當 LDAP 服務器不可用時,你不能使用別名或使用 sudo。

新功能

新版本的 sudo 即將推出。1.9 版將包含許多有趣的新功能。以下是最重要的計劃功能:

  • 記錄服務可集中收集會話記錄,與本地存儲相比,它具有許多優(yōu)點:

    • 在一個地方搜索更方便。

    • 即使發(fā)送記錄的機器關(guān)閉,也可以進行記錄。

    • 記錄不能被想要刪除其痕跡的人刪除。

  • audit 插件沒有向 sudoers 添加新功能,而是為插件提供了 API,以方便地訪問任何類型的 sudo 日志。這個插件允許使用插件從 sudo 事件創(chuàng)建自定義日志。

  • approval 插件無需使用第三方插件即可啟用會話批準。

  • 以及我個人最喜歡的:插件的 Python 支持,這使你可以輕松地使用 Python 代碼擴展 sudo,而不是使用 C 語言進行原生編碼。    

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進一步的了解或閱讀更多相關(guān)文章,請關(guān)注億速云行業(yè)資訊頻道,感謝您對億速云的支持。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI