![普通用户如何在启动时运行脚本?](https://linux22.com/image/1360602/%E6%99%AE%E9%80%9A%E7%94%A8%E6%88%B7%E5%A6%82%E4%BD%95%E5%9C%A8%E5%90%AF%E5%8A%A8%E6%97%B6%E8%BF%90%E8%A1%8C%E8%84%9A%E6%9C%AC%EF%BC%9F.png)
我想在 CentOS 6 启动时运行一个 bash 脚本。我在/etc/init.d/
目录中添加了脚本,但所有这些脚本都是由 root 运行的。我想为任何用户运行脚本。
答案1
您可以像这样将其添加到您的 crontab 中:
@reboot /bin/bash /dir/of/your/script
如果你不熟悉crontab
,这里有一些提示:
crontab -l
列出当前安排的作业。crontab -e
允许您编辑它。
答案2
您可以使用运行命令su
来放弃 root 权限,例如:-c
# su user -c whoami
user
如果您想要特定脚本放弃权限,那么您只需调用该脚本本身,su <user> -c <script> -magic-parameter
告诉-magic-parameter
脚本以非 root 用户身份执行您希望它执行的操作。
答案3
在启动时运行脚本对系统安全非常危险。因此,这里有一个只有 root 才能运行脚本的理由。因此,如果你有根访问权限 - 使用它(您是系统管理员,对吗?),如果您没有访问权限 - 最好保持原样。:)
如果你的问题是关于如何改变某些 rc.d 脚本的有效 UID,你可以使用类似如下的方法:
#!/bin/bash
export MYHOME=/path/to/somewhere
case $1 in
start) /bin/su <username> $MYHOME/bin/startup.sh ;;
stop) /bin/su <username> $MYHOME/bin/shutdown.sh ;;
restart)
/bin/su <username> $MYHOME/bin/shutdown.sh
/bin/su <username> $MYHOME/bin/startup.sh
;;
esac
exit 0
因此,您可以将脚本放在任何地方,然后从初始化脚本中运行它su
。