国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Linux > 正文

Linux sudo命令用法詳解:系統(tǒng)權(quán)限管理

2024-08-27 23:56:51
字體:
供稿:網(wǎng)友
我們知道,使用 su 命令可以讓普通用戶切換到 root 身份去執(zhí)行某些特權(quán)命令,但存在一些問題,比如說:
  • 僅僅為了一個特權(quán)操作就直接賦予普通用戶控制系統(tǒng)的完整權(quán)限;
  • 當(dāng)多人使用同一臺主機時,如果大家都要使用 su 命令切換到 root 身份,那勢必就需要 root 的密碼,這就導(dǎo)致很多人都知道 root 的密碼;

考慮到使用 su 命令可能對系統(tǒng)安裝造成的隱患,最常見的解決方法是使用 sudo 命令,此命令也可以讓你切換至其他用戶的身份去執(zhí)行命令。

相對于使用 su 命令還需要新切換用戶的密碼,sudo 命令的運行只需要知道自己的密碼即可,甚至于,我們可以通過手動修改 sudo 的配置文件,使其無需任何密碼即可運行。

sudo 命令默認(rèn)只有 root 用戶可以運行,該命令的基本格式為:

[root@localhost ~]# sudo [-b] [-u 新使用者賬號] 要執(zhí)行的命令

常用的選項與參數(shù):
  • -b  :將后續(xù)的命令放到背景中讓系統(tǒng)自行運行,不對當(dāng)前的 shell 環(huán)境產(chǎn)生影響。
  • -u  :后面可以接欲切換的用戶名,若無此項則代表切換身份為 root 。
  • -l:此選項的用法為 sudo -l,用于顯示當(dāng)前用戶可以用 sudo 執(zhí)行那些命令。

【例 1】

[root@localhost ~]#  grep sshd /etc/passwd
sshd:x:74:74:privilege-separated SSH:/var/empty/sshd:/sbin.nologin
[root@localhost ~]#  sudo -u sshd touch /tmp/mysshd
[root@localhost ~]#  ll /tmp/mysshd
-rw-r--r-- 1 sshd sshd 0 Feb 28 17:42 /tmp/mysshd

本例中,無法使用 su - sshd 的方式成功切換到 sshd 賬戶中,因為此用戶的默認(rèn) Shell 是 /sbin/nologin。這時就顯現(xiàn)出 sudo 的優(yōu)勢,我們可以使用 sudo 以 sshd 的身份在 /tmp 目錄下創(chuàng)建 mysshd 文件,可以看到,新創(chuàng)建的 mysshd 文件的所有者確實是 sshd。

【例 2】

[root@localhost ~]#  sudo -u vbird1 sh -c "mkdir ~vbird1/www; cd ~vbird1/www; /
>  echo 'This is index.html file' > index.html"
[root@localhost ~]#  ll -a ~vbird1/www
drwxr-xr-x 2 vbird1 vbird1 4096 Feb 28 17:51 .
drwx------ 5 vbird1 vbird1 4096 Feb 28 17:51 ..
-rw-r--r-- 1 vbird1 vbird1   24 Feb 28 17:51 index.html

這個例子中,使用 sudo 命令切換至 vbird1 身份,并運行 sh -c 的方式來運行一連串的命令。

前面說過,默認(rèn)情況下 sudo 命令,只有 root 身份可以使用,那么,如何讓普通用戶也能使用它呢?

解決這個問題之前,先給大家分析一下 sudo 命令的執(zhí)行過程。sudo命令的運行,需經(jīng)歷如下幾步:
  • 當(dāng)用戶運行 sudo 命令時,系統(tǒng)會先通過 /etc/sudoers 文件,驗證該用戶是否有運行 sudo 的權(quán)限;
  • 確定用戶具有使用 sudo 命令的權(quán)限后,還要讓用戶輸入自己的密碼進(jìn)行確認(rèn)。出于對系統(tǒng)安全性的考慮,如果用戶在默認(rèn)時間內(nèi)(默認(rèn)是 5 分鐘)不使用 sudo 命令,此后使用時需要再次輸入密碼;
  • 密碼輸入成功后,才會執(zhí)行 sudo 命令后接的命令。

顯然,能否使用 sudo 命令,取決于對 /etc/sudoers 文件的配置(默認(rèn)情況下,此文件中只配置有 root 用戶)。所以接下來,我們學(xué)習(xí)對 /etc/sudoers 文件進(jìn)行合理的修改。

sudo命令的配置文件/etc/sudoers

修改 /etc/sudoers,不建議直接使用 vim,而是使用 visudo。因為修改 /etc/sudoers 文件需遵循一定的語法規(guī)則,使用 visudo 的好處就在于,當(dāng)修改完畢 /etc/sudoers 文件,離開修改頁面時,系統(tǒng)會自行檢驗 /etc/sudoers 文件的語法。

因此,修改 /etc/sudoers 文件的命令如下:

[root@localhost ~]# visudo
…省略部分輸出…
root ALL=(ALL) ALL  <--大約 76 行的位置
# %wheel ALL=(ALL) ALL   <--大約84行的位置
#這兩行是系統(tǒng)為我們提供的模板,我們參照它寫自己的就可以了
…省略部分輸出…

