linux中安全和許可權那些事

大雄45發表於2022-06-23
導讀 眾所周知, 是一個分時多使用者作業系統,每個使用者都有獨立許可權且相互隔離。其中root使用者的許可權是最大的,其能夠操作所有的檔案以及執行所有的 。當然,正因為如此,使得其風險很大,若操作不當,就會產生嚴重的問題,更嚴重者可以導致系統崩潰。

因而在大多數的時候,我們並不會直接使用root使用者登入系統,而是使用一些有著特定許可權的普通使用者。因此在做某些操作的時候,就會遇到許可權不足的情況,比如修改其他普通使用者的密碼(當然這種操作有些不合理,只是為了舉例。

假定我們的系統中有有兩個普通使用者:user1和user2,當前登入系統的使用者為user1,此時需要修改user2的 ,如果直接執行如下命令,就會報許可權不足的提示:

linux中安全和許可權那些事linux中安全和許可權那些事

此時有兩種方式可以解決,分別是:切換其他使用者執行和以其他使用者的許可權執行。

切換其他使用者執行

對於切換使用者而言,我們最先想到的就是,先退出當前的登入使用者,然後選擇目標使用者進行重新登入。但是這種方式操作起來有些麻煩,因而我們可以使用更簡潔的方式,也就是su命令來實現直接切換使用者。

以上面的例子來說,先使用su切換到root使用者,接著再次執行之前的操作,結果如所示:

linux中安全和許可權那些事linux中安全和許可權那些事

如果我們想回退到之前的使用者,只需要執行exit命令,執行結果如下所示:

linux中安全和許可權那些事linux中安全和許可權那些事

對於su來說,預設情況下是切換為root使用者,如果需要切換為指定的使用者,則可以在su後面指定使用者名稱。比如user1切換為user2,使用到的命令如下所示:

su user2

執行結果如下所示:

linux中安全和許可權那些事linux中安全和許可權那些事

需要說明一點的是,如果從root使用者切換為普通使用者,則可以進行直接切換,而無需輸入對應使用者的密碼。比如從root使用者切換為user1使用者,執行結果如下所示:

linux中安全和許可權那些事linux中安全和許可權那些事

對於su命令來說,其還可以加一個引數:"-"。加上該引數之後,不僅身份會變成對應的使用者,甚至對應的使用者環境也會跟著改變,當然最直觀的感受就是主目錄。

下面來分別演示一下這兩種情況:

  • 帶“-”引數

使用user1使用者進行登入,執行“su -”命令切換後,使用pwd命令來檢視當前所屬的目錄:

linux中安全和許可權那些事linux中安全和許可權那些事

  • 不帶“-”引數

使用user1使用者進行登入,執行“su ”命令切換後,使用pwd命令來檢視當前所屬的目錄:

linux中安全和許可權那些事linux中安全和許可權那些事

以其他使用者的許可權執行操作

大多數時候,我們只是需要以某個使用者的許可權來執行對應的命令即可,而不是非要切換成對應的使用者。
對於以其他使用者許可權執行某個操作的命令為:sudo。比如上面提到的例子,此時可以使用如下命令:

sudo passwd user2

執行後如所示:

linux中安全和許可權那些事linux中安全和許可權那些事

看到這大家是否會有所困惑呢?不是說使用sudo命令可以使用其他使用者的許可權做某些操作嗎?怎麼還提示錯誤了呢?

實際上執行該命令有一定的限制條件,那就是該使用者必須在/etc/sudoers中存在。也只有當使用者在/etc/sudoers配置檔案中被配置過時,才能夠擁有使用sudo命令的許可權,才能使用sudo以其他使用者的身份執行某些操作。

當然,作為普通使用者是沒有編輯/etc/sudoers配置檔案的許可權的,該操作必須使用root使用者登入系統,來將該使用者新增到/etc/sudoers配置檔案中。這種限制在一定程度上避免了安全風險,畢竟所有能夠使用sudo命令的人都是被root使用者進行過授權。

以root使用者登入系統後,就可以通過執行如下命令進入到/etc/sudoers配置檔案的編輯頁面:

vi /etc/sudoers
或
visudo

對於以上的兩個命令,推薦使用visudo,因為這種方式有自動的語法檢查功能。

執行命令的頁面如下所示:

linux中安全和許可權那些事linux中安全和許可權那些事

接著在該配置檔案中新增一條配置資訊:

user1 ALL=(ALL) ALL ## 複製上一行的內容

如下所示:

linux中安全和許可權那些事linux中安全和許可權那些事

接著儲存並退出。此時再次執行上面修改user2使用者的密碼的命令,結果如下所示:

linux中安全和許可權那些事linux中安全和許可權那些事

也就是說,此時通過使用sudo命令,就可以使得普通使用者user1能夠以root使用者的許可權來完成修改其他普通使用者user2的密碼的操作。

通過觀察發現,每次執行sudo命令時都需要輸入當前登入使用者的密碼,這似乎讓人有點惱火,那麼是否有辦法避免這個事呢?解決方法就是使用root使用者來對剛才的配置進行修改,在user1的記錄的最後一個ALL前面增加一個引數:NOPASSWD,修改後的記錄為:

user1 ALL=(ALL) NOPASSWD:ALL

儲存退出後,再次重複之前的操作,發現這次無需再次輸入密碼:

linux中安全和許可權那些事linux中安全和許可權那些事

到此,如何做自己許可權之外的操作的方法已經介紹完畢,希望可以對大家有所幫助。

原文來自:


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2902329/,如需轉載,請註明出處,否則將追究法律責任。

相關文章