テスト目的のために、systemdサービスファイルは単純なbashスクリプトを実行するように設計されています。 「システム」ユーザーがサービスを開始したいと思います。 bashスクリプトはこのシステムユーザーが所有しており、実行権限が付与されています。
サービスファイルは簡単です。
[Unit]
Description=Come one step closer
After=network-online.target
Requires=network-online.target
[Service]
User=test1
Group=test1
Type=simple
ExecStart=/usr/bin/bash /absolute/path/to/test.sh
[Install]
WantedBy=multi-user.target
test.shスクリプトは単にJournalctlにメッセージを送信するだけです。これはテスト専用です。
以下を使用してシステム単位ファイルを再ロードしました。
$ sudo systemctl daemon-reload
サービスを開始します。
$ sudo systemctl start tester.service
systemctl status tester.serviceの出力は、bashを実行する権限がないことを示します。
システムに「システム」ユーザーtest1を追加しました。
$ sudo useradd -r -s /usr/bin/bash test1 -U
test1ユーザーにサービスの開始権限を付与するにはどうすればよいですか? test1がシステムユーザーであり、test1としてログインできないため、ユーザーtest1を使用してbashスクリプトをテストすることはできません。
ベストアンサー1
説明で説明されているように、問題は、/absolute/path/to/test.sh
root以外のユーザーがスクリプトにアクセスするために「実行」(x)権限を持つ必要がある上記のディレクトリの権限にあります。
これは、次のコマンドを使用して各親ディレクトリのパターンを調べることで診断できます。
ls -ld / /absolute /absolute/path /absolute/path/to /absolute/path/to/test.sh
そして、「test1」ユーザーにスクリプト自体の読み取り権限に加えて、すべてのディレクトリに対する実行権限があることを確認してくださいtest.sh
。