linux中可以用su來進行身份的切換,不過有些細節值得注意
1)su,使用的是以root的權限但non-login的方式來登入系統,所以其mail和PATH都是su之前的賬號信息
2)su - username,這樣可以完全切換到username的權限及身份(環境變量也是username的),離開用exit就能返回之前的身份
3)su - -c,一次性的使用root身份執行指令,指令完成後變成普通身份
su切換身份缺點:都要用到root密碼,如果很多人使用,安全隱患大
對此,可以使用sudo來完成
sudo基礎語法:sudo -b 將後續的指令放到背景中讓系統自行執行,而不與目前的 shell 產生影響
sudo -u 後面可以接欲切換的使用者,若無此項則代表切換身份爲 root
示例:
[root@www ~]# sudo -u sshd touch /tmp/mysshd
以sshd的身份去執行 touch /tmp/mysshd
注意,我們無法su -sshd去切換系統賬號,因爲系統賬號登入方式都是non-login登入方式
如果要讓普通賬號使用sudo,得用visudo指令來修改/etc/sudoers文件,其格式如下:
使用者賬號 登入者的來源主機名 = (可切換的身份) 可下達的指令
root ALL = (ALL) ALL <==這是默認值
一個個設定麻煩的話可以用%groupname,羣組功能
如果信任的過用戶,可以免輸入密碼,在(可切換的身份)即(ALL)加NOPASSWD,即可,這樣用sudo的話,自己的密碼也可以不用輸入
另外,visudo裏可以用別名,以便簡化操作,示例如下:
[root@www ~]# visudo <==注意是 root 身份
User_Alias ADMPW = pro1, pro2, pro3, myuser1, myuser2
Cmnd_Alias ADMPWCOM = !/usr/bin/passwd, /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root
使用者賬號 登入者的來源主機名 = (可切換的身份) 可下達的指令
ADMPW ALL = (root) ADMPWCOM