Linux中su和sudo的用法整理
一、為什麽會有su和sudo命令?
主要是因為在實際工作當中需要在Linux不同用戶之間進行切換。root用戶權限最高很多時候需要root用戶才能執行一些關鍵命令。所以需要臨時切換為root用戶。工作完成後,考慮到系統的安全性避免誤操作需要切換為普通用戶。su和sudo就是為了解決該問題內置的Linux命令。
二、su的用法
su命令其實就是切換用戶的意思。
示例:
su #默認切換到root用戶,執行後然後輸入root密碼就可以切換root用戶,最後執行exit命令可以切換到原先的用戶。
su- #切換為root用戶並且可以把當前目錄切換為root的用戶家目錄/root。
說明:在root用戶下可以切換為系統擁有的任意用戶並且不需要輸入其用戶密碼。
su命令的缺點:執行該命令是需要知道root用戶的密碼的。因為root用戶擁有系統的最高權限,很容易誤操作造成系統掛掉。一般情況下root密碼盡可能要進行保密。
三、sudo用法
sudo可以跳過root用戶登錄而去執行一些特定命令。比如:sudo passwd user1。當然前提是當前登錄用戶擁有執行該命令的權限。可以通過配置/etc/sudoers 文件來實現。
可以通過vi/vim命令修改文件。最好的做法是通過visudo來修改。這個命令可以編輯保存的同時檢查語法的正確性。這樣可以避免由於誤操作造成文件無法使用sudo命令。
文件內容(部分):
root ALL=(ALL) ALL
user1 ALL=(ALL) ALL
#新增上一行的內容,並修改用戶名為user1 這條命令的含義user1用戶可以執行任何的sudo命令。執行的同時需要輸入user1用戶的密碼。
user1 ALL=(ALL) NOPASSWD:ALL
#和上一句命令功能相同,不同之處是不需要用戶密碼。這樣其實和root權限一樣了。不建議這樣做。
user1 ALL=(ALL) NOPASSWD:/sbin/shutdown,/usr/bin/reboot
# 對於常用的命令可以指定要執行的命令不需要輸入密碼。這條命令是user1用戶可以執行重啟服務的功能。不需要輸入密碼。
本質上理解sudo不是真的切換了用戶。而是通過當前登錄用戶的身份和權限去執行Linux命令。
Linux中su和sudo的用法整理