使用sudo分配管理權限

2.使用sudo分配管理權限
問題
本案例要求利用sudo機制分配管理操作權限,主要完成以下任務:
1)爲sudo機制啓用日誌記錄,以便跟蹤sudo執行操作
2)允許網站運營專員tradm通過sudo方式控制httpd、mysqld服務的運行
3)允許用戶ugadm通過sudo方式添加/刪除/修改除root以外的用戶賬號
4)允許wheel組成員以特權執行/usr/bin/下的命令
步驟
實現此案例需要按照如下步驟進行。
步驟一:爲sudo機制啓用日誌記錄,以便跟蹤sudo執行操作
1)修改/etc/sudoers配置,添加日誌設置
[root@svr5 ~]# visudo
Defaults logfile="/var/log/sudo"
… …
2)以root(默認有所有權限)執行sudo操作
[root@svr5 ~]# sudo -l //查看授權的sudo操作
匹配此主機上 root 的默認條目:
logfile=/var/log/sudo, requiretty, !visiblepw, always_set_home, env_reset, env_keep=“COLORS
DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS”, env_keep+=“MAIL PS1 PS2 QTDIR USERNAME
LANG LC_ADDRESS LC_CTYPE”, env_keep+=“LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT
LC_MESSAGES”, env_keep+=“LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE”,
env_keep+=“LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY”,
secure_path=/sbin:/bin:/usr/sbin:/usr/bin

用戶 root 可以在該主機上運行以下命令:
(ALL) ALL
3)確認日誌記錄已生效
[root@svr5 ~]# tail /var/log/sudo
… …
May 16 22:14:49 : root : TTY=pts/1 ; PWD=/root ; USER=root ; COMMAND=list
步驟二:允許網站運營專員tradm通過sudo方式控制httpd、mysqld服務的運行
1)修改/etc/sudoers配置
爲tradm授予相關腳本的執行權限,允許通過servivce工具來管理httpd、mysqld服務,或者直接執行這兩個腳本。
[root@svr5 ~]# visudo
… …
Cmnd_Alias LAMP_CTRL=/sbin/service httpd *, /sbin/service mysqld, /etc/init.d/ht
tpd, /etc/init.d/mysqld
tradm localhost,svr5=LAMP_CTRL
2)切換爲tradm用戶,並驗證sudo執行權限
[root@svr5 ~]# su - tradm
[tradm@svr5 ~]$ sudo -l
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.

[sudo] password for tradm: //驗證用戶tradm的口令
… …
用戶 tradm 可以在該主機上運行以下命令:
(root) /sbin/service httpd *, /sbin/service mysqld *, /etc/init.d/httpd,
/etc/init.d/mysqld

[tradm@svr5 ~]$ service mysqld start //不用sudo時啓動服務失敗
touch: 無法創建"/var/log/mysqld.log": 權限不夠
chown: 正在更改"/var/log/mysqld.log" 的所有者: 不允許的操作
[失敗]
… …
[tradm@svr5 ~]$ sudo service mysqld start //通過sudo啓動服務成功
正在啓動 mysqld: [確定]
步驟三:允許用戶ugadm通過sudo方式添加/刪除/修改除root以外的用戶賬號
1)修改/etc/sudoers配置
爲ugadm授予用戶管理相關命令的執行權限,例外程序以!符號取反,放在後面。在執行相關程序時,可以利用通配符*。
[root@svr5 ~]# visudo
… …
Cmnd_Alias UADM_CTRL=/usr/bin/passwd,!/usr/bin/passwd root,/usr/sbin/user*,
!/usr/sbin/user* * root
ugadm localhost,svr5=UADM_CTRL
2)切換爲ugadm用戶,驗證sudo權限
可以通過sudo方式來添加/刪除/修改普通用戶:
[root@svr5 ~]# su – ugadm
[ugadm@svr5 ~]$ sudo -l
… …
用戶 ugadm 可以在該主機上運行以下命令:
(root) /usr/bin/passwd, !/usr/bin/passwd root, /usr/sbin/user*,
!/usr/sbin/user* * root
[ugadm@svr5 ~]$ sudo useradd newuser01 //可以添加用戶
[ugadm@svr5 ~]$ sudo passwd newuser01 //可以修改普通用戶的口令
更改用戶 newuser01 的密碼 。
新的 密碼:
重新輸入新的 密碼:
passwd: 所有的身份驗證令牌已經成功更新。
[ugadm@svr5 ~]$ sudo usermod -L newuser01 //可以修改用戶屬性
[ugadm@svr5 ~]$ sudo userdel -r newuser01 //可以刪除用戶賬號
但是不能修改root用戶的屬性:
[ugadm@svr5 ~]$ sudo usermod -L root
對不起,用戶 ugadm 無權以 root 的身份在 svr5.tarena.com
執行 /usr/sbin/usermod -L root。
[ugadm@svr5 ~]$ sudo passwd root
對不起,用戶 ugadm 無權以 root 的身份在 svr5.tarena.com
執行 /usr/bin/passwd root。
步驟四:允許wheel組成員以特權執行/bin/下的所有命令
此案例用來展示sudo的便利性及設置不當帶來的危險性,生產環境下慎用。
實現時參考下列操作:
[root@svr5 ~]# visudo
… …
%wheel localhost,svr5=/bin/*
[root@svr5 ~]# usermod -a -G wheel zengye
[zengye@svr5 ~]$ sudo -l
… …
用戶 zengye 可以在該主機上運行以下命令:
(root) /bin/*
[zengye@svr5 ~]$ sudo /bin/bash //與sudo –i 等效,表示初始化登錄
[root@svr5 zengye]# //直接成root了
注意:類Shell的程序不要允許用戶sudo執行,否則等同於開放所有root權限。
比方說,如果將/bin/bash複製爲/sbin/serv1ce(名稱可以有一定迷惑性),然後夾雜在其他正常命令裏一起授權給用戶tradm,則用戶tradm執行sudo serv1ce後就具有了root的身份。
[zengye@svr5 ~]$ sudo serv1ce //執行僞裝的Shell程序
[sudo] password for zengye: //驗證用戶口令
[root@svr5 zengye]# whoami //查看當前身份
root

發佈了225 篇原創文章 · 獲贊 196 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章