sudo命令可以用來以另乙個使用者身份執行那個使用者才能執行的命令,有時因為安全考慮,不得不對某些命令的執行範圍進行強制限制。為了限制某個執行sudo命令的使用者以其他使用者的身份執行更多命令,我們可以通過直接編輯 /etc/sudoers 檔案(或使用visudo命令間接編輯)來對命令的執行者進行約束。下面示例闡述了該過程(為了美觀就把它假想成bash**了):
# define aliases for machines in cs & physics departments.
host_alias cs = tigger, anchor, piper, moer, sigi
host_alias physics = eprince, pprince, icarus
# define collections of commands.
cmnd_alias dump = /sbin/dump, /sbin/restore
cmnd_alias printing = /usr/sbin/lpc, /usr/bin/lprm
cmnd_alias shells = /bin/sh, /bin/tcsh, /bin/bash, /bin/ash, /bin/bsh
# permissions.
mark,ed physics = all
herb cs = /usr/sbin/tcpdump: physics = (operator)dump
lynda all = (all)all, !shells
%wheel all, !physics = nopasswd: printing
前5個非注釋行定義了主機組和命令組的別名,以方便後面定義許可權(permissions部分)時使用。每一行許可權說明包括的資訊如下(sudo內建的命令 all 表示允許所有):
* 該行所適用的使用者。
* 該行所適用的主機。
* 可以以其身份執行命令的使用者(置於小括號中,預設時就表示 root)。
* 指定使用者可以執行的命令(最好寫成絕對路徑)。
第一行許可權說明適用於 physics 組機器上的使用者 mark 和 ed ,並且可以執行所有命令,不過只能以 root 身份執行。
第二行許可權說明允許使用者 herb 在 cs 組機器上以 root 身份執行 tcpdump 命令,還能在 physics 組機器上執行 dump 組命令,但是只能以 operator 使用者的身份執行,此時使用者 herb 輸入的實際命令類似於下面:
$ sudo -u operator /sbin/dump 0u /dev/hda2
第三行說明使用者 lynda 能以任意使用者身份在任意機器上執行所有除 shell 組的命令,不過要注意的是,雖然不能直接執行 shell 組的命令,但是可以通過其他方式來間接執行,比如採用下面這種方式:
$ cp -p /bin/bash /tmp/bash
$ sudo /tmp/bash
一般來說,任何設定「除……以外的命令」的做法都注定要失敗,這樣寫的目的只是為了避免使用者不經意的使用。
最後一行說明 wheel 組的使用者能在除 physics 組的機器上執行 printing 組命令,並且這些執行命令不需要任何口令(nopasswd)。
drbd配置檔案 drbd配置檔案
drbd配置檔案 vim usr local drbd etc drbd.d global common.conf global usage count yes 是否參加drbd使用者統計 common protocol c 使用drbd的第三種同步協議 disk 使用dpod功能保證在數 on i...
Spring配置檔案載入外部配置檔案
有時,應用程式可能需要從不同的位置 例如 檔案系統 classpath或者url 讀取外部資源 例如 文字檔案 xml檔案 屬性檔案或或者影象檔案 通常,為了從不同位置載入資源,需要和不同的api打交道。spring的資源載入器提供了乙個統一的getresource 方法,使用這個方法可以通過資源路...
mysql簡單配置檔案 MySQL配置檔案
mysql配置檔案 在windows下是my.ini,而在linux下是my.cnf。基本引數 port 3306 埠號 server id 1 basedir c program files mysql mysql server 5.5 基準路徑,其他路徑都相對於這個路徑 datadir c pr...