日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

sudo的用法

發(fā)布時(shí)間:2024/9/21 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sudo的用法 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

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í)候不需要輸入密碼,則可以在命令前面這樣表示:
  • NOPASSWD: COMMAND

    強(qiáng)制密碼驗(yàn)證則使用

    PASSWD: COMMAND

    example:

    %wheel ALL=(ALL) NOPASSWD: ALL

    表示wheel組內(nèi)的所有用戶可以通過任何主機(jī)切換到任何用戶,可以免密執(zhí)行任何命令

  • 如果可以同時(shí)切換多個(gè)用戶如何表示:
  • 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

  • 其他管理選項(xiàng)
  • 命令格式: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é)

以上是生活随笔為你收集整理的sudo的用法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。