linux – 管理每用户rc.d init脚本

前端之家收集整理的这篇文章主要介绍了linux – 管理每用户rc.d init脚本前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想将SysV init脚本委派给每个用户.

与SysV init一样,以S开头的${HOME} /rc.d中的每个项目都将在服务器启动时使用start参数启动.对于服务器关闭,使用以K开头并使用stop参数的服务器关闭相同.

我想过自己编写脚本,但也许已经有了某种实现方式1.总之,它将是/etc/init.d/中的一个脚本,它遍历所有用户并以相关脚本上的用户身份启动runpart.

这里的平台是一个Linux(Debian风格),但我认为该解决方案在各种类Unix平台之间非常便携.

更新:

这里的要点是用户能够创建自己的init脚本,应该在系统启动时代表他们启动.正如Dan Carley指出的那样,服务将无法访问任何系统资产(特权端口,系统日志……).

1.这样我就不必过多考虑所有微妙的安全隐患,比如脚本超时等……

解决方法

你的问题基本上包括答案….一个脚本,它将遍历每个用户家的子目录,寻找可执行脚本.然后它sudo -u user /export/home/user/scripts/scriptname.sh start.您无法控制脚本的功能,因此您需要信任您的用户.

坚持他们编写脚本以接受停止启动重启为$1 param并且他们不应该使用在.profile,.cshrc或.bashrc文件中设置的任何环境变量.该脚本实际上需要是独立的.

#!/usr/bin/bash

run_cmd {
cd /export/home
for HOMEDIR in *; do
  for SCRIPT in /export/home/$HOMEDIR/scripts/*;  do
     if [ -x $SCRIPT ]; then
       echo "$ACTION user $HOMEDIR's script $SCRIPT"
       sudo -u $HOMEDIR $SCRIPT $ACTION &
     fi
  done
done

}

case $1 in
    start) ACTION=start;
           run_cmd;;
    stop) ACTION=stop;
           run_cmd;;
    restart) ACTION=stop;
             run_cmd;
             sleep 60;
             ACTION=start;
             run_cmd;;
    *) echo "$1 not recognized as valid cmd";;
esac

exit 0

您需要针对您的环境,bash / homedirs等的位置进行调整.

原文链接:https://www.f2er.com/linux/397059.html

猜你在找的Linux相关文章