我們都知道非常多的文件都僅僅有root有權(quán)限來(lái)改動(dòng),那么在我們平時(shí)的開(kāi)發(fā)過(guò)程中都建議使用一般賬號(hào)來(lái)登錄進(jìn)行開(kāi)發(fā)。還記得前面說(shuō)到的ssh嗎。我們也是將同意root登錄設(shè)置成no。到必要的時(shí)候再切換到root來(lái)進(jìn)行操作,這樣就不至于有風(fēng)險(xiǎn)。 那么我們?cè)鯓忧袚Q身份呢。 1.su su是最簡(jiǎn)單的身份切換名,用su我們能夠進(jìn)行不論什么用戶(hù)的切換,一般都是su - username,然后輸入password就ok了,可是root用su切換到其它身份的時(shí)候是不須要輸入password的。起初我都是用su來(lái)切換的,后來(lái)老大看見(jiàn)了說(shuō)我這樣的方式切換是不好的。你能夠嘗試其它的方式來(lái)切換。我認(rèn)為這樣切換非常方便啊,那究竟是不好在哪里呢。后面再看另外一種身份的切換方式就知道了。 一般我們切換身份都是切換到root,然后進(jìn)行一些僅僅有root能干的事,比方改動(dòng)配置文件。比方下載安裝軟件。這些都僅僅能是root才有權(quán)限干的事。切換到root能夠是單純的su,或者是su -和su - root,后面兩個(gè)是一樣的意思。
單純使用su切換到root,讀取變量的方式是non-login shell,這樣的方式下非常多的變量都不會(huì)改變。尤其是PATH。所以root用的非常多的命令都僅僅能用絕對(duì)路徑來(lái)運(yùn)行。這樣的方式僅僅是切換到root的身份。 而用su -這樣的方式的話(huà),是login shell方式,它是先以root身份登錄然后再運(yùn)行別的操作。 假設(shè)我們僅僅要切換到root做一次操作就好了,僅僅要在su后面加個(gè)-c參數(shù)就好了。運(yùn)行完這次操作后。又會(huì)自己主動(dòng)切換回我們自己的身份。非常方便。 那么假設(shè)有非常多人管理這個(gè)主機(jī)的話(huà),那不是非常多人都要知道root的password嗎,并且可能有的人僅僅是單純的進(jìn)行一次root操作就能夠了,這個(gè)時(shí)候,su方式就不是非常好,rootpassword越少人知道越好,越少人知道就越安全,這時(shí)就須要另外一種方式了。 2.sudo 相比于su切換身份須要用戶(hù)的password,常常性的是須要rootpassword,sudo僅僅是須要自己的password,就能夠以其它用戶(hù)的身份來(lái)運(yùn)行命令。常常是以root的身份運(yùn)行命令。也并不是全部人都能夠用sudo:
這里我要查看/etc/shadow這個(gè)文件的前三行,可是卻發(fā)現(xiàn)看不了,提示的錯(cuò)誤是說(shuō)我當(dāng)前這個(gè)用戶(hù)不在sudoers這個(gè)文件,所以sudo是依賴(lài)于/etc/sudoers這個(gè)配置文件的。 sudo的運(yùn)行有這樣一個(gè)流程: 1).當(dāng)用戶(hù)運(yùn)行sudo時(shí),系統(tǒng)于/etc/sudoers文件里查找該用戶(hù)是否有運(yùn)行sudo的權(quán)限; 2).若用戶(hù)具有可運(yùn)行sudo的權(quán)限。那么讓用戶(hù)輸入用戶(hù)自己的password,注意這里輸入的是用戶(hù)自己的password。 3).假設(shè)password正確。變開(kāi)始進(jìn)行sudo后面的命令,root運(yùn)行sudo是不須要輸入password的,切換到的身份與運(yùn)行者身份同樣的時(shí)候。也不須要輸入password。 以下看看/etc/sudoers這個(gè)配置文件:
為何剛開(kāi)始僅僅有root能運(yùn)行sudo,切換到root身份通過(guò)visudo查看/etc/sudoers這個(gè)配置文件,假設(shè)是vim /etc/sudoers是能夠查看的,可是不能改動(dòng),由于sudoers這個(gè)文件是由語(yǔ)法的,僅僅能通過(guò)visudo來(lái)改動(dòng)。第一個(gè)紅色方框那行代碼,這行代碼是什么意思呢。第一列root不用多說(shuō),是用戶(hù)賬號(hào),第二列的ALL意思是登陸者的來(lái)源主機(jī)名,第三列等號(hào)右邊小括號(hào)里的ALL是代表能夠切換的身份。第四列ALL是可運(yùn)行的命令。 1).單個(gè)用戶(hù)的sudoers語(yǔ)法: 假設(shè)我要我當(dāng)前這個(gè)用戶(hù)能運(yùn)行root的全部操作,那么我僅僅要加一行l(wèi)earnpython ALL=(ALL) ALL。那么假設(shè)有非常多人須要運(yùn)行sudo。那不是要寫(xiě)編寫(xiě)非常多行啊,這樣不是非常麻煩,這樣就要用到用戶(hù)組了。 2).利用用戶(hù)組處理visudo: 看看第二個(gè)紅色方框那行代碼。%wheel代表wheel用戶(hù)組。假設(shè)我們將須要運(yùn)行root全部操作的用戶(hù)都加入到wheel用戶(hù)組,或者我們自己定義的用戶(hù)組。然后加入一行代碼。那么就不用一個(gè)用戶(hù)一個(gè)用戶(hù)的加入進(jìn)來(lái)了,這樣不是非常省事啊。 3).限制用戶(hù)sudo的權(quán)限: 可是常常我們不須要用戶(hù)有那么大的權(quán)限。僅僅要讓他們具有他們負(fù)責(zé)范圍的權(quán)限就能夠了。比方有的有的人來(lái)管理password,我們就僅僅讓他能進(jìn)行password的管理,而不讓他有別的權(quán)限,這樣就須要權(quán)限的控制了。 假設(shè)我讓我當(dāng)前用戶(hù)來(lái)管理password。即learnpython這個(gè)用戶(hù)能使用passwd這個(gè)命令來(lái)幫root改動(dòng)用戶(hù)password。僅僅要加這行l(wèi)earnpython ALL=(root) /usr/bin/passwd,那么learnpython這個(gè)用戶(hù)就能夠使用passwd這個(gè)命令了:
可是假設(shè)僅僅是運(yùn)行sudo passwd命令,改動(dòng)的就是root的password,當(dāng)然我們不希望普通用戶(hù)能具有改動(dòng)rootpassword的權(quán)限,那么在visudo的時(shí)候就須要將命令的參數(shù)限制好。如改成這樣: [root@localhost ~]# visudo learnpython ALL=(root) !/usr/bin/passwd, /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root 4).通過(guò)別名設(shè)置visudo 查看sudoers這個(gè)文件的時(shí)候。你會(huì)看見(jiàn)User_Alias。Host_Alias和Cmnd_Alias這些東西,他們都是一些別名,User_Alias表示具有sudo權(quán)限的用戶(hù)列表,就是第一列參數(shù)。Host_Alias表示主機(jī)的列表。就是第二列參數(shù)。Cmnd_Alias表示同意運(yùn)行命令的列表,就是第四列參數(shù)。還有個(gè)Runas_Alias。我初始的sudoers里是沒(méi)有的,這個(gè)表示用戶(hù)以什么身份登錄。也就是第三列參數(shù)。 所以假設(shè)有幾個(gè)password管理員的話(huà)就能夠加上例如以下代碼: [root@localhost ~]# visudo User_Alias PWMNG = manager1, manager2, manager3 Cmnd_Alias PWCMD = !/usr/bin/passwd, /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root PWMNG ALL=(root) PWCMD 5).sudo搭配su 從上面來(lái)看。我們都僅僅是切換到別的用戶(hù)然后運(yùn)行命令,接著就切回到我們自己的用戶(hù)了。假設(shè)我們要像su那樣直接切換到root。然后干自己想干的。這個(gè)時(shí)候,就要將命令改動(dòng)成/bin/su -。例如以下: [root@localhost ~]# visudo User_Alias ADMINS = user1, user2, user3 ADMINS ALL=(root) /bin/su - 當(dāng)然這個(gè)是須要謹(jǐn)慎了,由于這樣用戶(hù)user1。user2,user3等就直接切換到root了,切換后他們就是老大了。
有沒(méi)有發(fā)現(xiàn),當(dāng)我們連續(xù)使用sudo的時(shí)候,在一定時(shí)間內(nèi)是不用再次輸入我們的password,這個(gè)事實(shí)上是系統(tǒng)自己設(shè)定的,在五分鐘之內(nèi)運(yùn)行sudo僅僅須要輸入一次password就能夠了。 3.總結(jié) 了解完su和sudo,是不是發(fā)現(xiàn)sudo有太多的優(yōu)點(diǎn)了。su方式切換是須要輸入目標(biāo)用戶(hù)的password。而sudo僅僅須要輸入自己的password,所以sudo能夠保護(hù)目標(biāo)用戶(hù)的password不外流的。當(dāng)幫root管理系統(tǒng)的時(shí)候,su是直接將root全部權(quán)利交給用戶(hù)。而sudo能夠更好分工,僅僅要配置好/etc/sudoers,這樣sudo能夠保護(hù)系統(tǒng)更安全,并且分工明白,有條不紊。 |
|
來(lái)自: liang1234_ > 《shell等腳本》