Linux中sudo命令詳解

什么是sudo?

在Linux中,經(jīng)常會(huì)看到一些帶sudo的命令,有好事者就要問了,sudo是什么,有什么用?

sudo是Linux下常用的允許普通用戶使用超級(jí)用戶權(quán)限的工具,允許系統(tǒng)管理員讓普通用戶執(zhí)行一些或者全部的root命令,這種感覺就像是你的老師授給你當(dāng)了小組長(zhǎng)一樣。這樣以來,就不僅減少了root用戶的登陸次數(shù)和管理時(shí)間,也提高了系統(tǒng)安全性。

?

配置文件

sudo的配置文件是sudoers文件,它允許系統(tǒng)管理員集中的管理用戶的使用權(quán)限和使用的主機(jī)。它所存放的位置默認(rèn)是在/etc/sudoers,sudo提供了一個(gè)編輯該文件的命令:visudo來對(duì)該文件進(jìn)行修改,visudo使用vi打開/etc/sudoers文件,但是在保存退出時(shí),visudo會(huì)檢查內(nèi)部語法,避免用戶輸入錯(cuò)誤信息,操作和vim是一樣的

[root@Jobs /]# visudo 
...
     91 ## Allow root to run any commands anywhere
     92 root    ALL=(ALL)       ALL
     93 
     94 ## Allows members of the 'sys' group to run networking, software,
     95 ## service management apps and more.
     96 # %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS
     97 
     98 ## Allows people in group wheel to run all commands
     99 %wheel  ALL=(ALL)       ALL
    100 
    101 ## Same thing without a password
    102 # %wheel        ALL=(ALL)       NOPASSWD: ALL
...
"/etc/sudoers.tmp" 112L, 3938C

通過visudo打開配置文件之后,會(huì)發(fā)現(xiàn)里面都是一些對(duì)配置文件的描述注釋,一直往下翻,看到第92行左右,會(huì)看到有一個(gè)范例root ALL=(ALL) ALL,從左往右依次解釋一下
root:表示用戶名
ALL:表示允許登陸的主機(jī),大部分情況下為ALL
(ALL):表示以誰的身份去執(zhí)行,如果在()內(nèi)寫ALL,表示root身份
ALL:表示當(dāng)前用戶可執(zhí)行的命令,多個(gè)命令可以用“,”分割
理所當(dāng)然的, 如果在第92行的root ALL=(ALL) ALL下加一行,test1 ALL=(ALL) ALL,則表示“test1”用戶在所有主機(jī)上可以“root”的身份執(zhí)行所有命令,千萬不要這么做,非常危險(xiǎn)!千萬不要這么做,非常危險(xiǎn)!千萬不要這么做,非常危險(xiǎn)!(重要的事情說三遍)
?
關(guān)于如何以正確姿勢(shì)來修改sudoers配置文件,下面會(huì)用示例的方式給大家展示

舉個(gè)栗子

[test1@Jobs root]$ ls /root/
ls: cannot open directory /root/: Permission denied
//“test1”沒有權(quán)限所有無法訪問“root”家目錄
[test1@Jobs root]$ sudo ls /root
//如果直接用`sudo`命令則需要讓“root”用戶輸入密碼,如果每次都要輸入,太煩了,而且也不安全
PassWord:

[root@Jobs ~]#visudo

···
     92 root    ALL=(ALL)       ALL
     93 test1   ALL=(ALL)       /bin/ls 
    //在92行下面加一行,協(xié)商所需要執(zhí)行的命令路徑,命令路徑可用“which”命令來查看
···

[test1@Jobs root]$ sudo ls /root

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.
//會(huì)有一些提示,大概意思能力越大,責(zé)任越大

[sudo] password for test1: 
//此時(shí)提示輸入“test1”用戶的密碼
bbr.sh  bbr.sh.1  install_bbr.log  shadowsocks.log  shadowsocks.sh  test  ystemctl status firewalld


#常見配置文件寫法
[root@Jobs ~]#visudo

···
     92 root    ALL=(ALL)       ALL
     93 test1   ALL=(ALL) ALL #“test1”用戶在所有主機(jī)上可以“root”的身份執(zhí)行所有命令
     94 %test1  ALL=(ALL) ALL #“test1”組內(nèi)用戶在所有主機(jī)上可以“root”的身份執(zhí)行所有命令
     95 test1   ALL=(root) /bin,!/bin/who #“test1”用戶在所有主機(jī)上可以“root”的身份執(zhí)行/bin下的所有命令除了who命令
     96 %test1  ALL=(ALL) NOPASSWD: ALL #“test1”組內(nèi)用戶在所有主機(jī)上可以“root”的身份執(zhí)行所有命令不用密碼
···

別名

sudoers有個(gè)騷操作,支持別名的定義

User_Alias Host_Alias Runas_Alias Cmnd_Alias
用戶名 主機(jī)名 用戶名 命令路徑
組名(%) IP 地址 組名(%) 目錄
其他User_Alias 網(wǎng)絡(luò)地址 其他Runas_Alias 其他Cmnd_Alias

示例:

User_Alias son = son1,son2,%test1                #定義個(gè)別名叫“son”,里面有用戶“son1”“son2”“test1用戶組”
Cmnd_Alias ml = /bin                             #定義命令路徑別叫“ml”
son ALL=(ALL) ml                                 #以別名形式寫配置文件

依次類推,對(duì)User_Alias、Host_AliasRunas_Alias、Cmnd_Alias均可進(jìn)行別名定義,別名定義能很好的增加工作效率

寫在最后

??如果還需要查詢更多的sudo命令的用法,請(qǐng)到《Linux命令手冊(cè)》,這應(yīng)該是我第三次安利這個(gè)網(wǎng)站了,是不是要考慮贊助點(diǎn)哈~

?


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Ubuntu的發(fā)音 Ubuntu,源于非洲祖魯人和科薩人的語言,發(fā)作 oo-boon-too 的音。了解發(fā)音是有意...
    螢火蟲de夢(mèng)閱讀 100,616評(píng)論 9 468
  • linux資料總章2.1 1.0寫的不好抱歉 但是2.0已經(jīng)改了很多 但是錯(cuò)誤還是無法避免 以后資料會(huì)慢慢更新 大...
    數(shù)據(jù)革命閱讀 13,209評(píng)論 2 33
  • sudo高級(jí)配置 從編寫 sudo 配置文件/etc/sudoers開始; sudo的配置文件是/etc/sudo...
    很少更新了閱讀 2,787評(píng)論 0 0
  • 一、前言 對(duì)于Linux管理者來說,“帳號(hào)管理”是再也普通不過的一個(gè)環(huán)節(jié)了,但每次都要去查一大本的手冊(cè)實(shí)在是很浪費(fèi)...
    四月不見閱讀 1,201評(píng)論 0 2
  • 先來看下配置文件里都代表什么含義: ## Sudoers allows particular users to r...
    nooops閱讀 2,717評(píng)論 0 1

友情鏈接更多精彩內(nèi)容