Linuxでjarをサービスとして実行するにはどうすればよいですか?すべてのガイドでは、/etc/systemd/systemフォルダにfile.serviceを作成する必要があることがわかります。ファイルを生成するコマンドを使用してスクリプトを作成したいのですが、各コマンドはSUDOを要求してパスワードを入力してみましたが、パスワード入力をバイパスしてスクリプトのすべての内容が自動的に行われるようにしたいと思います。誰でも助けることができますか?
別のフォルダにファイルを作成し、cpコマンドを使用してコピーしてみましたが、まだパスワードを入力する必要があります。 echo "XXX" > "/etc/stsyemd/system/filename.service" コマンドを試しましたが、権限が拒否されました。
答え1
通常、sudoを使用するスクリプトでは「パスワードをバイパスする」ことはできません(設定を編集することはできますが、期待どおりに最初sudo
に設定を使用する必要がありますsudo
)。これがユーザー分離のすべてです。
したがって、あなたが望むことは不可能です。認証なしでrootになるスクリプトを書くことができる場合、ユーザーがrootができるすべての破壊的な操作を実行できないようにすることは意味がありません。
スクリプトの内容はすべて自動的に行われます。
これらのインストールスクリプトはルートによって実行されると合理的に想定できるため、スクリプト自体はそれを処理する必要はありませんがsudo
(内部ではなく全体的に)実行できます。
他にも「I want to run a jar」というメッセージは、/etc/systemd/systemにサービスをまったくインストールしないで、代わりにsystemd/userの~/.config/にユーザーサービスをインストールすればよいと提案できます。現在、ユーザーには特別な権限は必要ありません。したがって、ルートアクセスもなくsudo
。
答え2
sudoでパスワードをバイパスするのは簡単です。
- 行を追加
youruser_ID ALL=(ALL) NOPASSWD:ALL
sudoersファイルに追加します(visudoを使用)。もうパスワードを入力しないでください!
または 2) 行を追加
Defaults timestamp_timeout=60
Defaults env_reset
以下のsudoersファイルにあります。これでこれが可能になりsudo id
、パスワードの入力を求められますが、残りの時間はsudo
パスワードなしで実行できます。
ただし、通常、ファイルをインストールするスクリプトは/etc/systemd/system
rootとして実行する必要があります。だから
sudo install_script
より良い選択になります。