sudo是為所有想使用root權(quán)限的普通用戶設(shè)計(jì)的闺阱∨诔担可以讓普通用戶具有臨時(shí)使用root權(quán)限的權(quán)利,只需要普通用戶輸入自己賬戶的密碼即可。當(dāng)然這個(gè)普通用戶必須在/etc/sudoers文件中具有配置項(xiàng)瘦穆,才具有使用sudo的權(quán)利纪隙。
沒(méi)有配置權(quán)限之前,普通用戶是無(wú)法進(jìn)行root權(quán)限操作的扛或,例如普通用戶查看/root目錄下的文件:
[if !vml]
[endif]
使用root用戶編輯/etc/sudoers文件绵咱,給普通用戶授權(quán)
命令行輸入visudo,打開(kāi)/etc/sudoers文件熙兔,加入如下的內(nèi)容悲伶,保存:
[if !vml]
[endif]
這樣普通用戶就可以使用sudo執(zhí)行需要root權(quán)限的命令了,如下:
[if !vml]
[endif]
?sudo的工作過(guò)程如下:
1. 當(dāng)用戶執(zhí)行sudo時(shí)住涉,系統(tǒng)會(huì)主動(dòng)尋找/etc/sudoers文件麸锉,判斷該用戶是否有執(zhí)行sudo的權(quán)限
2. 確認(rèn)用戶具有執(zhí)行sudo的權(quán)限后,讓用戶輸入自己的密碼進(jìn)行確認(rèn)
3. 若密碼輸入成功舆声,則開(kāi)始執(zhí)行sudo后續(xù)的命令
如果想要更加精準(zhǔn)的控制普通用戶使用sudo的場(chǎng)景花沉,就需要理解配置中的含義。
user-1 ALL=(ALL)? ? ALL
第一個(gè)ALL是指網(wǎng)絡(luò)中的主機(jī)媳握,我們可以指定主機(jī)名碱屁,這樣user-1用戶只可以在此主機(jī)上執(zhí)行后面的命令。第二個(gè)括號(hào)里的ALL是指目標(biāo)用戶蛾找,也就是以誰(shuí)的身份去執(zhí)行命令娩脾,最后一個(gè)命令指命令名稱(chēng)。
例如打毛,我們想讓user-1用戶在node-1主機(jī)上以allen的身份執(zhí)行kill命令柿赊,就可以這樣編寫(xiě)配置文件:
user-1 node-1=(allen)? ?/bin/kill
案例:只允許user-1用戶以root身份在node-1主機(jī)上執(zhí)行l(wèi)s、cat命令隘冲,并且執(zhí)行的時(shí)候免輸入密碼闹瞧。
需要修改/etc/sudoers配置文件:
user-1 node-1=NOPASSWD:? ?/bin/ls,/bin/cat
[if !vml]
[endif]
此時(shí)若user-1用戶執(zhí)行非ls、cat命令時(shí)會(huì)被禁止:
[if !vml]
[endif]
而ls命令就可以正常執(zhí)行:
[if !vml]
[endif]