linux下如何控制sudo訪問

sudo命令允許您在Linux上執行命令,就像您是其他人一樣,比如root。sudo還允許您使用粒度控制誰可以訪問root的功能。允許使用者完全訪問或允許他們使用一小部分命令。我們教你怎麼做。...

sudo命令允許您在Linux上執行命令,就像您是其他人一樣,比如root。sudo還允許您使用粒度控制誰可以訪問root的功能。允許使用者完全訪問或允許他們使用一小部分命令。我們教你怎麼做。

sudo和root許可權

我們都聽說過(過於簡單化)Linux中的所有東西都是一個檔案。實際上,作業系統中幾乎所有的東西,從程序、檔案、目錄、套接字和管道,都透過檔案描述符與核心進行通訊。因此,儘管不是所有的東西都是一個檔案,但大多數作業系統物件的處理方式都和以前一樣。在可能的情況下,Linux和類Unix作業系統的設計遵循這一原則。

“一切都是檔案”的概念在Linux中意義深遠。很容易看出,Linux中的檔案許可權是如何成為使用者特權和許可權的支柱之一的。如果您擁有一個檔案或目錄(一種特殊型別的檔案),您可以對其執行您喜歡的操作,包括編輯、重新命名、移動和刪除它。您還可以設定該檔案的許可權,以便其他使用者或使用者組可以讀取、修改或執行該檔案。每個人都受這些許可權的控制。

除了超級使用者之外,所有人都被稱為root。根帳戶是一個特殊特權帳戶。它不受作業系統中任何物件的許可權約束。根使用者可以對任何東西做任何事情,而且幾乎可以在任何時候做任何事情。

當然,任何有權訪問root密碼的人都可以這樣做。它們可以惡意或意外地造成嚴重破壞。事實上,根使用者也可能因為犯了錯誤而造成嚴重破壞。沒有人是絕對正確的。這是危險的東西。

這就是為什麼現在認為不以root使用者身份登入是最佳實踐的原因。使用常規使用者帳戶登入,並使用sudo在短時間內提升您的許可權。通常這只是發出一個命令。

相關:在Linux中,“一切都是檔案”是什麼意思?

sudoers列表

sudo已經安裝在ubuntu18.04.3、manjaro18.1.0和fedora31計算機上,用於研究本文。這並不奇怪。sudo從20世紀80年代初就出現了,並且已經成為幾乎所有發行版的超級使用者操作的標準手段。

安裝現代發行版時,在安裝過程中建立的使用者將新增到名為sudoers的使用者列表中。這些使用者可以使用sudo命令。因為你有sudo能力,你可以使用它們來新增其他使用者到sudoers列表中。

當然,將完全的超級使用者身份隨意地分發給任何人,或者只給那些有部分或特定需要的人,都是魯莽的。sudoers列表允許您指定允許不同使用者使用sudo的命令。這樣,你就不會給他們通往王國的鑰匙,但他們仍然可以完成他們需要做的事情。

以其他使用者身份執行命令

最初,它被稱為“超級使用者做”,因為你可以做的事情作為超級使用者。它的範圍現在已經擴大了,您可以使用sudo執行命令,就像您是任何使用者一樣。它已被重新命名以反映新功能。它現在被稱為“替代使用者do”

要使用sudo作為另一個使用者執行命令,我們需要使用-u(user)選項。在這裡,我們將以使用者mary的身份執行whoami命令。如果使用sudo命令而不使用-u選項,則將以root使用者身份執行該命令。

當然,因為您使用的是sudo,系統會提示您輸入密碼。

sudo -u mary whoami

linux下如何控制sudo訪問

whoami的響應告訴我們執行該命令的使用者帳戶是mary。

您可以使用sudo命令作為另一個使用者登入,而不需要知道他們的密碼。系統將提示您輸入自己的密碼。我們需要使用-i(登入)選項。

sudo -i -u mary pwd whoami ls -hl exit

linux下如何控制sudo訪問

