登录时运行 root 程序

登录时运行 root 程序

Apache2、SSH 和类似的工具在启动和以图形方式登录到设备时似乎不起作用(除非重新启动)。为了让它工作,我必须输入/etc/init.d/apache2 restart,并对 SSH 执行相同的操作。我计划让我的设备不带显示器或键盘。我自动设置登录,制作了一个重新启动服务的 shell 脚本,并将其放入~/.kde/Autostart.

不起作用的原因是我需要 root 权限才能重新启动服务。我需要在没有任何输入或监视器的情况下重新启动它。我怎样才能允许非 root 用户重新启动 apache2,或者允许 root 用户无需密码来执行此可执行文件?


我还尝试编辑 sudoers 文件并添加:

username ALL = NOPASSWD: /etc/init.d/apache2
username ALL = NOPASSWD: /etc/init.d/ssh
username ALL = /etc/init.d/apache2
username ALL = /etc/init.d/ssh

它仍然说尝试时拒绝许可


Debian 8(杰西)

答案1

您可以使用正在运行的命令的sudowith来执行此操作。nopasswd在我看来,您似乎正在尝试为您可能应该解决的更深层次问题创建解决方法。

答案2

我终于找到了一种让 echo 输入密码的方法(因为唯一的问题是我没有键盘)。

#!/bin/bash
echo -e "password\n" | sudo -S command --flag argument

启用-e反斜杠转义,并且 sudo-S启用 STD 输入(因此来自 echo 的输入是管道化的)。根据手册,-S输入需要以\n转义字符结尾

相关内容