今天公司突然要把所有测试环境ROOT密码收回,只发放普通用户权限。因为测试环境要经常改时间来测试,Linux下普通用户无修改时间权限。原本我的思路是写一个脚本(自动sodu到ROOT用户执行修改时间在切换回普通用户)脚本如下:

#!/bin/bash

exp () {

expect -c "

spawn su - root -c \"$2\"

expect \": \"

send \"$1\r\"

expect eof

"

}

echo "时间格式:'2015-01-01 12:30:00'"
echo "可以使用shift+backspace删除错误输入。
"
read -p "请输入将要修改的时间
:" tmp_date
#if [ -n $tmp_date ] ;then
# echo "请输入时间
"
#fi
echo $tmp_date

export
if [ -n "$tmp_date" ] ;then
exp "111111" "date -s '$tmp_date'"
else
echo "请输入将要修改的时间。
"
exit 1
fi

今天上网无意当中看到原来还可以这么玩,不用写脚本什么的那么麻烦。
由root用户执行chmod 4755 /bin/date
 备注:也就是给date命令增加s权限位即设置setuid(4000),这样普通用户就可以执行date命令了,缺点也是很明显的,相当于去掉了date命令的root权限限制。