在Linux系統中應用su和sudo

原文發表於《網絡安全和信息化》2017年第1期,現轉發到博客。vim


Linux系統對用戶的權限定義比較嚴格,root用戶在系統中具備至高無上的權限,而普通用戶的權限則受到嚴格限制。在實際使用中,管理員通常都是先以普通用戶的身份登陸,而後當須要時再利用su命令切換到root用戶身份。對於普通用戶,若是須要執行更高權限的命令,則能夠由管理員經過sudo命令對其受權。本文將介紹susudo命令在Linux運維工做中的一些常見用法。安全

1.    限制可以使用su命令的用戶

 默認狀況下,任何用戶只要知道了root用戶的密碼,均可以執行su命令切換到root用戶。可是咱們可能並不但願全部用戶都能切換到root身份,而是隻想指定某個用戶能夠切換,好比只容許zhangsan用戶使用su命令切換身份。bash

要限制使用su命令的用戶,須要進行兩個方面的設置。網絡

首先須要啓用pam_wheel認證模塊,運維


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

auth            required        pam_wheel.so use_uid測試


這樣凡是執行「su – root」命令的用戶都將受到限制,只有wheel組中的成員纔有權限執行該命令。ui

於是下面須要作的就是將zhangsan加入到wheel組中。spa


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

[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: 密碼不正確


2.    利用sudo命令對普通用戶受權

利用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所示。

    wKioL1l9gViA7Xv6AAB9WjT6wIk374.jpg-wh_50

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只能執行useradduserdelpasswd命令。


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所示。

wKioL1l9gbKxRC1LAADPl0XuQts125.jpg-wh_50

2查看用戶被受權執行的命令

進行命令測試,發現zhangsan能夠更改普通用戶lisi的密碼,即便密碼不符合安全規則也一樣能夠設置成功,這證實zhangsan是在以root用戶的權限執行passwd命令。而當zhangsan試圖更改root用戶的密碼時,系統則提示沒有權限。測試結果如圖3所示。

wKiom1l9gc3B8rfZAABsTNQY1GI768.jpg-wh_50

3命令測試結果

相關文章
相關標籤/搜索