#!/bin/bash
#输入用户名后,对用户实施监控,监控用户使用过的命令(/home/uname/.bash_history),利用a让用户不能对文件进行修改
read -p "请输入用户名:" uname
id $uname 1>/dev/null 2>&1
while [ 1 -ne 2 ]
do
if [ $? -ne 0 ]
then
echo "您输入的用户不存在,请重新输入!"
else
break
fi
done
read -p "输入你的选择,开始监控【y】或者取消监控【n】:" ans
if [ "$ans" = "y" ]
then
echo "开始监控...."
touch /home/$uname/.bash_history
chown $uname /home/$uname/.bash_history
chmod 600 /home/$uname/.bash_history
chattr +a /home/$uname/.bash_history
echo 'PROMPT_COMMAND="history -a ; readonly PROMPT_COMMAND"' >> /home/$uname/.bash_profile
echo ' export PROMPT_COMMAND ' >> /home/$uname/.bash_profile
chattr +a /home/$uname/.bash_profile
echo "监控实施完毕!"
else if [ "$ans" = "n" ]
then
echo "开始取消监控"
chattr -a /home/$uname/.bash_history
chattr -a /home/$uname/.bash_profile
rm -rf /home/$uname/.bash_profile
cp /etc/skel/.bash_profile /home/$uname/.bash_profile
chown $uname /home/$uname/.bash_profile
chmod 600 /home/$uname/.bash_profile
echo "取消监控成功!"
else
echo "请输入y/n,不对用户执行任何操作!"
exit 1
fi
fi
改良以后的版本
#!/bin/bash
while [ 1 -ne 2 ]
do
read -p "请输入一个用户:" uname
id $uname 1>/dev/null 2>&1
if [ $? -ne 0 ]
then
echo "该用户不存在,请重新输入!!!"
else
break
fi
done
path1="/home/$uname/.bash_history"
path2="/home/$uname/.bash_profile"
while [ 1 -ne 2 ]
do
read -p "请输入你的选择:1、监控[y] 2、取消监控[n]" answer
if [ "$answer" = "y" ]
then #假如./bash_history不存在,创建,如果存在, #创建也不会对他有影响,然后是确保他的组的权限,
#最后让他只能追加数据,不允许其他人改动文件
echo "开始监控用户$uname"
touch $path1
chown $uname $path1
chmod 600 $path1
chattr +a $path1
echo "PROMPT_COMMAND='history -a' ; readonly PROMPT_COMMAND" >> $path2
echo "export PROMPT_COMMAND" >> $path2
chattr +a $path2
echo "用户$uname监控完毕!!"
break
else
if [ $answer = "n" ]
then
echo "开始取消监控!!"
chattr -a $path1
chattr -a $path2
rm -rf $path2
cp /etc/skel/.bash_profile $path2
chown $uname $path2
chmod 600 $path2
echo "取消监控成功!!"
break
else
echo "输入不正确,请输入y/n!!"
fi
fi