sudo的一个奇怪bug
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
大家好:
我最近移动系统,在做很多系统管理员的操作,因此我希望给当前用户赋予
一定的管理员权限,于是我写了一下sudoers来分配权限。具体文件如下:
Defaults env_reset
# Uncomment to allow members of group sudo to not need a password
# %sudo ALL=NOPASSWD: ALL
# Host alias specification
Host_Alias LAN = 168.192.0.0/255.255.0.0
# User alias specification
# Cmnd alias specification
Cmnd_Alias LOCALTOOLS = /usr/local/sbin/*
Cmnd_Alias HDDTEMP = /usr/sbin/hddtemp
Cmnd_Alias MOUNT = /bin/mount, /bin/umount, /usr/bin/ntfs-3g
# User privilege specification
shell ALL = NOPASSWD: LOCALTOOLS, LOCALTOOLB, HDDTEMP, MOUNT
Defaults:%staff !lecture
Defaults:%src !lecture
Defaults:%staff !authenticate
注意其中/usr/local/sbin/*一行,理论上说,经过如此权限分配后,我应
当可以执行/usr/local/sbin/brightness文件,但是:
shell@DebianM:~$ sudo /usr/local/sbin/brightness
Password or swipe finger:
Sorry, user shell is not allowed to execute
'/usr/local/sbin/brightness' as root on DebianM.
神奇的是,如果我将文件改名为/usr/local/sbin/c,就可以执行。或者如
果我将上面的权限分配改为/usr/local/sbin/b*,也可以执行(理所当然,这时
候其他非b开头的程序就无法执行了)。如果我将权限分配写成
/usr/local/sbin/*, /usr/local/sbin/b*,就可以完美解决我的问题。但是——
——这不符合预定的逻辑。
关于sudo的逻辑,我参考的是这里(http:
//www.leftworld.net/wenzhang/show/1543.html)。
根据上面的说法,*应当匹配任意一个字符系列,除了/。而刚刚上面的表
现,好像*无法匹配b开头的字符串。更奇怪的是,不经过任何修改,
/usr/local/sbin/battery_charge是可以执行的。
完全被搞迷糊了,盼复。
与其相濡以沫,不如相忘于江湖
Shell.E.Xu
2009年01月18日
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iEYEARECAAYFAkly+TwACgkQxx/N+qwtsRZcYQCgtzPkdZNhMC3hdARQTDCrSpMZ
14YAoKUJHAQOTrEnNz0tmeSjmGXDdkBG
=0hbn
-----END PGP SIGNATURE-----
Reply to: