sudo的用法
sudo的用法
Linux是一種多用戶的操作系統(tǒng),統(tǒng)一時(shí)間可以登錄多個(gè)用戶進(jìn)行操作,同時(shí)在LiNux之上用戶又分為系統(tǒng)用戶和普通用戶,不同的用戶對系統(tǒng)(系統(tǒng)中的文件)擁有不同的操作權(quán)限。
? root擁有所有的操作權(quán)限,其他普通用戶只有定義的操作權(quán)限,這里的定義是通過一定的管理機(jī)制來進(jìn)行限定,如果普通用戶想執(zhí)行一些超越自身權(quán)限的命令式就必須以擁有該命令權(quán)限的用戶身份或者切換到擁有對應(yīng)權(quán)限的用戶當(dāng)中去執(zhí)行。
? 用戶身份切
-
su命令
通過su命令可以切換到其他用戶來進(jìn)行一些操作,但是前提是我們必須擁有所切換用戶的口令信息
-
sudo命令
假如我們想讓一個(gè)普通用戶擁有一些只有root可以執(zhí)行的命令,但又不能講root的密碼信息告訴別人,此時(shí)可以使用sudo命令
并非所有的用戶都能夠運(yùn)行sudo命令,這由sudo的配置文件/etc/sudoers來進(jìn)行定義
-
語法格式
sudo [-u USERNAME] COMMAND
通常是普通用戶以root身份來執(zhí)行命令,sudo不加-u參數(shù)默認(rèn)就是以root身份執(zhí)行COMMAND
因此,可以直接使用 sudo COMMAND
-
配置文件:/etc/sudoers
配置sudo必須通過編輯/etc/sudoers文件,而且只有root才可以修改它,還必須使用visudo命令編輯。之所以使用visudo有兩個(gè)原因,一是它能夠防止兩個(gè)用戶同時(shí)修改它;二是它也能進(jìn)行有限的語法檢查。
visudo
語法規(guī)則:
? 賬號 登陸者的來源主機(jī)名(可切換的身份) 可以通過sudo執(zhí)行的命令
例如:jacky ALL=(root) /usr/bin/passwd
這表示從任何主機(jī)訪問過來的本地用戶jacky允許切換到root用戶來執(zhí)行/usr/bin/passwd命令
exmaple2: jacky ALL=(root) ALL
表示允許任意主機(jī)的本地用戶jacky切換到root用戶執(zhí)行所有命令
-
ALL代表所有,必須大寫
-
如果后面是命令必須為絕對路徑,多個(gè)命令用逗號隔開
-
前面的使用者賬號可以是一個(gè)組,這樣表示:%GROUP_NAME,例如%dockeruser
- 如果在執(zhí)行sudo的時(shí)候不需要輸入密碼,則可以在命令前面這樣表示:
- 如果可以同時(shí)切換多個(gè)用戶如何表示:
- 其他管理選項(xiàng)
NOPASSWD: COMMAND
強(qiáng)制密碼驗(yàn)證則使用
PASSWD: COMMAND
example:
%wheel ALL=(ALL) NOPASSWD: ALL
表示wheel組內(nèi)的所有用戶可以通過任何主機(jī)切換到任何用戶,可以免密執(zhí)行任何命令
foobar linux=(jimmy,rene) /bin/kill
主機(jī)名為linux上的用戶 foobar可以切換到j(luò)immy,rene這兩個(gè)用戶下,允許執(zhí)行/bin/kill命令
切換的的時(shí)候需要使用-u選項(xiàng)
如果不想使用-u選項(xiàng),可以設(shè)置默認(rèn)切換用戶,如下
Defaults:foobar runas_default=jimmy
命令格式:sudo [options] COMMAND
?選項(xiàng):
-b:在后臺執(zhí)行指令; -h:顯示幫助; -H:將HOME環(huán)境變量設(shè)為新身份的HOME環(huán)境變量; -k:結(jié)束密碼的有效期限,也就是下次再執(zhí)行sudo時(shí)便需要輸入密碼;。 -l:列出目前用戶可執(zhí)行與無法執(zhí)行的指令; -p:改變詢問密碼的提示符號; -s<shell>:執(zhí)行指定的shell; -u<用戶>:以指定的用戶作為新的身份。若不加上此參數(shù),則預(yù)設(shè)以root作為新的身份; -v:延長密碼有效期限5分鐘; -V :顯示版本信息。日志與安全
sudo為安全考慮得很周到,不僅可以記錄日志,還能在有必要時(shí)向系統(tǒng)管理員報(bào)告。但是,sudo的日志功能不是自動(dòng)的,必須由管理員開啟。這樣來做:
touch /var/log/sudo vi /etc/syslog.conf在syslog.conf最后面加一行(必須用tab分割開)并保存:
local2.debug /var/log/sudo重啟日志守候進(jìn)程,
ps aux grep syslogd把得到的syslogd進(jìn)程的PID(輸出的第二列是PID)填入下面:
kill –HUP PID這樣,sudo就可以寫日志了:
[foobar@localhost ~]$ sudo ls /rootanaconda-ks.cfg Desktop install.log install.log.syslog $cat /var/log/sudoJul 28 22:52:54 localhost sudo: foobar : TTY=pts/1 ; pwd=/home/foobar ; USER=root ; command=/bin/ls /root不過,有一個(gè)小小的“缺陷”,sudo記錄日志并不是很忠實(shí):
[foobar@localhost ~]$ sudo cat /etc/shadow > /dev/null cat /var/log/sudo...Jul 28 23:10:24 localhost sudo: foobar : TTY=pts/1 ; PWD=/home/foobar ; USER=root ; COMMAND=/bin/cat /etc/shadow重定向沒有被記錄在案!為什么?因?yàn)樵诿钸\(yùn)行之前,shell把重定向的工作做完了,sudo根本就沒看到重定向。這也有個(gè)好處,下面的手段不會(huì)得逞:
[foobar@localhost ~]$ sudo ls /root > /etc/shadowbash: /etc/shadow: 權(quán)限不夠sudo 有自己的方式來保護(hù)安全。以root的身份執(zhí)行sudo-V,查看一下sudo的設(shè)置。因?yàn)榭紤]到安全問題,一部分環(huán)境變量并沒有傳遞給sudo后面的命令,或者被檢查后再傳遞的,比如:PATH,HOME,SHELL等。當(dāng)然,你也可以通過sudoers來配置這些環(huán)境變量。
?
轉(zhuǎn)載于:https://blog.51cto.com/5373107/2381080
總結(jié)
- 上一篇: 2018-2019 网络对抗技术 201
- 下一篇: antd递归渲染左侧菜单