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