나는 언급하고있다이 페이지Fedora 36에서 다음의 간단한 지침을 따르십시오.
docker pull aflplusplus/aflplusplus:
docker run -ti -v /location/of/your/target:/src aflplusplus/aflplusplus
그러나 다음과 같은 SELinux 오류가 발생합니다.
SELinux is preventing runc:[2:INIT] from using the transition access on a process.
***** Plugin catchall (100. confidence) suggests **************************
If you believe that runc:[2:INIT] should be allowed transition access on processes labeled container_t by default.
Then you should report this as a bug.
You can generate a local policy module to allow this access.
Do
allow this access for now by executing:
# ausearch -c 'runc:[2:INIT]' --raw | audit2allow -M my-runc2INIT
# semodule -X 300 -i my-runc2INIT.pp
Additional Information:
Source Context system_u:system_r:unconfined_service_t:s0
Target Context system_u:system_r:container_t:s0:c149,c848
Target Objects /usr/bin/bash [ process ]
Source runc:[2:INIT]
Source Path runc:[2:INIT]
Port <Unknown>
Host localhost.localdomain
Source RPM Packages
Target RPM Packages bash-5.2.15-1.fc36.x86_64
SELinux Policy RPM selinux-policy-targeted-36.17-1.fc36.noarch
Local Policy RPM selinux-policy-targeted-36.17-1.fc36.noarch
Selinux Enabled True
Policy Type targeted
Enforcing Mode Enforcing
Host Name localhost.localdomain
Platform Linux localhost.localdomain 6.1.13-100.fc36.x86_64
#1 SMP PREEMPT_DYNAMIC Wed Feb 22 18:13:06 UTC
2023 x86_64 x86_64
Alert Count 1
First Seen 2023-07-23 01:36:16 PDT
Last Seen 2023-07-23 01:36:16 PDT
Local ID c389e11d-1f68-4433-b24e-27b54adbb8a9
Raw Audit Messages
type=AVC msg=audit(1690101376.101:6745): avc: denied { transition } for pid=2847426 comm="runc:[2:INIT]" path="/usr/bin/bash" dev="overlay" ino=2172597 scontext=system_u:system_r:unconfined_service_t:s0 tcontext=system_u:system_r:container_t:s0:c149,c848 tclass=process permissive=0
Hash: runc:[2:INIT],unconfined_service_t,container_t,process,transition
이것을 어떻게 허용합니까? 나는 다음을 시도했습니다 :
sudo semanage fcontext -a -t container_t "/usr/bin/runc"
sudo semanage fcontext -a -t container_t "/usr/bin/bash"
또한 오류 메시지에서 임시 수정을 시도했지만 실패했습니다.
Failed to resolve allow statement at /var/lib/selinux/targeted/tmp/modules/200/container/cil:1245
Failed to resolve AST
semodule: Failed!
Semanage 명령도 실패하고 다음을 제공합니다.
ValueError: Type container_t is invalid, must be a file or device type
다음을 출력하는 명령을 실행했습니다 rpm -qa|grep selinux|sort
.
container-selinux-2.199.0-1.fc36.noarch
flatpak-selinux-1.12.7-5.fc36.noarch
libselinux-3.3-4.fc36.x86_64
libselinux-devel-3.3-4.fc36.x86_64
libselinux-utils-3.3-4.fc36.x86_64
python3-libselinux-3.3-4.fc36.x86_64
rpm-plugin-selinux-4.17.1-3.fc36.x86_64
selinux-policy-36.17-1.fc36.noarch
selinux-policy-targeted-36.17-1.fc36.noarch
snapd-selinux-2.57.6-2.fc36.noarch
tpm2-abrmd-selinux-2.3.1-5.fc36.noarch
답변1
unconfined_service_t
시스템에서는 에서 로의 변환을 허용하는 방법을 알려 주었습니다 container_t
. 인용한 메시지의 다음 부분을 참조하세요.
Do allow this access for now by executing:
# ausearch -c 'runc:[2:INIT]' --raw | audit2allow -M my-runc2INIT
# semodule -X 300 -i my-runc2INIT.pp
시작 부분은 #
명령이 루트로 실행되어야 함을 나타냅니다. 이는 명령의 일부가 아니며 단순히 루트 명령 프롬프트를 나타냅니다. 전체 줄을 명령으로 복사하여 붙여 넣으면 쉘은 이를 #
주석 기호로 해석하고 아무 작업도 수행하지 않습니다.
첫 번째 명령은 ausearch -c 'runc:[2:INIT]' --raw | audit2allow -M my-runc2INIT
감사 로그에서 정확한 이벤트를 찾아 이를 제공하여 SELinux 규칙 모듈( 파일) audit2allow
을 생성합니다 .my-runc2INIT
my-runc2INIT.pp
두 번째 명령은 규칙 모듈을 설치하고 적용합니다.
나중에 맞춤 규칙을 삭제하려면 semodule -r my-runc2INIT
삭제해야 합니다.