systemdユーザーインスタンスで実行されているサービスの衣類設定ファイルをロードしようとしました。プロセス用の2つのサービスファイルSample.serviceがあり、アプリケーションアーマープロファイルusr.bin.Sampleをロードする別のSample-profile-loader.serviceがあります。 Apparmor構成ファイルは/lib/systemd/systemにあり、プロセスのサービスファイルは/usr/lib/systemd/userにあります。両方のサービスが有効になっています。
[Unit] # sample-profile-loader.service
Before=sample.service
[Service]
Type=oneshot
ExecStart=/use/bin/apparmor-loader.sh
/etc/apparmor.d/usr.bin.sample
[Install]
Wanted by=multi-user.target
[Unit] # sample.service
Requires=sample-profile-loader.service
After=sample-profile-loader.service
[Service]
Type=simple
ExecStart=/usr/bin/sample
[Install]
WantedBy=multi-user.target
最初の起動後にaa-statusを確認すると、設定ファイルがロードされます。ただし、systemctl restart Sample.service --userを実行するとエラーメッセージが表示されます。 "sample.serviceを起動できませんでした。デバイスSample-profile-loader.serviceを読み込めませんでした。そのファイルまたはディレクトリはありません。"
Googleを通じて解決策を探していました。しかし、まだ発見されていません。どんなアドバイスでもしていただければいいと思います。
答え1
Systemdはこの変数をユニットファイルに提供し、AppArmorProfile=
それを持つ設定ファイルに設定します。ディレクトリについてはわかりません。設定ファイルを見つけるために服のパスを追加する方法を見つけようとしています。
答え2
ユーザープロファイルとシステムサービスアパレルプロファイルを区別する必要はありません。 /etc/apparmor.dフォルダに一緒に配置し、apparmor_parser.shを使用してカーネルにロードできます。