自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Linux 中的 su 和 sudo 命令有什么區(qū)別?

系統(tǒng) Linux
本文將比較非 root 用戶提權(quán)為 root 用戶的兩個 Linux 命令 的區(qū)別。

??su??? 和 ??sudo??? 命令都允許用戶執(zhí)行非特權(quán)用戶不允許做的系統(tǒng)管理任務(wù),即只有 root 用戶能執(zhí)行的命令。有些人更喜歡 ??sudo??? 命令:例如 ??Seth Kenlon??? 最近發(fā)布的一篇 《??在 Linux 上使用 sudo 的 5 個理由???》,他在其中詳細闡述了 ??sudo?? 命令的許多優(yōu)點。

但是,相較于 ??sudo?? 命令,我更偏好于 ??su??? 命令 來做系統(tǒng)管理工作。在本文中,我比較了這兩個命令的區(qū)別,并解釋了為什么我更喜歡 ??su?? 而不是 ??sudo??,但我仍然同時使用這兩個命令的原因。

過去的系統(tǒng)管理員主要使用 su 命令

??su?? 和 ??sudo?? 命令是為不同的世界設(shè)計的。早期的 Unix 計算機需要全職系統(tǒng)管理員,他們使用 root 用戶作為唯一的管理帳戶。在這個古老的世界里,有管理員密碼的人會在電傳打字機或 CRT 終端(例如 DEC VT100)上以 root 用戶登錄,然后執(zhí)行一些管理 Unix 計算機的工作。

管理員還會有一些非 root 帳戶,用于執(zhí)行一些非 root 的任務(wù),例如編寫文檔和管理電子郵件等。在這些 Unix 計算機上通常有許多非 root 帳戶,他們都不需要完全的 root 訪問權(quán)限,只需要以 root 權(quán)限運行很少的命令,大約 1 至 2 個就可以了。許多系統(tǒng)管理員以 root 用戶登錄,完成 root 工作,并在任務(wù)完成后,退出 root 會話。有時候,系統(tǒng)管理員需要整天以 root 用戶來登錄,因為 ??sudo?? 命令需要鍵入更多的內(nèi)容才能運行必要的命令,因此大多數(shù)系統(tǒng)管理員很少使用 ??sudo?? 命令。

??sudo?? 和 ??su?? 這兩個命令都能夠提權(quán)為 root 用戶,但它們實現(xiàn)的方式大不相同。這種差異是由于它們最初打算用于不同的情況。

sudo 命令

??sudo?? 命令的初衷是讓 root 用戶能夠讓幾個非 root 用戶訪問他們經(jīng)常需要的一兩個特權(quán)命令。??sudo?? 命令允許非 root 用戶暫時地獲得更高權(quán)限,來執(zhí)行一些特權(quán)命令,例如添加和刪除用戶、刪除屬于其他用戶的文件、安裝新軟件以及管理現(xiàn)代 Linux 主機所需的任何命令。

??sudo?? 命令允許非 root 用戶訪問一兩個 需要更高權(quán)限 的常用命令,這樣可以幫助系統(tǒng)管理員節(jié)省來自用戶的許多請求,并減少等待時間。??sudo?? 命令不會將用戶帳戶切換為 root 用戶,因為大多數(shù)非 root 用戶永遠不應(yīng)該擁有完全的 root 訪問權(quán)限。在大多數(shù)情況下,??sudo?? 允許用戶執(zhí)行一兩個命令,然后提權(quán)就會過期。在這個通常為 5 分鐘的短暫的提權(quán)時間內(nèi),用戶可以執(zhí)行任何需要提權(quán)的管理命令。需要繼續(xù)使用提權(quán)的用戶可以運行 ??sudo -v?? 命令來重新驗證 root 訪問權(quán)限,并將提權(quán)時間再延長 5 分鐘。

