Debian:在启动时使用无密码的 sudo bash 脚本

问题描述 投票:0回答:0

我正在进行 Debian 11 测试。这是一台低端计算机,适用于计算机经验很少的用户,我想使用不提示用户输入密码的脚本使其保持最新状态。

遵循几个主题的建议(如here):

1。写剧本:

所以我写了一个简单的脚本

/home/user/Documents/update.sh
像这样:

#!/bin/bash
sudo apt update -y
sudo apt upgrade -y
sudo apt autoclean -y
sudo apt autoremove -y

2。使脚本可执行:

然后我使脚本可执行:

chmod a+x /home/user/Documents/update.sh

3。允许没有密码的特定脚本

然后我给了用户

user
visudo
的权限,以免询问密码

...

user ALL=(ALL:ALL) NOPASSWD:/home/user/Documents/update.sh, /usr/bin/apt update, /usr/bin/apt upgrade, /usr/bin/apt autoclean, /usr/bin/apt autoremove

-> 通过在终端

sh '/home/user/Documents/update.sh'
上运行命令进行测试后,脚本无需要求我输入密码即可运行。

4。在启动时运行脚本:

为了在每次启动时运行脚本,我修改了

crontab -u user -e
(我也直接用
crontab -e
测试过):

...
@reboot sh '/home/user/Documents/update.sh'

-> 但是在每次重启时:没有脚本启动。

5。不成功的 crontab 的替代方案(1/2:桌面文件):

作为替代方案,我尝试在

update.desktop
中创建一个
/usr/share/applications
文件,在其中双击启动脚本:

[Desktop Entry]
Name=update
Exec=sh '/home/user/Documents/update.sh'
Terminal=true
Type=Application
Encoding=UTF-8

-> 经测试,双击此文件运行脚本无需密码

6。不成功的 crontab 的替代方案(2/2:通过 Gnome Tweak 在启动时运行桌面文件):

然后,使用 Gnome Tweaks,我将文件

updates.desktop
添加为启动时的应用程序

-> 这就是我的第二个问题所在:脚本在启动时启动,但要求我输入密码。

问题:

然后我不明白为什么会这样(是 Gnome Tweaks 在另一个用户下运行,等等)。不管怎样,你怎么看?

  1. 为什么crontab方法不起作用? (可以肯定的是,我已经启动了 crontab 服务)
  2. 为什么 Gnome Tweak 方法会提示我输入密码?
  3. 最重要的:如何成功???

我快要得到我想要的了,但我需要你的帮助,非常感谢!

bash cron debian sudo apt
© www.soinside.com 2019 - 2024. All rights reserved.