systemd 사용자 인스턴스에서 실행되는 서비스에 대한 의류 구성 파일을 로드하려고 했습니다. 프로세스를 위한 두 개의 서비스 파일인 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를 사용하여 커널에 로드할 수 있습니다.