使用 ??sudo?? 命令還有一些副作用,例如生成非 root 用戶使用命令的日志條目及其 ID。這些日志可以在之后作為出現(xiàn)問題的檢驗,來給用戶更多的操作培訓(xùn)。(你以為我會說“問責(zé)”用戶,對吧?)

su 命令

??su?? 命令能夠?qū)⒎?root 用戶提權(quán)到 root 權(quán)限 —— 事實上,能讓非 root 用戶成為 root 用戶。唯一的要求是用戶知道 root 密碼。因為用戶已經(jīng)以 root 權(quán)限登錄,所以之后的操作就沒有限制了。

??su?? 命令所提供的提權(quán)沒有時間限制。用戶可以作為 root 執(zhí)行命令,不需要進行重新驗證是否有 root 權(quán)限。完成任務(wù)后,用戶可以執(zhí)行退出命令 ??exit??,從 root 用戶恢復(fù)到自己原來的非 root 帳戶。

su 和 sudo 在使用上的爭議和變化

最近在 ??su?? 與 ??sudo?? 的使用上存在一些分歧。

真正的系統(tǒng)管理員不會使用 ??sudo???!?Paul Venezia

Venezia 在他的 ??InfoWorld 文章?? 中辯稱,對于許多擔(dān)任系統(tǒng)管理員的人來說,??sudo?? 是一個不必要的工具。他沒有花太多時間為這個觀點進行解釋,他只是把它說成了一個事實。我同意他對于系統(tǒng)管理員的觀點,因為我們不需要 ??sudo?? 來完成我們的工作。事實上,??sudo?? 使得事情變得更復(fù)雜了。

然而,

時代在“改變”?!?Bob Dylan

Bob Dylan 是對的,盡管他唱的歌不是指計算機(LCTT 譯注:Bob Dylan 是美國創(chuàng)作歌手、藝術(shù)家和作家,這里指他不是針對于電腦而說的)。

自從人手一臺的個人計算機時代到來,計算機的管理方式發(fā)生了重大變化。在許多環(huán)境中,計算機的使用者也是它的管理員,這使得為這些用戶提供一些對 root 權(quán)限的訪問是有必要的。

一些現(xiàn)代發(fā)行版,例如 Ubuntu 及其衍生版本,只能使用 ??sudo?? 命令來執(zhí)行特權(quán)命令。在這些發(fā)行版中,用戶無法直接以 root 用戶身份登錄,甚至無法通過 ??su?? 切換到 root,因此需要 ??sudo?? 命令來允許非 root 用戶獲得 root 權(quán)限。在這一環(huán)境中,所有系統(tǒng)管理任務(wù)均使用 ??sudo?? 來執(zhí)行。

通過鎖定 root 帳戶并將常規(guī)用戶帳戶添加到“輪子”組(??wheel??),可以實現(xiàn)此配置,但是這種配置很容易被繞過。接下來,讓我們在 Ubuntu 主機或虛擬機上嘗試一些小實驗吧。我在這里說明一些我的設(shè)置,以便你可以根據(jù)需要來重現(xiàn)它。我安裝的是 Ubuntu 16.04 LTS1,并使用 VirtualBox 將其安裝在虛擬機中。在安裝過程中,我創(chuàng)建了一個非 root 用戶 ??student??,為了簡便起見我給這個用戶設(shè)置了一個簡單的密碼。

以 ??student?? 用戶身份登錄 Ubuntu,并打開終端。查看 ??/etc/shadow?? 文件中的 root 條目,其中存儲了經(jīng)哈希的密碼。

    student@ubuntu1:~$ cat /etc/shadow
cat: /etc/shadow: Permission denied

可以看到終端拒絕了我們對 ??/etc/shadow?? 的訪問,因此我們無法查看 ??/etc/shadow?? 文件。所有發(fā)行版都是如此,以防止非特權(quán)用戶看到和訪問加密的密碼,因為非特權(quán)用戶可能會使用常見的黑客工具來破解這些密碼。

