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

how to run a bash script at startup with a specific user on Ubuntu 12.04 (stable)

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

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

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

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

在上述任何被认为最合适的方法中,bash shell 脚本必须是 运行 作为我指定的用户。据我了解,所有启动过程都归根所有。所以我质疑这是否是最佳做法:

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)。我认为允许 root 访问 NAS 是一个禁忌,用户可以在其中分配适当的权限。

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

这里 post 完全一样:

how to run script as another user without password

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