systemd 사용자 공간에서 실행되는 서비스에 대한 의류 구성 파일을 로드하는 방법

systemd 사용자 공간에서 실행되는 서비스에 대한 의류 구성 파일을 로드하는 방법

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를 사용하여 커널에 로드할 수 있습니다.

관련 정보