Fedora에 guix-daemon.service의 SELinux 정책을 설치하는 방법은 무엇입니까?

Fedora에 guix-daemon.service의 SELinux 정책을 설치하는 방법은 무엇입니까?

Guix를 설치한 후 번들 SELinux 정책을 실행하려면 어떻게 설치해야 합니까 guix-daemon.service?

Fedora 34 워크스테이션에 Guix 1.3.0을 설치하려면 다음을 사용했습니다.쉘 설치 프로그램 스크립트:

$ cd /tmp
$ wget https://git.savannah.gnu.org/cgit/guix.git/plain/etc/guix-install.sh
$ chmod +x guix-install.sh
$ sudo ./guix-install.sh

스크립트가 성공적으로 완료되었습니다. 프롬프트를 숨기고 설치했습니다.이름 서비스 캐시 데몬:

$ sudo dnf install nscd
$ sudo systemctl enable nscd
$ sudo systemctl start nscd

불행히도 나는 할 수 없습니다설치 계속glibc-localesguix-daemon.service실행되고 있지 않기 때문에 :

$ guix install glibc-locales
hint: Consider installing the `glibc-utf8-locales' or `glibc-locales' package and defining `GUIX_LOCPATH', along these lines:

     guix install glibc-utf8-locales
     export GUIX_LOCPATH="$HOME/.guix-profile/lib/locale"

See the "Application Setup" section in the manual, for more info.

guix install: error: failed to connect to `/var/guix/daemon-socket/socket': No such file or directory
$ systemctl status guix-daemon
× guix-daemon.service - Build daemon for GNU Guix
     Loaded: loaded (/etc/systemd/system/guix-daemon.service; enabled; vendor preset: disabled)
     Active: failed (Result: exit-code) since Thu 2021-08-19 21:12:26 EEST; 2h 29min ago
   Main PID: 793 (code=exited, status=203/EXEC)
        CPU: 1ms

сер 19 21:12:26 fedora systemd[1]: Started Build daemon for GNU Guix.
сер 19 21:12:26 fedora systemd[793]: guix-daemon.service: Failed to locate executable /var/guix/profiles/per-user/root/current-guix/bin/guix-daemon: Permission denied
сер 19 21:12:26 fedora systemd[793]: guix-daemon.service: Failed at step EXEC spawning /var/guix/profiles/per-user/root/current-guix/bin/guix-daemon: Permission denied
сер 19 21:12:26 fedora systemd[1]: guix-daemon.service: Main process exited, code=exited, status=203/EXEC
сер 19 21:12:26 fedora systemd[1]: guix-daemon.service: Failed with result 'exit-code'.
сер 19 23:35:07 fedora systemd[1]: /etc/systemd/system/guix-daemon.service:12: Standard output type syslog is obsolete, automatically updating to journal. Please update your unit file, and consider removing the setting altogether.
сер 19 23:35:07 fedora systemd[1]: /etc/systemd/system/guix-daemon.service:13: Standard output type syslog is obsolete, automatically updating to journal. Please update your unit file, and consider removing the setting altogether.

~에 따르면수동:

etc/guix-daemon.cilGuix 에는 SELinux 지원 시스템에 설치하여 Guix 파일을 표시하고 데몬의 예상 동작을 지정할 수 있는 SELinux 정책 파일이 포함되어 있습니다 .

Libera Chat 채널의 사람들은 #guix위의 지침이 git에서 수동으로 컴파일된 Guix에 작동한다는 것을 알아내는 데 도움을 주었습니다. 쉘 설치 프로그램 스크립트를 사용하여 설치된 Guix의 경우 다음에서 파일을 찾아야 합니다 /gnu/store.

$ find /gnu -name guix-daemon.cil
/gnu/store/0iii8i1lc4wg3wccs1db7y7d8lg80i04-guix-1.3.0/share/selinux/guix-daemon.cil
$ cd /gnu/store/0iii8i1lc4wg3wccs1db7y7d8lg80i04-guix-1.3.0/share/selinux/
$ sudo semodule -i guix-daemon.cil

지금,설명서에 따르면:

restorecon그런 다음 시스템에서 제공하는 다른 메커니즘을 사용하여 파일 시스템의 레이블을 다시 지정합니다.

나는 시도했다:

$ sudo restorecon -vR /gnu

이것은 많은 것을 반환할 것이다

restorecon: Could not set context for /gnu/…:  Read-only file system

예를 들어:

$ find /gnu -name guix-daemon.service
/gnu/store/0iii8i1lc4wg3wccs1db7y7d8lg80i04-guix-1.3.0/lib/systemd/system/guix-daemon.service
$ sudo restorecon -v /gnu/store/0iii8i1lc4wg3wccs1db7y7d8lg80i04-guix-1.3.0/lib/systemd/system/guix-daemon.service
restorecon: Could not set context for /gnu/store/0iii8i1lc4wg3wccs1db7y7d8lg80i04-guix-1.3.0/lib/systemd/system/guix-daemon.service:  Read-only file system

그리고 데몬은 여전히 ​​시작되지 않습니다.

내 생각에는 문제가 SELinux 구성이나 Fedora가 이를 처리하는 방법과 관련되어 있는 것 같지만 직접 조사하는 방법을 이해할 수 없습니다. Guix 이슈 트래커 검색"읽기 전용 파일 시스템" "SELinux"관련 없는 질문 2개만 반환되었습니다.

답변1

게시한 guix 설치 스크립트를 살펴본 결과 /gnu를 설치하기 위해 systemd를 통해 마운트 지점을 생성하는 것 같습니다. 이를 수행하는 설치 스크립트의 일부는 다음과 같습니다.

{ # systemd .mount 유닛의 이름은 대상 디렉터리의 이름을 따라 지정되어야 합니다. # 여기서는 하드코딩된 이름이 /gnu/store라고 가정합니다. # XXX 솔루션https://issues.guix.gnu.org/41356다음 버전까지. if [ -f "~root/.config/guix/current/lib/systemd/system/gnu-store.mount" ] then cp "~root/.config/guix/current/lib/systemd/system/gnu- store.mount"
/etc/systemd/system/; chmod 664 /etc/systemd/system/gnu-store.mount; systemctl daemon-reload && systemctl 활성화 gnu-store.mount;

따라서 이는 다음과 같은 파일이 있어야 함을 의미합니다.gnu-store.mount체계적으로. 자세히 살펴보니 다음과 같은 내용이 있었습니다.

[Unit]
Description=Read-only @storedir@ for GNU Guix
DefaultDependencies=no
ConditionPathExists=@storedir@
Before=guix-daemon.service

[Install]
WantedBy=guix-daemon.service

[Mount]
What=@storedir@
Where=@storedir@
Type=none
Options=bind,ro

Options=bind,ro를 보면 확실히 읽기 전용이므로 rw로 변경하고 다시 마운트한 다음 Restoreconn을 사용하여 레이블을 다시 지정해야 합니다. 설명으로 판단하면 이대로는 안 될 것 같지만 시도해 보겠습니다. 이게 도움이 되길 바란다

관련 정보