通過 visudo 命令,我們就打開了 /etc/sudoers 文件,可以看到如上顯示的 2 行信息,這是系統(tǒng)給我們提供的 2 個模板,分別用于添加用戶和群組,使其能夠使用 sudo 命令。

這兩行模板的含義分為是:

root ALL=(ALL) ALL
#用戶名 被管理主機的地址=(可使用的身份) 授權(quán)命令(絕對路徑)
#%wheel ALL=(ALL) ALL
#%組名 被管理主機的地址=(可使用的身份) 授權(quán)命令(絕對路徑)

表 1 對以上 2 個模板的各部分進(jìn)行詳細(xì)的說明。
表 1 /etc/sudoers 用戶和群組模板的含義
模塊含義
用戶名或群組名表示系統(tǒng)中的那個用戶或群組,可以使用 sudo 這個命令。
被管理主機的地址用戶可以管理指定 IP 地址的服務(wù)器。這里如果寫 ALL,則代表用戶可以管理任何主機;如果寫固定 IP,則代表用戶可以管理指定的服務(wù)器。如果我們在這里寫本機的 IP 地址,不代表只允許本機的用戶使用指定命令,而是代表指定的用戶可以從任何 IP 地址來管理當(dāng)前服務(wù)器。
可使用的身份就是把來源用戶切換成什么身份使用,(ALL)代表可以切換成任意身份。這個字段可以省略。
授權(quán)命令表示 root 把什么命令命令授權(quán)給用戶,換句話說,可以用切換的身份執(zhí)行什么命令。需要注意的是,此命令必須使用絕對路徑寫。默認(rèn)值是 ALL,表示可以執(zhí)行任何命令。

【例 3】
授權(quán)用戶 lamp 可以重啟服務(wù)器,由 root 用戶添加,可以在 /etc/sudoers 模板下添加如下語句:

[root@localhost ~]# visudo
lamp ALL=/sbin/shutdown -r now

注意,這里也可以寫多個授權(quán)命令,之間用逗號分隔。用戶 lamp 可以使用 sudo -l 查看授權(quán)的命令列表:

[root@localhost ~]# su - lamp
#切換成lamp用戶
[lamp@localhost ~]$ sudo -l
[sudo] password for lamp:
#需要輸入lamp用戶的密碼
User lamp may run the following commands on this host:
(root) /sbin/shutdown -r now

可以看到,lamp 用戶擁有了 shutdown -r now 的權(quán)限。這時,lamp 用戶就可以使用 sudo 執(zhí)行如下命令重啟服務(wù)器:

[lamp@localhost ~]$ sudo /sbin/shutdown -r now

再次強調(diào),授權(quán)命令要使用絕對路徑(或者把 /sbin 路徑導(dǎo)入普通用戶 PATH 路徑中,不推薦使用此方式),否則無法執(zhí)行。

【例 4】
假設(shè)現(xiàn)在有 pro1,pro2,pro3 這 3 個用戶,還有一個 group 群組,我們可以通過在 /etc/sudoers 文件配置 wheel 群組信息,令這 3 個用戶同時擁有管理系統(tǒng)的權(quán)限。

首先,向 /etc/sudoers 文件中添加群組配置信息:

[root@localhost ~]# visudo
....(前面省略)....
%group     ALL=(ALL)    ALL
#在 84 行#wheel這一行后面寫入

此配置信息表示,group 這個群組中的所有用戶都能夠使用 sudo 切換任何身份,執(zhí)行任何命令。接下來,我們使用 usermod 命令將 pro1 加入 group 群組,看看有什么效果:

[root@localhost ~]# usermod -a -G group pro1
[pro1@localhost ~]# sudo tail -n 1 /etc/shadow <==注意身份是 pro1
....(前面省略)....
Password:  <==輸入 pro1 的口令喔!
pro3:$1$GfinyJgZ$9J8IdrBXXMwZIauANg7tW0:14302:0:99999:7:::
[pro2@localhost ~]# sudo tail -n 1 /etc/shadow <==注意身份是 pro2
Password:
pro2 is not in the sudoers file.  This incident will be reported.
#此錯誤信息表示 pro2 不在 /etc/sudoers 的配置中。

可以看到,由于 pro1 加入到了 group 群組,因此 pro1 就可以使用 sudo 命令,而 pro2 不行。同樣的道理,如果我們想讓 pro3 也可以使用 sudo 命令,不用再修改 /etc/sudoers 文件,只需要將 pro3 加入 group 群組即可。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 罗田县| 潮安县| 明溪县| 江阴市| 广安市| 汕尾市| 集贤县| 广灵县| 宁陕县| 通化县| 原阳县| 岗巴县| 中阳县| 漠河县| 庆城县| 吉木乃县| 绍兴市| 郎溪县| 盐边县| 莱阳市| 钟祥市| 磐安县| 察雅县| 沁阳市| 石门县| 广德县| 濉溪县| 平泉县| 东兰县| 苏尼特左旗| 华容县| 儋州市| 治县。| 乡城县| 大关县| 汨罗市| 宾川县| 任丘市| 筠连县| 宜君县| 陇西县|