Ubuntu设置脚本使用sudo免密执行

741 阅读2分钟

设置sudo免密登录配置

  1. 配置
    打开终端,使用visudo命令编辑sudoers文件,以允许指定命令在不需要密码的情况下以root权限运行。添加以下行到文件中:

    bash
    your_username ALL=(ALL) NOPASSWD: /home/work/script/check_and_start_service.sh
    

    替换 your_username 为你的用户名。这将允许你的用户在执行 /home/work/script/check_and_start_service.sh 时无需输入密码。

  2. 保存并退出

    nano编辑器中,按下 Ctrl + O 来保存文件,然后按下 Enter,最后按下 Ctrl + X 来退出编辑器。在visudo编辑器中,按照编辑器的指示保存并退出。

这样,你的脚本将在系统启动后自动运行,并且每隔10秒运行一次,而且不需要输入密码。确保你的脚本文件 /home/work/script/check_and_start_service.sh 具有执行权限,你可以使用 chmod +x /home/work/script/check_and_start_service.sh 命令给予执行权限。

在/etc/sudoers.d/下添加免密配置文件

/etc/sudoers.d/目录下添加配置文件是一种良好的实践,因为它允许你以模块化的方式管理sudo权限,而不必修改主sudoers文件。下面是如何在/etc/sudoers.d/目录下添加配置文件的步骤:

1. 打开终端以获取超级用户权限。你可以使用sudo命令:

```
bash
sudo -i
```

使用文本编辑器(比如nanovim)创建一个新的sudoers配置文件。例如,假设你要创建一个文件来配置一个用户(比如your_username)可以以无密码方式运行特定的命令,你可以运行:

```
bash
visudo -f /etc/sudoers.d/decoder_config
```

这将使用`visudo`编辑器打开一个新文件`/etc/sudoers.d/decoder_config`,你可以在其中添加你的`sudo`规则。

在新的sudoers配置文件中,添加你的sudo规则。例如,要允许用户your_username以无密码方式运行/path/to/your/command,可以添加以下行:

```
# your_username ALL=(ALL) NOPASSWD: /path/to/your/command

nvidia ALL=(ALL) NOPASSWD: /home/work/script/check_and_start_service.sh

```

这会将指定的用户添加到`sudoers`文件,并授予他们无密码执行特定命令的权限。

保存和退出编辑器。在visudo编辑器中,按照编辑器的指示保存并退出。

检查配置文件权限:确保新创建的sudoers配置文件的权限是正确的,只有超级用户可以读取它。运行以下命令:

```
bash
chmod 440 /etc/sudoers.d/decoder_config
```

这将设置文件权限为`-r--r-----`,确保只有`root``sudo`组的成员可以读取它。