Bash 如何通过执行脚本将用户踢出我的机器?猛击

Bash 如何通过执行脚本将用户踢出我的机器?猛击,bash,profile,Bash,Profile,我希望能够将一些用户从我的机器中踢出,并阻止他们执行任何操作 为此,我考虑在/etc/profile.d/上编写一个脚本(kick out.sh),以便在有人连接到我的机器时自动执行它 你知道怎么做吗 注:我没有管理员权限 谢谢 bash的调试器-简单示例(不是防弹的-它是可中断的): 但是,在正常系统中,如果没有root(admin)权限,则无法执行此操作。已经完成: #/垃圾箱/垃圾箱 # #slay 2.0-终止属于指定用户的所有进程。 #最初由Chris Ausbrooks创作 #基于

我希望能够将一些用户从我的机器中踢出,并阻止他们执行任何操作

为此,我考虑在/etc/profile.d/上编写一个脚本(kick out.sh),以便在有人连接到我的机器时自动执行它

你知道怎么做吗

注:我没有管理员权限

谢谢


bash的调试器-简单示例(不是防弹的-它是可中断的):

但是,在正常系统中,如果没有root(admin)权限,则无法执行此操作。

已经完成:

#/垃圾箱/垃圾箱
#
#slay 2.0-终止属于指定用户的所有进程。
#最初由Chris Ausbrooks创作
#基于kall(一个来历不明的脚本)
#Pawel Wiecek为Debian大量重写
#修订历史:
#0.99首次尝试。
#1.0增加了对接头。
#1.1增加了惩罚。
#1.2增加了slayee通知。
#2.0完全重写
#2.1修复导致杀戮者被杀的“丑陋”错误。。。
#2.2、2.3特定于Debian的更新
#2.4更新命令行处理程序以避免用户名/信号名不匹配
#2.5特定于Debian的更新
#2.6正确自杀,修复误导性错误消息
#3.7设置路径,以防止来自外部的各种it问题
路径=/usr/sbin:/sbin:/usr/bin:/bin
导出路径
USER=`whoami`
信号='-KILL'
SLAYEE=''
ME=`basename$0`
酷class='0'
#此嵌套ifs仅为Debian软件包添加
如果[-f/etc/slay_模式]
然后
如果grep-q平均值/etc/slay_模式
然后
MODE='mean'
fi
如果grep-q nice/etc/slay_模式
然后
“很好”
fi
如果[-z$SLAY_BUTTHEAD]
然后
如果grep-q对接头/etc/slay_模式
然后
杀死你的头
fi
如果grep-q正常/etc/slay_模式
然后
杀掉你的头
fi
fi
其他的
MODE='mean'
如果[-z$SLAY_BUTTHEAD]
然后
杀掉你的头
fi
fi
#命令行处理。
而[$#-gt 0]
做
每箱1元
-*)
信号=$1
;;
*)
SLAYEE=“$SLAYEE$1”
以撒
转移
完成
如果[“$SIGNAL”!=“-clean”]
然后
SIGSHOW=“$SIGNAL”
其他的
SIGSHOW=“-TERM+-KILL”
fi
#帮助失败者。
如果[“$SLAYEE”=”-o“$SIGNAL”=“--help”]
然后
echo“用法:$ME[-signal]name[name…”
如果[“$SLAY_BUTTHEAD”=“on”]
然后
echo“就像,杀人之类的。”
回声“用干净的踢屁股,然后做真正的痛苦。”
其他的
echo“杀死属于任何给定名称的所有进程。”
echo“使用-clean作为信号名,首先使用术语kill,然后使用kill。”
fi
出口-1
fi
#滥用陷阱。
如果[“$USER”!=”$(echo“${SLAYEE}”| tr-d“”)”]
然后
如果[“$USER”!=“root”]
然后
如果[“$MODE”=“mean”]
然后
$0-杀死$USER
其他的
如果[“$SLAY_BUTTHEAD”=“on”]
然后
echo“${ME}:停下来。”
其他的
echo“${ME}:只有root可以这样做。”
fi
fi
出口2
fi
fi
#主体。
以$slayee表示的slayee
做
如果[“$slayee”=“$USER”]
然后
如果[“$SLAY_BUTTHEAD”=“on”]
然后
echo“${ME}:比维斯,别逼我打你。”
其他的
echo“${ME}:非法操作。”
fi
fi
COOL=“1”
如果[“$SLAY_BUTTHEAD”=“on”]
然后

没有管理员权限的cat不可能这样做。您必须以Notwant*身份登录才能正常工作是的。这正是问题所在。他希望在有人连接到机器时执行一个脚本-例如,当有人登录时-例如,当有人试图登录时,上述用户将注销Notwant[123]用户-通过/etc/profile。。。
case `whoami` in
    notwanted1|notwanted2|notwanted3) logout;;
