在Linux系統中, Sudo是最重要的指令之一,關系到整個系統的操作安全。
sudo指令是用來以其它的身份來執行指令,預設的身份是root。配置檔案是/etc/sudoers,權限為440,下面來了解下其基本設定:
[root@localhost sbin]# visudo
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
zwj ALL=(ALL) NOPASSWD:ALL,! /usr/sbin/reboot,! /usr/sbin/poweroff,! /usr/bin/passwd root,! /usr/sbin/shutdown,! /bin/rm,!/usr/bin/su,!/usr/sbin/visudo
reboot ALL=(ALL) PASSWD:/usr/sbin/reboot
其中,綠色背景是增加的設定,可以看到使用者zwj無法關機和重新開機,也無法修改root的密碼,NOPASSWD:表示無需輸入密碼即可執行。!:表示取反的意思,即不允許執行。另外增加了一個用于系統重新開機的使用者。
[zwj@localhost ~]$ sudo reboot
對不起,使用者 zwj 無權以 root 的身份在 localhost.localdomain 上執行 /sbin/reboot。
[zwj@localhost ~]$ sudo poweroff
對不起,使用者 zwj 無權以 root 的身份在 localhost.localdomain 上執行 /sbin/poweroff。
[zwj@localhost ~]$ sudo passwd zwj
對不起,使用者 zwj 無權以 root 的身份在 localhost.localdomain 上執行 /bin/passwd zwj。
可以檢視下使用者所具有的sudo權限,更多參數請檢視幫助sudo -h;
[zwj@localhost ~]$ sudo -l
比對此主機上 zwj 的預設條目:
!visiblepw, always_set_home, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE 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
使用者 zwj 可以在該主機上運作以下指令:
(ALL) NOPASSWD: ALL, (ALL) !/usr/sbin/reboot, (ALL) !/usr/sbin/poweroff, (ALL) !/usr/bin/passwd [A-Za-z]*
如果要為使用者設定具體的權限,可以這樣設定:
zwj ALL=(ALL) /sbin/useradd,/sbin/usermod
這樣一來,操作的風險大為降低,當然也可以通過使用者别名、指令别名來設定,較适合于權限劃分很精細的公司。
本文轉自 zengwj1949 51CTO部落格,原文連結:http://blog.51cto.com/zengwj1949/1942365