加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

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

发布时间:2020-12-14 02:56:11 所属栏目:Linux 来源:网络整理
导读:我想将SysV init脚本委派给每个用户. 与SysV init一样,以S开头的${HOME} /rc.d中的每个项目都将在服务器启动时使用start参数启动.对于服务器关闭,使用以K开头并使用stop参数的服务器关闭相同. 我想过自己编写脚本,但也许已经有了某种实现方式1.总之,它将是/e
我想将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等的位置进行调整.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读