天天看點

Sudo淺談

    在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

繼續閱讀