您以瑪麗的身份登入。mary使用者帳戶的“.bashrc”、“.bash\u別名”和“.profile”檔案的處理方式與mary使用者帳戶的所有者自己登入的方式完全相同。

  • 命令提示符更改以反映這是使用者帳戶的會話。
  • pwdcommand報告您現在在mary的主目錄中。
  • whoami告訴我們您正在使用使用者帳戶mary。
  • 目錄中的檔案屬於mary使用者帳戶。
  • exit命令返回到正常的使用者帳戶會話。

編輯sudoers檔案

要將使用者新增到可以使用sudo的使用者列表中,您需要編輯sudoers檔案。非常重要的是,您只能使用visudo命令來執行此操作。visudo命令可防止多人同時嘗試編輯sudoers檔案。它還可以在儲存檔案內容時對其執行語法檢查和解析。

如果您的編輯未透過測試,則不會盲目儲存檔案。你可以選擇。您可以取消並放棄更改,返回並再次編輯更改,或強制儲存不正確的編輯。最後一個選擇是一個嚴重的壞主意。別想那麼做。你會發現自己處於這樣一種情況:每個人都被意外地鎖在了sudo之外。

雖然使用visudo命令啟動編輯過程,但visudo不是編輯器。它呼叫一個現有的編輯器來執行檔案編輯。在Manjaro和Ubuntu上,visudo命令啟動了簡單編輯器nano。在Fedora上,visudo推出了功能更強但不夠直觀的vim。

相關:如何退出Vi或Vim編輯器

如果你喜歡在軟呢帽上使用nano,你可以很容易地做到。首先,安裝nano:

sudo dnf安裝nano

linux下如何控制sudo訪問

然後visudo必須用以下命令呼叫:

sudo EDITOR=nano visudo

linux下如何控制sudo訪問

這看起來是個很好的化名候選人。開啟nano編輯器時會載入sudoers檔案。

linux下如何控制sudo訪問

向sudo組新增使用者

使用visudo開啟sudoers檔案。使用此命令或上述命令指定您選擇的編輯器:

sudo visudo

linux下如何控制sudo訪問

滾動sudoers檔案,直到看到%sudo條目的定義。

linux下如何控制sudo訪問

百分號表示這是組定義而不是使用者定義。在某些發行版中,%sudo行在行首有一個雜湊。這使這句話成為一個評論。如果是這種情況,請刪除雜湊並儲存檔案。

%sudo行如下所示:

  • %sudo:組的名稱。
  • ALL=:此規則適用於此網路上的所有主機。
  • (全部:全部):此組的成員可以作為所有使用者和所有組執行命令。
  • 全部:此組的成員可以執行所有命令。

稍微改寫一下,這個組的成員可以作為任何使用者或任何組在這臺計算機或這個網路中的任何其他主機上執行任何命令。因此,給某人root許可權和sudo使用能力的一個簡單方法是將他們新增到sudo組中。

我們有兩個使用者,Tom和Mary,分別擁有Tom和Mary的使用者帳戶。我們將使用usermod命令將使用者帳戶tom新增到sudo組。G(groups)選項指定要將tom帳戶新增到的組。-a(append)選項將此組新增到使用者帳戶tom已經在的組列表中。如果沒有此選項,使用者帳戶tom將被放置在新組中,但會從任何其他組中刪除。

sudo usermod -a -G sudo tom

linux下如何控制sudo訪問

讓我們檢查一下Mary屬於哪些組:

groups

linux下如何控制sudo訪問

使用者帳戶mary僅在mary組中。

讓我們和湯姆商量一下:

groups

linux下如何控制sudo訪問

tom使用者帳戶,因此,tom屬於tom和sudo組。

讓我們試著讓瑪麗做一些需要sudo特權的事情。

sudo less /etc/shadow

linux下如何控制sudo訪問

瑪麗不能檢視受限檔案“/etc/shadow”中的內容。她因未經允許使用sudo而受到溫和的批評。讓我們看看湯姆的情況:

sudo less /etc/shadow

linux下如何控制sudo訪問

湯姆一輸入密碼,就會看到/etc/shadow檔案。

linux下如何控制sudo訪問

