bash - 如何在 Ubuntu 12.04(稳定)上使用特定用户在启动时运行 bash 脚本

标签 bash ubuntu startup

作为 Linux 环境的新手,并且没有可查询的本地资源,我想问一下作为 Ubuntu 12.04 系统上的特定用户在启动时启动进程的首选方法是什么。这种设置的原因是这台机器将在工业环境中托管一个输入/输出 Controller (IOC)。如果机器出现故障或重新启动,此过程必须自动启动......每次。

我的互联网搜索提供了两个这样的区域来执行此任务:

/etc/rc.local
/etc/init.d/

我询问每种方法的具体优点和缺点。我要补充一点,这些机器有些是客户端,有些是服务器,但都需要运行 IOC,最好以相同的方式运行。

在上述任何被认为最合适的方法中,必须以我指定的用户身份运行 bash shell 脚本。我的理解是所有启动过程都归root所有。所以我质疑这是否是最佳做法:
sudo -u <user> start_ioc.sh

如果是这种情况,那么我认为需要在以下位置创建一个文件:
/etc/sudoers.d/

使用:
sudo visudo -f <filename>

在此文件中,您为用户分配了适当的权限和路径。我的大多数搜索都将其显示为正确的格式:
<user or group> <host or IP>=(<user or group to run as>)NOPASSWD:<list of comma separated applications>
root ALL=(user)NOPASSWD:/usr/bin/start_ioc.sh

因此,对于最终的附加信息,这种方法的最终原因(也可能是有缺陷的逻辑)是 IOC 进程需要访问网络连接服务器(NAS)。我认为允许对 NAS 进行 root 访问是不可以的,用户可以在其中分配适当的权限。

最佳答案

这可能不是最好的答案,但这是我决定完成这项任务的方式:

就像这里的这篇文章一样:

how to run script as another user without password

我确实使用 rc.local 在启动时启动了该过程。它似乎工作得很好。

关于bash - 如何在 Ubuntu 12.04(稳定)上使用特定用户在启动时运行 bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32227708/

相关文章:

linux - 打印文件 bash 列中的所有内容

linux - apt-get 升级失败,主机名错误

spring - 有没有一种诊断 spring bean/服务创建问题的好方法?

linux - XServer启动后运行shell脚本?

linux - 从 ssh 启动 zookeeper

linux - 如何使用 Linux shell 脚本自定义 Webconverger 的 ISO 镜像?

python - ubuntu pygame 窗口没有显示

java - jshell 启动时加载脚本的不同方法

regex - Shell脚本linux,验证整数

linux - Ubuntu 18.04.1 LTS 与 Yocto Sumo 2.5.1 兼容吗?