在 Ubuntu 16.10 中使用 sudo 启动脚本

bhu*_*ter 12 gnome bash scripts

我需要/usr/bin在启动时以 sudo/root 权限启动一个脚本和一个二进制文件。我已经尝试了这个论坛的许多指南,但没有任何效果(rc.localsystemd风格,新贵)——也许我做错了什么。我的操作系统是 Ubuntu GNOME 16.10。

脚本将是这样的

#!/bin/bash
sudo ./usr/bin/myprogram
sudo bash /home/USER/script.bash
Run Code Online (Sandbox Code Playgroud)

脚本和程序都是可执行的。我只是不知道在启动时用 sudo 启动它们的最佳方式。

请温柔点。我是新用户。

Ser*_*nyy 15

对于不需要 GUI 的命令行应用程序,将调用放置到/etc/rc.local已经作为 root 运行,因此不需要sudo. 下面是我自己的示例,我用/etc/rc.local它来启动两个监控脚本。

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

/home/xieerqi/bin/batmon.sh &
/home/xieerqi/bin/sh/temperature.sh  &
 exit 0
Run Code Online (Sandbox Code Playgroud)

对于 GUI 应用程序,您需要采用不同的方法。您需要打开启动应用程序应用程序,并添加以下命令:

bash -c "sleep 10;gksu /usr/bin/my_vpn_program"
Run Code Online (Sandbox Code Playgroud)

这样做是给 GUI 足够的时间启动,10 秒,然后将显示密码对话框,如果您正确输入密码,将启动您的命令。实际上,这是一个迷你 bash 脚本。您可以pkexec改用,有些人甚至可能会说pkexec是推荐而不是gksu.

或者,如果您不想每次都输入密码,您可以允许您的用户在没有身份验证的情况下以 root 权限运行此特定命令。为此,您需要编辑/etc/sudoers文件。警告:建议您使用sudo visudo从终端编辑文件。下面是我如何在pm-suspend命令中使用相同设置的示例:

# Allow using pm-suspend for my user without password
my_username_here ALL = NOPASSWD: /usr/sbin/pm-suspend
Run Code Online (Sandbox Code Playgroud)

此行应附加到/etc/sudoers文件末尾并保存。请注意,您仍然需要将sudo或附加gksu到您设置的每个命令的开头。因此,您需要使用bash我之前显示的相同命令。