Samba와 Podman이 동일한 디렉토리에서 rw하도록 허용

Samba와 Podman이 동일한 디렉토리에서 rw하도록 허용

저는 SElinux를 처음 접했기 때문에 사용법을 잘 모릅니다. Samba 공유(이미 구성되어 작동 중)를 사용하여 Fedora 서버를 실행하고 동일한 디렉터리를 마운트하여 Podman 컨테이너를 구성하고 싶습니다. 그러나 SElinux가 켜져 있는 동안에는 컨테이너가 마운트된 디렉터리에 액세스할 수 없습니다. SElinux를 끄면( setenforce 0) 이 문제가 "해결"됩니다.

public_content_rw_t그래서 현재 해당 디렉토리에서 사용을 시도했지만 여전히 작동하지 않습니다.

# first try
$ semanage fcontext -a -t samba_share_t "/srv/downloads(/.*)?"
$ restorecon -Rv /srv/downloads

# second try
$ semanage fcontext -m -t public_content_rw_t "/srv/downloads(/.*)?"
$ restorecon -Rv /srv/downloads

두 경우 모두 podman 컨테이너는 동일한 디렉터리에 액세스할 수 없습니다. SElinux가 이를 방지하고 있습니다(로그: setroubleshoot[1232603]: SELinux is preventing java from write access on the directory /srv/downloads). 예를 들어 다음을 사용합니다. podman exec -it $CONTAINER ls -l /downloads( /srv/downloads:/downloadsrw로 마운트됨)

SElinux로 서버를 실행하고 싶습니다. 두 프로세스가 동일한 디렉터리를 사용할 수 있도록 하려면 무엇을 구성해야 합니까?

답변1

SELinux를 처음 접했기 때문에 이를 이해하는 데 도움이 되는 더 많은 도구가 있습니다. 저는 지난 주에 이것을 발견했습니다. 출발점은여기. 주로 audit2why 및 audit2allow가 포함된 audit.log입니다. 나는 audit.log를 통해 cp /dev/null을 0으로 설정하고 실패한 명령(허용 모드에서는 성공했지만 여전히 감사 로그에 기록됨)을 실행한 다음 로그를 저장하고 위 링크에서와 같이 분석합니다. 저는 지난 며칠 동안 이 프로세스를 사용하여 Python 하위 프로세스를 실행하는 플라스크/아파치 API에 대한 사용자 지정 정책을 만들었습니다. 따라서 구체적인 답변은 아니지만 프로세스를 통해 나처럼 솔루션을 찾을 수 있습니다.

답변2

우리는 플래그를 활성화하여 이 문제를 해결했습니다 setsebool -P virt_use_samba. 이는 마운트된 드라이브에 대한 가상화된 인스턴스(..및 컨테이너..) 액세스를 가능하게 하는 것으로 보입니다.

오래된 질문이지만 이 답변을 인터넷의 한 위치에서 정확히 찾았으며 더 많은 문제가 해결될 경우를 대비하여 널리 퍼뜨리는 것이 좋을 것입니다.

관련 정보