linux sudo用法

啥是sudo

?一種約束用戶執行系統管理命令方面的安全機制,允許指定的用戶以root身份執行指定的命令而不需要提供root密碼。用過Ubuntu(Debian系)的小伙伴很有發言權。

當用戶要執行比如systemctl stop httpd時,如果該用戶不被允許使用systemctl stop命令,則命令無法運行,從而實現只允許指定用戶(信任的小伙伴)才可運行相關系統、服務管理方面的命令;如果用戶被允許使用該命令,sudo機制也會提醒用戶輸入其賬號密碼,從而存在一個緩沖的時間,可以讓命令執行者腦袋清醒一下,確認無誤后敲下回車。

Sudo應該是Switch User Do的簡寫(尚未考證),簡單粗暴的翻譯就是“切換用戶干”,當指定sudo systemctl stop httpd命令時,事實上是以root用戶的身份運行的。下面以Redha系CentOS7.6來介紹一下sudo的使用,通過visudo直接回車可看到:

命令別名部分

圖中可以看出默認有8個命令別名,每一個別名分別對應一些命令,比如PROCESS,是nice、kill、killall三個命令的別名。之所以要有別名,是因為將命令分門別類后便于后面的引用。

主要配置的部分

看懂語法,基本就可以搞定了。每個框框中注釋部分說的很清楚。比如“%wheel?? ALL=(LL) NOPASSWD:ALL”表示wheel這個群組中的用戶可以在任何主機上執行任何命令且不需要輸入密碼。


試驗

用戶名:ds?

群組:?? testgroup

要求:只允許testgroup群組用戶執行跟networking相關的命令

步驟:

1、 [endif]命令行中輸入visudo回車—編輯/etc/sudoers文件

添加群組、用戶

2、 [endif]去掉“Cmnd_Alias NETWORKING…“一行的的注釋

啟用命令別名

3、 加入下面一行

不知道怎么命名圖片

4、 測試

可以看到ds用戶執行ping是可以的,但是執行kill命令就不行了,即使使用sudo嘗試使用root身份執行也不行:

不知道怎么命名圖片

通過/var/log/secure日志文件可以看的更詳細:

不知道怎么命名圖片

常用實例講解

1 .oracle用戶可以在任何地點以任何的身份執行所有命令,等同于root。

oracle ALL=(ALL) ALL


2. oracle2用戶可以在任何地點以root的身份執行命令useradd(無需密碼)和usermod(需要密碼).

這樣oracle2就可以免密碼useradd,有密碼(密碼為oracle2的自身密碼)使用userdel。

oracle2 ALL=(root) NOPASSWD:/usr/sbin/useradd, PASSWD:/usr/sbin/userdel

使用方式如下

[oracle2@centos74 ~]$ useradd test001 # 直接使用命令是不可以的。

-bash: /usr/sbin/useradd: Permission denied

[oracle2@centos74 ~]$ sudo useradd test001? ? ? ? ? ? ? ? ? ? ? ? ? # 必須加sudo

[oracle2@centos74 ~]$ id test001? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? # 查看添加的用戶信息

uid=1031(test001) gid=1032(test001) groups=1032(test001)


3. oracle3用戶只能在192.168.1.120主機遠程登錄并以root身份執行ifconfig eth0命令。

Cmnd_Alias NETCMND = /sbin/ifconfig eth0

oracle3 192.168.1.120 = (root) NOPASSWD:NETCMND


4. oracle4用戶可以執行/usr/sbin下的所有命令除了/usr/sbin/userdel

oracle4 ALL=(ALL) /usr/sbin/,!/usr/sbin/userdel


5. oracle5用戶可以cat?/var/log/secure*的文件

oracle5 ALL=(ALL) /bin/cat /var/log/secure*,!/bin/cat /var/log/secure* *

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容