esac
#!/bin/sh
#
# slay 2.0 - kill all processes belonging to the specified user(s).
# originally by Chris Ausbrooks <fish@bucket.ualr.edu> 
# based on kall (a script of unknown origin)
# Heavily rewritten by Pawel Wiecek <coven@debian.org> for Debian

# Revision history:
# 0.99  First attempt.
# 1.0   Added Butthead.
# 1.1   Added retribution.
# 1.2   Added slayee notification.
# 2.0   Completely rewritten
# 2.1   Fix an *ugly* bug that caused slayer to be slain...
# 2.2, 2.3  Debian specific updates
# 2.4   Updated command line handler to avois username/signal name mismatches
# 2.5   Debian specific updates
# 2.6   Properly slay oneself, fixed misleading error messages
# 3.7   Set PATH to prevent all sorts of problems with it coming from outside

PATH=/usr/sbin:/sbin:/usr/bin:/bin
export PATH

USER=`whoami`
SIGNAL='-KILL'
SLAYEE=''
ME=`basename $0`
COOL='0'

# this piece of nested ifs is added for Debian package only
if [ -f /etc/slay_mode ]
then
  if grep -q mean /etc/slay_mode
  then
    MODE='mean'
  fi
  if grep -q nice /etc/slay_mode
  then
    MODE='nice'
  fi
  if [ -z $SLAY_BUTTHEAD ]
  then
    if grep -q butthead /etc/slay_mode
    then
      SLAY_BUTTHEAD='on'
    fi
    if grep -q normal /etc/slay_mode
    then
      SLAY_BUTTHEAD='off'
    fi
  fi
else
  MODE='mean'
  if [ -z $SLAY_BUTTHEAD ]
  then
    SLAY_BUTTHEAD='off'
  fi
fi

# Command line handling.
while [ $# -gt 0 ]
do
 case $1 in
  -*)
   SIGNAL=$1
   ;;
  *)
   SLAYEE="$SLAYEE $1"
 esac
 shift
done

if [ "$SIGNAL" != "-clean" ]
then
  SIGSHOW="$SIGNAL"
else
  SIGSHOW="-TERM + -KILL"
fi

# Help for losers.
if [ "$SLAYEE" = "" -o "$SIGNAL" = "--help" ]
then
  echo "usage: $ME [-signal] name [name...]"
  if [ "$SLAY_BUTTHEAD" = "on" ]
  then
    echo "       Like, kills people and stuff."
    echo "       With -clean kicks ass forst and then does real pain."
  else
    echo "       Kills all processes belonging to any of the given names."
    echo "       Use -clean as a signal name to kill with TERM first and then with KILL."
  fi
  exit -1 
fi

# Misuse trap.
if [ "$USER" != "$(echo "${SLAYEE}" | tr -d ' ')" ]
then
  if [ "$USER" != "root" ]
  then
    if [ "$MODE" = "mean" ]
    then
      $0 -KILL $USER
    else
      if [ "$SLAY_BUTTHEAD" = "on" ]
      then
        echo "${ME}: Cut it out."
      else
        echo "${ME}: Only root gets to do that."
      fi
    fi
    exit 2
  fi
fi

# Main body.
for slayee in $SLAYEE
do
  if [ "$slayee" = "$USER" ]
  then
    if [ "$SLAY_BUTTHEAD" = "on" ]
    then
      echo "${ME}: Beavis, don't make me have to smack you."
    else
      echo "${ME}: Illegal operation."
    fi
  fi
  COOL="1"
  if [ "$SLAY_BUTTHEAD" = "on" ]
  then
    cat <<-_THEEND_ | write $slayee
    ${ME}: ${SIGSHOW} is kicking ${slayee}'s butt!



    I'm kicking your butt.


    _THEEND_
  else
    cat <<-_THEEND_ | write $slayee
    ${ME}: Sending ${SIGSHOW} signal to ${slayee}'s process(es)..."


    Your current session has been terminated.


    _THEEND_
  fi
  if [ "$SIGNAL" = "-clean" ]
  then
    su -m $slayee -c "kill -TERM -1"
    sleep 10
    su -m $slayee -c "kill -KILL -1"
  else
    if [ "$USER" != "root" ]
    then
      kill $SIGNAL -1
    fi
    su -m $slayee -c "kill $SIGNAL -1"
  fi
done 2>/dev/null

# Error message.
if [ $COOL = "0" ]
then
  if [ "$SLAY_BUTTHEAD" = "on" ]
  then
    echo "${ME}: How old are you, Beavis?"
  else
    echo "${ME}: Nothing done."
  fi
  exit 1
fi

# Non-error message.
if [ $COOL = "1" ]
then
  if [ "$SLAY_BUTTHEAD" = "on" ]
  then
    echo "${ME}: Whoa, I have the power supreme."
  else
    echo "${ME}: Done."
  fi
  exit 0
fi