天天看點

su和sudo

1、su指令

su/su - username:切換使用者,如果從root使用者切換到切換使用者,不需要其他使用者的密碼;username為空,預設為root使用者,從普通使用者切換到root使用者,需要輸入root使用者的密碼

login shell和non-login shell:

login shell是說在取得bash時需要完整的登陸流程,每個使用者登陸取得bash的時候都會讀取這個檔案etc/profile

non-login shell就是取得bash不需要重複登入,就像你在桌面視圖中用ctrl+alt+T啟動的shell輸入視窗就是non-login shell。還有就是你在shell視窗直接su切換的使用者,都屬于non-login shell。

su/su-後的差別:

1、如果直接su的話,不會讀取/etc/profile的,是以你的環境變量PATH,MAIL、pwd等是不會改 變的,此時是non-login shell,

2、如果想讀取/etc/profile的話我們需要用su -,相當于以新使用者重新啟動,是login shell執行指令會查找新使用者的環境變量

2、sudo指令

每次需要切換到root使用者下執行指令時,都需要輸入密碼,不太安全;并且每次需要在root使用者執行指令時,都需要先切換到root使用者再執行指令,有時候可能隻需要執行一次指令,解決方法:sudo

sudo:可以切換到其他使用者執行指令,執行完之後自動切回原使用者,并且不需要root使用者的密碼,隻需要目前使用者的密碼

但是并不是所有使用者都有運作sudo的權限,想要運作sudo,需要配置/etc/sudoers檔案

[lxx2@172-16-8-141 /home/lxx2]

$sudo su -

[sudo] password for lxx2:

lxx2 is not in the sudoers file. This incident will be reported.

etc/sudoers檔案可讀但不可修改,因為sudoe這個檔案是由文法構成的,僅能通過root使用者下執行visudo指令修改

1、對單個使用者配置sudo權限

隻需要在/etc/sudoers中添加一行:Oracle ALL=(ALL) ALL

第一清單示需要開啟sudo權限的使用者;第二清單示該使用者的主機名;第三清單示sudo預設切換到哪個使用者上執行指令,隻能切換到root使用者;第四清單示sudo可運作的指令,就是限定該使用者的執行權限

2、對多個使用者配置sudo權限

1、可以照方面的方法,一行行配置;

2、也可以用使用者組,将需要運作sudo的使用者都添加到一個組裡,可以添加到已經存在的組,如%wheel,也可以自定義,一個組裡使用者運作sudo可執行的指令時一樣的

自定義:

3、通過别名設定

在sudoers檔案裡有一些别名,User_Alias表示具有sudo權限的使用者清單,就是第一列參數。Host_Alias表示主機的清單。就是第二列參數。Cmnd_Alias表示同意運作指令的清單,就是第四列參數。還有個Runas_Alias。我初始的sudoers裡是沒有的,這個表示使用者以什麼身份登入。也就是第三列參數。

User_Alias LUXXUSERS = 1, manager2, manager3

Cmnd_Alias QUANXIAN = !/usr/bin/passwd, /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root
   LXXUSERS   ALL=(root)    QUANXIAN
           

權限:有時不需要目前使用者切換到其他使用者執行所有指令,可以限定執行的指令

ALL表示有切換到的使用者的所有權限

如/usr/bin/passwd ,就是有修改使用者密碼的權限,

!usr/bin/passwd root就是沒有修改root密碼的權限,

/bin/su - 表示有切換到除原使用者外其他所有使用者并且不傳回原使用者的權限,相當于切換到到root使用者執行su -/su - username

總結;sudo 能保護目标使用者的密碼不外流。幫root管理系統時,su是把root全部權利交給使用者,sudo可以對使用者賦予root使用者的一部分權利,使系統更安全,并且分工明确