衆所周知,Linux是一個分時多用戶操作系統,每個用戶都有獨立權限且相互隔離。其中root用戶的權限是最大的,其能夠操作所有的文件以及執行所有的命令。當然,正因為如此,使得其風險很大,若操作不當,就會産生嚴重的問題,更嚴重者可以導緻系統崩潰。
因而在大多數的時候,我們并不會直接使用root用戶登錄系統,而是使用一些有着特定權限的普通用戶。因此在做某些操作的時候,就會遇到權限不足的情況,比如修改其他普通用戶的密碼(當然這種操作有些不合理,隻是為了舉例)。
假定我們的系統中有有兩個普通用戶:user1和user2,當前登錄系統的用戶為user1,此時需要修改user2的命令,如果直接執行如下命令,就會報權限不足的提示:
此時有兩種方式可以解決,分别是:切換其他用戶執行和以其他用戶的權限執行。
切換其他用戶執行對于切換用戶而言,我們最先想到的就是,先退出當前的登錄用戶,然後選擇目标用戶進行重新登錄。但是這種方式操作起來有些麻煩,因而我們可以使用更簡潔的方式,也就是su命令來實現直接切換用戶。
以上面的例子來說,先使用su切換到root用戶,接着再次執行之前的操作,結果如所示:
如果我們想回退到之前的用戶,隻需要執行exit命令,執行結果如下所示:
對于su來說,默認情況下是切換為root用戶,如果需要切換為指定的用戶,則可以在su後面指定用戶名。比如user1切換為user2,使用到的命令如下所示:
su user2
執行結果如下所示:
需要說明一點的是,如果從root用戶切換為普通用戶,則可以進行直接切換,而無需輸入對應用戶的密碼。比如從root用戶切換為user1用戶,執行結果如下所示:
對于su命令來說,其還可以加一個參數:"-"。加上該參數之後,不僅身份會變成對應的用戶,甚至對應的用戶環境也會跟着改變,當然最直觀的感受就是主目錄。
下面來分别演示一下這兩種情況:
使用user1用戶進行登錄,執行“su -”命令切換後,使用pwd命令來查看當前所屬的目錄:
使用user1用戶進行登錄,執行“su ”命令切換後,使用pwd命令來查看當前所屬的目錄:
以其他用戶的權限執行操作
大多數時候,我們隻是需要以某個用戶的權限來執行對應的命令即可,而不是非要切換成對應的用戶。
對于以其他用戶權限執行某個操作的命令為:sudo。比如上面提到的例子,此時可以使用如下命令:
sudo passwd user2
執行後如所示:
看到這大家是否會有所困惑呢?不是說使用sudo命令可以使用其他用戶的權限做某些操作嗎?怎麼還提示錯誤了呢?
實際上運行該命令有一定的限制條件,那就是該用戶必須在/etc/sudoers中存在。也隻有當用戶在/etc/sudoers配置文件中被配置過時,才能夠擁有使用sudo命令的權限,才能使用sudo以其他用戶的身份執行某些操作。
當然,作為普通用戶是沒有編輯/etc/sudoers配置文件的權限的,該操作必須使用root用戶登錄系統,來将該用戶添加到/etc/sudoers配置文件中。這種限制在一定程度上避免了安全風險,畢竟所有能夠使用sudo命令的人都是被root用戶進行過授權。
以root用戶登錄系統後,就可以通過執行如下命令進入到/etc/sudoers配置文件的編輯頁面:
vi /etc/sudoers
或
visudo
對于以上的兩個命令,推薦使用visudo,因為這種方式有自動的語法檢查功能。
執行命令的頁面如下所示:
接着在該配置文件中新增一條配置信息:
user1 ALL=(ALL) ALL ## 複制上一行的内容
如下所示:
接着保存并退出。此時再次執行上面修改user2用戶的密碼的命令,結果如下所示:
也就是說,此時通過使用sudo命令,就可以使得普通用戶user1能夠以root用戶的權限來完成修改其他普通用戶user2的密碼的操作。
通過觀察發現,每次執行sudo命令時都需要輸入當前登錄用戶的密碼,這似乎讓人有點惱火,那麼是否有辦法避免這個事呢?解決方法就是使用root用戶來對剛才的配置進行修改,在user1的記錄的最後一個ALL前面增加一個參數:NOPASSWD,修改後的記錄為:
user1 ALL=(ALL) NOPASSWD:ALL
如下圖所示:
保存退出後,再次重複之前的操作,發現這次無需再次輸入密碼:
到此,如何做自己權限之外的操作的方法已經介紹完畢,希望可以對大家有所幫助。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!