
Fedora 23에서 노트북 덮개가 열렸을 때 사용자 지정 작업을 추가하고 싶습니다. 세 가지 파일을 설치 acpid
하고 만들었습니다.
/etc/acpi/events/lidconf
event=button/lid
action=/etc/acpi/actions/lid.sh "%e"
/etc/acpi/actions/lid.sh
#!/bin/bash
/home/user/Utility/lid.sh "$1"
/home/user/Utility/lid.sh
#!/bin/bash
DISPLAY=:0.0 su user -c "echo $1 >> /home/user/lid.txt"
달리고 있을 때는 잘 작동 # /usr/sbin/acpid -f
하지만 달리고 있을 때는 전혀 작동하지 않습니다 # systemctl start acpid
.
ps
명령의 결과가 약간 다르다는 것을 알았습니다 .
루트 사용자로서:
root 3796 0.0 0.0 4344 1704 ? Ss 22:24 0:00 /usr/sbin/acpid -f
시스템을 사용하십시오:
root 3918 0.0 0.0 4344 1780 pts/0 S+ 22:25 0:00 /usr/sbin/acpid -f
시작한 후 systemd가 작동하지 않는 이유는 무엇입니까?
편집하다:
로깅을 활성화했는데 acpid
다음과 같은 결과를 얻었습니다.
received input layer event "button/lid LID open"
rule from /etc/acpi/events/lidconf matched
executing action "/etc/acpi/actions/lid.sh "button/lid LID open""
action exited with status 126
1 total rule matched
completed input layer event "button/lid LID open"
편집 2:ps 어시스트-Z
체계:
system_u:system_r:apmd_t:s0 root 5177 0.1 0.0 4348 1756 ? Ss 22:52 0:00 /usr/sbin/acpid -f -l -d
루트로 실행:
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 root 5341 0.0 0.0 4344 1808 pts/0 S+ 22:56 0:00 /usr/sbin/acpid -f -l -d
답변1
좋아요 SELinux 문제. 기존 서비스와 연결되는 새로운 콘텐츠를 생성할 때 서비스가 파일에 적절하게 액세스할 수 있는지 확인해야 합니다. 파일의 로그는 그렇지 않다는 것을 나타냅니다( unconfined_t
.
executing action "/etc/acpi/actions/lid.sh "button/lid LID open""
action exited with status 126
위 명령 실행이 실패했습니다(종료 상태 126). 이는 소스 유형에 apmd_t
파일을 실행할 수 있는 기능이 없음을 의미합니다(파일에 알 수 없는 태그가 있음). 다음과 같은 정책을 찾아보세요.
$ sesearch -A -s apmd_t -p execute /etc/selinux/targeted/policy/policy.*
우리는 선을 알 수 있습니다
allow apmd_t apmd_exec_t : file { ioctl read getattr lock execute execute_no_trans entrypoint open }
허용되는 실행 apmd_exec_t
유형. 실행 파일의 레이블을 해당 유형으로 변경하면 다음과 같이 진행됩니다.
# chcon -t apmd_exec_t /etc/acpi/actions/lid.sh
/home/user/lid.txt
또한 태그가 지정되었거나 home_t
다른 파일에 쓰는 데 문제가 있을 수 있습니다 . 귀하의 서비스는 다음과 같이 작성될 수 있습니다 apmd_tmp_t
.
$ sesearch -A -s apmd_t -p write /etc/selinux/targeted/policy/policy.*
allow apmd_t apmd_tmp_t : file { ioctl read write create getattr setattr lock append unlink link rename open } ;
따라서 대상 파일의 컨텍스트를 다음과 같이 변경하면 apmd_tmp_t
:
# chcon -t apmd_tmp_t /home/user/lid.txt
이 솔루션은 영구적이지 않습니다. 보다 올바른 접근 방식은 이러한 파일과 컨텍스트를 다루는 자체 정책을 정의하거나 기본 컨텍스트가 있는 위치로 파일을 이동하는 것입니다. 감사( ausearch -m AVC
및 audit2allow
유틸리티) 로부터 도움을 받을 수 있어야 합니다 . 문제가 해결되지 않으면 알려 주시기 바랍니다.