現(xiàn)在,讓我們使用 ??su -?? 命令來成為 root 用戶。

    student@ubuntu1:~$ su -
Password: <Enter root password – but there isn't one>
su: Authentication failure

認證失敗的原因是因為 root 帳戶沒有密碼、并且被鎖定了。接下來,使用 ??sudo??? 命令查看 ??/etc/shadow?? 文件。

    student@ubuntu1:~$ sudo cat /etc/shadow
[sudo] password for student: <enter the student password>
root:!:17595:0:99999:7:::
<截取>
student:$6$tUB/y2dt$A5ML1UEdcL4tsGMiq3KOwfMkbtk3WecMroKN/:17597:0:99999:7:::
<截取>

在這里,我僅截取了部分結(jié)果,只顯示 root 和 ??student?? 用戶的條目。我還縮短了加密密碼,以便該條目能顯示在一行中。各個字段以冒號(??:??)分隔,第二個字段是密碼。請注意,root 的密碼字段是一個感嘆號(??!??),這表明 root 帳戶已被鎖定,且無法使用。

現(xiàn)在,要將 root 帳戶變成一個合適的系統(tǒng)管理員,你只需為 root 帳戶設(shè)置密碼。

    student@ubuntu1:~$ sudo su -
[sudo] password for student: <Enter password for student>
root@ubuntu1:~# passwd root
Enter new UNIX password: <Enter new root password>
Retype new UNIX password: <Re-enter new root password>
passwd: password updated successfully
root@ubuntu1:~#

現(xiàn)在,你可以直接以 root 身份登錄到控制臺,或者直接使用 ??su?? 登錄到 root,而不是在每個命令前都加一個 ??sudo??。當(dāng)然,你也可以在每次想以 root 身份登錄時,使用 ??sudo su -??,但這又是何必呢?

請不要誤解我的意思。像 Ubuntu 這樣的發(fā)行版及其上下游衍生版非常好,多年來我已經(jīng)使用了其中的幾個。在使用 Ubuntu 和相關(guān)發(fā)行版時,我做的第一件事就是設(shè)置一個 root 密碼,這樣我就可以直接以 root 身份登錄。其他發(fā)行版,如 Fedora 及其相關(guān)發(fā)行版,現(xiàn)在在安裝過程中提供了一些有趣的選擇。我注意到的第一個 Fedora 版本是 Fedora 34,我在寫我的一本即將出版的書時安裝了很多次。

在安裝頁面上,可以找到其中一個安裝選項,來設(shè)置 root 密碼。這個新選項允許用戶選擇“鎖定 root 帳戶Lock root account”,就像 Ubuntu 鎖定 root 帳戶的方式一樣。此頁面上還有一個選項,允許使用密碼以 root 身份遠程 SSH 登錄到此主機,但這僅在 root 帳戶解鎖時有效。第二個選項位于允許創(chuàng)建非 root 帳戶的頁面上。此頁面上的選項之一是“讓此用戶成為管理員Make this user administrator”。選中此選項后,用戶 ID 將添加到一個名為 ??wheel?? 組的特殊組中,該組授權(quán)該組的成員使用 ??sudo?? 命令。Fedora 36 甚至在該復(fù)選框的描述中提到了 ??wheel?? 組。

可以將多個非 root 用戶設(shè)置為管理員。使用此方法指定為管理員的任何人都可以使用 ??sudo?? 命令在 Linux 計算機上執(zhí)行所有管理任務(wù)。Linux 在安裝時只允許創(chuàng)建一個非 root 用戶,所以其他新用戶可以在創(chuàng)建時添加到 ??wheel?? 組中。root 用戶或其他管理員可以使用文本編輯器或 ??usermod?? 命令直接將現(xiàn)有用戶添加到 ??wheel?? 組。