僅僅是把他加入sudo小組,他就被提升到了那些可以使用sudo的精英階層。完全不受限制。

授予使用者受限sudo許可權

湯姆得到了完全的sudo權利。他可以做任何根或者sudo團隊中其他人能做的事情。那可能會給他比你樂意交出的更多的權力。有時需要使用者執行需要root許可權的功能,但沒有正當理由讓他們擁有完全sudo訪問許可權。您可以透過將它們新增到sudoers檔案並列出它們可以使用的命令來實現這種平衡。

我們來見見Harry,Harry使用者帳戶的所有者。他不在sudo組,他沒有sudo特權。

groups

linux下如何控制sudo訪問

Harry能夠安裝軟體是很有用的,但我們不希望他擁有完全的sudo許可權。好的,沒問題。讓我們啟動visudo:

sudo visudo

linux下如何控制sudo訪問

向下滾動檔案,直到透過組定義。我們要給哈里加一條線。因為這是一個使用者定義而不是組定義,所以我們不需要以百分號開頭。

linux下如何控制sudo訪問

使用者帳戶的條目為:

harry ALL=/usr/bin/apt-get

請注意,“harry”和“ALL=”之間有一個製表符

這表示harry可以在連線到此網路的所有主機上使用列出的命令。列出了一個命令,即“/usr/bin/apt-get”。我們可以透過將多個命令新增到命令列表(用逗號分隔)來授予Harry訪問多個命令的許可權。

將該行新增到sudoers檔案,然後儲存該檔案。如果您想再次檢查該行的語法是否正確,我們可以使用-c(只檢查)選項讓visudo掃描檔案並檢查語法:

sudo visudo -c

linux下如何控制sudo訪問

進行檢查,visudo報告一切正常。Harry現在應該可以使用apt get安裝軟體,但如果他試圖使用任何其他需要sudo的命令,就應該被拒絕。

sudo apt-get install finger

linux下如何控制sudo訪問

合適的sudo許可權已經授予了Harry,他可以安裝這個軟體。

如果哈利嘗試使用另一個需要sudo的命令會怎麼樣?

sudo shutdown now

linux下如何控制sudo訪問

哈里被阻止執行命令。我們已經成功地授予他特定的,受限的訪問許可權。他可以使用指定的命令而不是別的。

使用sudoers使用者別名

如果我們想給Mary相同的特權,我們可以在sudoers檔案中為使用者帳戶Mary新增一行,方法與我們對Harry所做的完全相同。另一種更簡潔的方法是使用使用者別名。

在sudoers檔案中,使用者別名包含使用者帳戶名的列表。然後可以在定義中使用使用者別名的名稱來表示所有這些使用者帳戶。如果要更改這些使用者帳戶的許可權,則只能編輯一行。

讓我們建立一個使用者別名並在sudoers檔案中使用它。

sudo visudo

linux下如何控制sudo訪問

Scroll down in the file until you come to the User_Alias specification line. 007Ys3FFgy1gp5ru2c92lj30hy0amwfg

透過鍵入以下內容新增使用者別名:

User_Alias INSTALLERS = harry, mary

每個元素之間用空格分隔,而不是製表符。邏輯分解為:

  • User\u Alias:這告訴visudo這將是一個User\u別名。
  • 安裝程式:這是此別名的任意名稱。
  • =harry,mary:要包含在此別名中的使用者列表。

現在,我們將編輯之前為使用者帳戶新增的行:

harry ALL=/usr/bin/apt-get

將其更改為:

INSTALLERS ALL=/usr/bin/apt-get

這表示“INSTALLERS”使用者別名定義中包含的所有使用者帳戶都可以執行apt get命令。我們可以用Mary來測試,她現在應該可以安裝軟體了。

sudo apt-get install colordiff

linux下如何控制sudo訪問

Mary能夠安裝軟體,因為她是“INSTALLERS”使用者\u Alias,並且該使用者\u Alias已獲得這些許可權。

三個快速的sudo技巧

如果忘記將sudo新增到命令中,請鍵入

sudo !!

最後一個命令將被重複,sudo新增到行的開頭。

