visudo中的命令限制 - Linux

Table of Contents

鳥哥有提到
myuser1 ALL=(root) !/usr/bin/passwd, /usr/bin/passwd [A-Za-z]*,
!/usr/bin/passwd root
這樣可以避免
sudo passwd
sudo passwd root
這樣修改root的指令,可是我這樣修改,卻還是可以被執行 sudo passrd root

我的設定如下
sxxx ALL=(root) !/usr/bin/passwd, !/usr/bin/passwd root,
!/usr/bin/passwd Yuser1, /usr/bin/passwd [0-z]*

這樣
sudo passwd
確實無法執行,但是下面這個
sudo passwd root
sudo passwd Yuser1
卻可以,我搞不懂這個邏輯,看起來是後面允許的條件蓋掉前面的限制,
並不是按照寫的順序排優先權或是按照交集計算權限,那鳥哥是如何辦到的?

--
起初,他們追殺共產主義者,我沒有說話,因為我不是共產主義者;
接著,他們追殺猶太人,我沒有說話,因為我不是猶太人;
後來,他們追殺工會成員,我沒有說話,因為我不是工會成員;
此後,他們追殺天主教徒,我沒有說話,因為我是新教教徒;
最後,他們奔我而來,卻再也沒有人站起來為我說話了。
《First They Came(他們首次來時)》,Martin Niemoller牧師(1892-1984)

--

All Comments

Lauren avatarLauren2015-08-27
是後面的有優先權,所 sudo passwd root 在鳥哥的例子
Yuri avatarYuri2015-08-30
優先權在 !/usr/bin/passwd root 不被允,但你的變成
/usr/bin/passwd [0-z]* 被允了
Michael avatarMichael2015-08-31
當然,這種寫法 sudo passwd -e USER 之類就不被允
Iris avatarIris2015-09-03
我把/usr/bin/passwd [0-z]*移到最前面,結果passwd全部被禁
看來確實後面有修先權,但現在全禁我又搞不懂了。
Andrew avatarAndrew2015-09-06
因為你還有 !/usr/bin/passwd 禁掉了
Eartha avatarEartha2015-09-07
所以要!/usr/bin/passwd, /usr/bin/passwd [0-z]*, 其
他禁掉的
Puput avatarPuput2015-09-08
一般 sudo 設定比較 ok 作法是允許放前面,後面放排除的
Victoria avatarVictoria2015-09-12
允許變更任何帳號的密碼,但是不允許變更 root 與 abc
帳號密碼的話,可以這樣設定
Rosalind avatarRosalind2015-09-15
/usr/bin/passwd [a-zA-Z]*, !/usr/bin/passwd root,
!/usr/bin/passwd abc
Skylar DavisLinda avatarSkylar DavisLinda2015-09-17
帳號名稱可能會有數字,上面也許可以改[a-zA-Z0-9]*
Frederica avatarFrederica2015-09-18
要更嚴格一點再改成 [a-zA-Z][a-zA-Z0-9]*
Andy avatarAndy2015-09-20
不用吧?sudo好像只有glob pattern不是regexp
Carolina Franco avatarCarolina Franco2015-09-21
對喔,想得太嚴格了,整個混在一起 :))
Queena avatarQueena2015-09-25
感謝各位,終於搞定了。
Dinah avatarDinah2015-09-27
在visudo禁掉passwd後還可以sudo su, sudo bash再接pass
wd嗎?
Olga avatarOlga2015-09-28
也可以 sudo visudo 吧?
Mia avatarMia2015-09-30
是只有允許 passwd 命令使用,其他都禁止了