在大多數(shù)情況下,今天的管理員只需要執(zhí)行一些基本任務(wù),例如添加新的打印機、安裝更新或新軟件,或者刪除不再需要的軟件。這些 GUI 工具需要 root 或管理密碼,并將接受來自管理員用戶的密碼。

在 Linux 上,我是怎么使用 su 和 sudo 的呢

同時使用 ??su??? 和 ??sudo??。它們都是我所使用的很重要的系統(tǒng)管理員工具。

我不鎖定 root 帳戶,因為我需要用 root 帳戶來運行我的 ??Ansible?? 腳本和我編寫的 ??rsbu?? Bash 程序,來執(zhí)行備份。這兩個程序都需要以 root 身份運行,我編寫的其他幾個管理 Bash 的腳本也是如此。我使用 ??su??? 命令切換到 root 用戶,這樣我就可以執(zhí)行這些腳本和許多其他常見的命令。當(dāng)我需要確定問題和解決問題時,使用 ??su?? 命令將我的權(quán)限提升到 root 十分有用,因為我不希望 ??sudo?? 帶來的提權(quán)會話超時。

當(dāng)非 root 用戶需要執(zhí)行這些任務(wù)時,我使用 ??sudo??? 命令,來執(zhí)行需要 root 權(quán)限的任務(wù)。我在 ??sudoers?? 文件中設(shè)置了非 root 帳戶,只允許訪問完成任務(wù)所需的一兩個命令。當(dāng)我只需要運行一兩個需要提權(quán)的快速命令時,我自己也會使用 ??sudo?? 命令。

結(jié)論

實際上只要你把工作完成好了,你使用什么工具都無大礙。你使用的是 Vim 還是 Emacs,是 systemd 還是 SystemV,是 RPM 亦或是 DEB,是 ??sudo?? 亦或是 ??su??,在結(jié)果上會有什么區(qū)別呢?這里的關(guān)鍵在于你應(yīng)該使用最適合你的工具。Linux 和開源軟件的最大優(yōu)勢之一是通常有許多選項可用于我們需要完成的任務(wù)。

??su?? 和 ??sudo?? 都各有長處,如果正確使用的話,兩者都是非常安全的。我選擇同時使用 ??su?? 和 ??sudo?? 命令,基于它們的歷史功能,因為這對我來說十分有用。對于我自己的大部分工作,我更喜歡 ??su?? 命令,因為它與我的工作流程最適配。

本文摘自于我的書《系統(tǒng)管理員的 Linux 哲學(xué)The Linux Philosophy for Sysadmins(Apress,2018 年)》一書的第 19 章,并經(jīng)許可后重新發(fā)布。

責(zé)任編輯:龐桂玉 來源: Linux中國
相關(guān)推薦

2021-11-01 10:05:32

Linuxsusudo

2018-09-04 10:04:13

Linux命令sudo

2022-07-12 10:58:49

Linuxsusudo

2022-09-08 18:38:26

LinuxWindowsmacOS

2022-08-31 08:33:54

Bash操作系統(tǒng)Linux

2018-07-20 14:00:51

LinuxmacOS內(nèi)核

2020-08-02 23:20:36

JavaScriptmap()forEach()

2022-09-02 09:02:44

TypeInterface

2021-03-27 10:56:17

promisethenfinally

2025-04-27 08:15:00

FlinkSavepointCheckpoint

2023-11-01 08:08:47

PythonIS運算符

2020-03-09 20:56:19

LoRaLoRaWAN無線技術(shù)

2022-09-07 18:32:57

并發(fā)編程線程

2020-11-09 14:07:53

PyQtQt編程

2022-06-06 14:53:02

LoRaLoRaWAN

2023-10-27 08:23:10

CookieWeb存儲

2023-11-14 14:13:52

SQLNoSQLCAP

2021-12-17 14:40:02

while(1)for(;;)語言

2022-02-27 15:33:22

安全CASBSASE

2022-08-02 08:23:37

SessionCookies
點贊
收藏

51CTO技術(shù)棧公眾號