一旦您使用了sudo並使用了密碼進行了身份驗證,您就不必在15分鐘內將密碼用於其他sudo命令。如果要立即忘記身份驗證,請使用:

sudo -k

有沒有想過在哪裡可以看到失敗的sudo命令嘗試?它們進入“/var/log”/身份驗證日誌“檔案。您可以透過以下方式檢視:

less /var/log/auth.log

linux下如何控制sudo訪問

我們可以看到使用者帳戶mary的條目,當她試圖以使用者“root”的身份執行shutdown命令時,她是在TTY pts/1上登入的

以巨大的力量…

…將一部分授權給其他人的能力。現在您知道如何有選擇地授權其他使用者。

  • 發表於 2021-04-02 22:30
  • 閱讀 ( 41 )
  • 分類:網際網路

你可能感興趣的文章

如何在linux下配置raid硬碟陣列

有備用硬碟,你想更有效地使用你的Linux電腦?RAID可以提供效能提升或新增冗餘,具體取決於它的配置方式。讓我們快速進入多磁碟世界。 ...

  • 發佈於 2021-03-12 05:36
  • 閲讀 ( 40 )

如何保護linux上的usb埠

... 讓我們來看看您可以如何嘗試並減輕這些裝置帶來的風險。 ...

  • 發佈於 2021-03-13 04:54
  • 閲讀 ( 58 )

如何使用雙因素身份驗證保護linux-ubuntu

...到移動裝置的驗證碼。這意味著,即使你的密碼被洩露(如何使你的密碼更強大),惡作劇的駭客將需要訪問你的移動裝置,以獲得完全訪問你的帳戶。 ...

  • 發佈於 2021-03-13 11:11
  • 閲讀 ( 51 )

你自己的社交網路:如何在linux上設定mastodon例項

...元限制相反)。看看我們最近對乳齒象的觀察,看看它是如何工作的。 ...

  • 發佈於 2021-03-14 07:42
  • 閲讀 ( 53 )

讓遊戲控制器在linux上工作的6個技巧

...本機支援,要麼來自鍵對映器。但偶爾會出現問題。遊戲控制器在Linux上不工作?試試這些技巧。 ...

  • 發佈於 2021-03-14 11:02
  • 閲讀 ( 38 )

如何控制linux啟動服務和守護程序

...許多應用程式,您甚至可能不知道這些應用程式。下面是如何控制它們。 ...

  • 發佈於 2021-03-15 11:22
  • 閲讀 ( 52 )

如何用ssh遠端管理linux伺服器

...。它之所以成為遠端伺服器管理的首選是有原因的。學習如何透過SSH遠端管理Linux伺服器,從連線到安裝軟體和檔案傳輸。 ...

  • 發佈於 2021-03-15 17:05
  • 閲讀 ( 54 )

如何用ukuu輕鬆升級ubuntu的linux核心

...簡單的事——它需要相當多的知識。我們之前已經討論過如何做到這一點,但是如果您希望不必大驚小怪地獲得最新和最棒的,並且您正在執行Ubuntu,那麼您可能會喜歡一種更自動化的Ukuu形式的解決方案。 ...

  • 發佈於 2021-03-16 09:57
  • 閲讀 ( 49 )

如何在linux上安裝microsoft office

... 但是你的電腦執行Linux。你到底要如何安裝微軟辦公軟體,並使用它而不會遇到問題? ...

  • 發佈於 2021-03-18 07:01
  • 閲讀 ( 55 )

如何使用steam play在linux上玩幾乎所有windows遊戲

... 下面介紹如何在Linux上使用測試版的Steam play玩Windows遊戲。 ...

  • 發佈於 2021-03-23 19:13
  • 閲讀 ( 53 )
Pvtj9465
Pvtj9465

0 篇文章

作家榜

  1. admin 0 文章
  2. 孫小欽 0 文章
  3. JVhby0 0 文章
  4. fvpvzrr 0 文章
  5. 0sus8kksc 0 文章
  6. zsfn1903 0 文章
  7. w91395898 0 文章
  8. SuperQueen123 0 文章

相關推薦