ログイン時にルートプログラムを実行する

ログイン時にルートプログラムを実行する

Apache2、SSHなどのツールは、デバイスを起動してグラフィカルにログインすると(再起動しない限り)機能しないようです。機能するには、/etc/init.d/apache2 restartSSHと入力して同じことを実行する必要がありました。モニターやキーボードなしでデバイスを使用する予定です。自動的にログインを設定し、サービスを再起動するシェルスクリプトを作成します~/.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

実行中のコマンドを使用してsudoこれを実行できます。nopasswdしかし、私が見るには、おそらく解決する必要があるより深い問題の解決策を作成しようとしているようです。

答え2

ついにエコーでパスワードを入力する方法を見つけました(唯一の問題はキーボードがないということです)。

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

-eバックスラッシュエスケープが有効になり、sudoが-SSTD入力を有効にします(それでエコーの入力がパイプされます)。マニュアルによると、入力はエスケープ文字で終わらなけれ-Sばなりません。\n

関連情報