在Linux系統中應用su和sudo

2021-09-21 23:23:37 字數 4510 閱讀 3612

原文發表於《網路安全和資訊化》2023年第1期,現**到部落格。

linux

系統對使用者的許可權定義比較嚴格,

root

使用者在系統中具有至高無上的許可權,而普通使用者的許可權則受到嚴格限制。在實際使用中,管理員一般都是先以普通使用者的身份登入,然後當需要時再利用

su命令切換到

root

使用者身份。對於普通使用者,如果需要執行更高許可權的命令,則可以由管理員通過

sudo

命令對其授權。本文將介紹su和

sudo

命令在linux

運維工作中的一些常見用法。

預設情況下,任何使用者只要知道了

root

使用者的密碼,都可以執行

su命令切換到

root

使用者。但是我們可能並不希望所有使用者都能切換到

root

身份,而是只想指定某個使用者可以切換,比如只允許

zhangsan

使用者使用

su命令切換身份。

要限制使用

su命令的使用者,需要進行兩個方面的設定。

首先需要啟用

pam_wheel

認證模組,

[root@server ~]#vim /etc/pam.d/su//將檔案中下面一行前的#去掉

auth            required        pam_wheel.so use_uid

這樣凡是執行「

su – root

」命令的使用者都將受到限制,只有

wheel

組中的成員才有許可權執行該命令。

因而下面需要做的就是將

zhangsan

加入到wheel

組中。

[root@server ~]#gpasswd -a zhangsan wheel

[root@server ~]#id zhangsan

uid=501(zhangsan) gid=501(zhangsan) groups=501(zhangsan),10(wheel)

這樣當使用乙個不屬於

wheel

組成員的賬號切換到

root

時,系統便會拒絕。

例如,使用

lisi

切換到root

,即使輸入了正確的

root

使用者密碼,也會提示「密碼不正確」。

[lisi@localhost ~]$su - root

口令:su: 密碼不正確

利用su

命令切換到

root

身份,必須要知道

root

使用者的密碼。這對於管理員沒什麼問題,但如果將密碼透露給乙個普通使用者,則很明顯不利於系統安全管理,因而對於普通使用者更常使用的是

sudo

命令。

sudo

命令的作用主要在於能夠允許經過授權的個別普通使用者以

root

許可權執行一些授權使用的管理命令。

比如以普通使用者

zhangsan

的身份建立使用者,系統會提示沒有許可權:

[zhangsan@localhost ~]$useradd test

-bash: /usr/sbin/useradd: 許可權不夠

下面讓zhangsan

使用sudo

命令以root

許可權去執行命令。注意,普通使用者使用

sudo

執行命令時會要求提供自己的密碼進行驗證。

[zhangsan@localhost ~]$sudo useradd test

[sudo] password for zhangsan:

zhangsan is not in the sudoers file.    this incident will be reported.

zhangsan

使用sudo

命令仍然無法建立使用者,這是因為在

linux

中只有被授權的使用者才能執行

sudo

命令,而且使用

sudo

也只能執行那些被授權過的命令。

所以要使用

sudo

命令首先必須要經過管理員的授權設定,需要修改配置檔案「

/etc/sudoers

」,sudoers

檔案的基本配置格式如圖

1所示。

圖 1 sudoers檔案的配置格式

例如授權普通使用者

zhangsan

可以通過

sudo

方式執行所有的命令:

[root@localhost ~]#vim /etc/sudoers//在檔案末尾增加下列內容

zhangsan    all=all

授權普通使用者

lisi

可以執行

/sbin/

和/usr/sbin/

目錄中的所有命令:

lisi    all=/sbin/*,/usr/sbin/*

注意,「

/etc/sudoers

」是乙個唯讀檔案,修改完成儲存退出時要使用「

wq!」命令。

如果希望使用者只能執行部分命令,可以在「

/etc/sudoers

」中指定使用者所能執行的命令的檔案路徑,命令的檔案路徑可以通過

which

命令查詢。

例如:授權

zhangsan

只能執行

useradd

、userdel

和passwd

命令。

zhangsan    all=/usr/sbin/useradd,/usr/sbin/userdel,/usr/bin/passwd

使用者每次在執行

sudo

命令時都要輸入自己的密碼,為了省去普通使用者執行

sudo

命令時需要輸入密碼的麻煩,可以在「

/etc/sudoers

」進行如下設定:

zhangsan    all=nopasswd:/usr/sbin/useradd,/usr/sbin/userdel,/usr/bin/passwd

zhangsan

被授權執行

passwd

命令,為了防止

zhangsan

修改root

使用者的密碼,我們可以在

/etc/suoders

中加入「

! /usr/bin/passwd root」:

zhangsan    all=nopasswd:/usr/sbin/useradd,/usr/sbin/userdel,/usr/bin/passwd,! /usr/bin/passwd root

除了針對使用者授權之外,我們也可以對使用者組授權,這樣使用者組內的所有成員使用者就都具有了執行

sudo

命令的許可權。如果授權的物件是使用者組,需要在組名的前面加上「%」。

例如:授權

managers

組內的成員使用者可以新增、刪除使用者賬號。

%managers    all=nopasswd:/usr/sbin/useradd,/usr/sbin/userdel,/usr/bin/passwd,! /usr/bin/passwd root

最後我們以

zhangsan

的身份登入系統,執行「

sudo –l

」命令可以檢視當前使用者被授權執行的命令,如圖

2所示。

圖 2檢視使用者被授權執行的命令

進行命令測試,發現

zhangsan

可以更改普通使用者

lisi

的密碼,即使密碼不符合安全規則也同樣可以設定成功,這證明

zhangsan

是在以root

使用者的許可權執行

passwd

命令。而當

zhangsan

試圖更改

root

使用者的密碼時,系統則提示沒有許可權。測試結果如圖

3所示。

圖 3命令測試結果\

linux中su和sudo區別

su切換使用者,切換成root使用者,要輸入root使用者的密碼 su 使用者名稱 sudo 涉及到 etc sudoers檔案 內容如下 user privilege specification root all all all all members of the admin group may...

nmon在linux系統中的應用

1.首先應該獲取到nmon的安裝包,我們將其放在linux伺服器上。2.cd到該壓縮包所在的目錄下,執行tar zxvf nmon linux 14i.tar.gz來解壓縮。解壓成功會生成許多nmon檔案列表如下 3.這一步尤為關鍵 選擇與當前linux系統相對應的版本,拿ubntu來說,64位的需...

linux中su和sudo的區別

root使用者 su和sudo都用於執行具有root許可權的命令。root使用者基本上等同於windows上的管理員使用者 root使用者具有最大許可權,可以對系統執行任何操作。linux上的普通使用者以較低的許可權執行 例如,他們無法安裝軟體或寫入系統目錄。要執行需要這些許可權的操作,您必須使用s...