Linux權限管理--su與sudo
1、su用來切換登錄的用戶,比如當前用戶為chen,可以用su zhu,並輸入用戶zhu的登錄密碼,就可以切換到用戶zhu。
如果一個普通用戶想切換到root用戶,以root用戶執行某些程序和查看文件,就必須知道root用戶的密碼。同理,如果切換到其他的用戶,也需要知道其他用戶帳號密碼。
如果一個用戶想擁有root權限,可以直接把該用戶的id改為0,0是root用戶的id。另外可以采用xia面的sudo方法,獲取root權限。這種方式不要只知道root密碼。
2、sudo,受限的su
如果系統管理員sa不想其它的普通用戶知道root密碼,而又希望其他用戶能夠擁有root用戶部分權限或者全部權限。這是最好的選擇方式是使用sudo。
sudo需要通過/etc/sudoers文件來管理用戶權限,或者直接輸入visudo來編輯/etc/sudoers 文件,最好使用visudo命令。
sudo運行程序時,輸入自己的登錄密碼即可。
/etc/sudoers權限管理的通用格式為:
user host =run_as command
user:一位或幾位用戶,在/etc/group中可以用一個%代替它,組對象的名稱一定要用百分號%開頭。
host:一個或幾個主機名;
run_as:作為哪個用戶運行,常見選項是root和ALL
command:想讓用戶或組運行的一個或幾個根級別命令。
eg:root ALL=(ALL) ALL
root表示被授權的用戶,這里是根用戶;
第一個ALL表示所有計算機;
第二個ALL表示所有用戶;
第三個ALL表示所有命令;
全句的意思是:授權根用戶在所有計算機上以所有用戶的身份運行所有文件。
$sudo su - 可以由一般用戶切換到普通用戶
eg:%zhang ALL=(ALL) NOPASSWD:useradd,userdel
授權zhang組全部成員在所有計算機上以所有用戶的身份運行useradd,userdel命令;且運行時不必輸入密碼。
區分su、su root、su -、 su - root
su 后面不加用戶是默認切到 root
su 是不改變當前變量
su - 是改變為切換到用戶的變量
也就是說su只能獲得root的執行權限,不能獲得環境變量
而su -是切換到root並獲得root的環境變量及執行權限
su - root is the same as su -
just like login as root, then the shell is login shell,
which mean it will expericene a login process,
usually .bash_profile and .bashrc will be sourced
su root is the same as su
like you open an interactive shell in root name,
then only .bashrc will be sourced.