监控用户

#!/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

猜你喜欢

转载自blog.csdn.net/ssiyla/article/details/81391139
今日推荐