Закрывающаяся крышка Fedora 27 LXDE не блокирует экран (команда selinux acpid xscreensaver)

449
banjo67xxx

Я установил acpid и настроил событие для закрытия крышки, которое работает в режиме отладки, однако я не могу заставить его работать, когда acpid запускается systemd.

Я использовал приведенные здесь предложения для настройки acpid Linux на приостановку или на закрытие крышки

cat / etc / acpi / events / lid

event=button[ /]lid action=/etc/acpi/actions/lid_down.sh % 

cat /etc/acpi/actions/lid_down.sh

#!/bin/bash  [ "$1" = "button/lid" ] && [ "$2" = "LID" ] && [ "$3" = "close" ] && xscreensaver-command -lock 

работает acpid -d -l работает, но systemctl запускает acpid выдает следующую ошибку, когда я закрываю крышку

# ausearch -m avc -ts recent -i ---- type=AVC msg=audit(19/07/18 04:14:19.214:452) : avc: denied { connectto } for pid=16632 comm=xscreensaver-co path=/tmp/.X11-unix/X0 scontext=system_u:system_r:apmd_t:s0 tcontext=system_u:system_r:xserver_t:s0-s0:c0.c1023 tclass=unix_stream_socket permissive=0  

Какая политика selinux мне требуется, чтобы разрешить xscreensaver-command доступ к моему экранному сокету при запуске из acpid?

================================================

Итак, я отредактировал свой скрипт и могу заставить его работать следующим образом:

cat /etc/acpi/actions/lid_down.sh

#!/bin/bash  [ "$1" = "button/lid" ] && [ "$2" = "LID" ] && [ "$3" = "close" ] && /usr/local/bin/xscreensaver-lock-all 

cat / usr / local / bin / xscreensaver-lock-all

#!/bin/bash  logger "screen saver lock script started" for user in $(ps -ef | awk '($0~/xscreensaver/&&$0!~/awk/)') do su $user -c "/usr/bin/xscreensaver-command -lock" done 

Я попытался вставить различные параметры runcon в lid_down.sh, но безрезультатно. Итак, мой текущий обходной путь:

# semanage permissive -a apmd_t 

Но это приводит к следующим ошибкам:

# ausearch -m avc -ts recent -i ---- type=AVC msg=audit(19/07/18 10:24:19.266:287) : avc: denied { bind } for pid=3372 comm=su scontext=system_u:system_r:apmd_t:s0 tcontext=system_u:system_r:apmd_t:s0 tclass=netlink_selinux_socket permissive=1  ---- type=AVC msg=audit(19/07/18 10:24:19.266:286) : avc: denied { create } for pid=3372 comm=su scontext=system_u:system_r:apmd_t:s0 tcontext=system_u:system_r:apmd_t:s0 tclass=netlink_selinux_socket permissive=1  ---- type=AVC msg=audit(19/07/18 10:24:19.267:288) : avc: denied { compute_av } for pid=3372 comm=su scontext=system_u:system_r:apmd_t:s0 tcontext=system_u:object_r:security_t:s0 tclass=security permissive=1  ---- type=AVC msg=audit(19/07/18 10:24:19.268:292) : avc: denied { setgid } for pid=3372 comm=su capability=setgid scontext=system_u:system_r:apmd_t:s0 tcontext=system_u:system_r:apmd_t:s0 tclass=capability permissive=1  ---- type=AVC msg=audit(19/07/18 10:24:19.271:294) : avc: denied { setsched } for pid=3372 comm=su scontext=system_u:system_r:apmd_t:s0 tcontext=system_u:system_r:apmd_t:s0 tclass=process permissive=1  ---- type=AVC msg=audit(19/07/18 10:24:19.284:298) : avc: denied { read write } for pid=3372 comm=su name=lastlog dev="dm-0" ino=659972 scontext=system_u:system_r:apmd_t:s0 tcontext=system_u:object_r:lastlog_t:s0 tclass=file permissive=1  ---- type=AVC msg=audit(19/07/18 10:24:19.285:299) : avc: denied { open } for pid=3372 comm=su path=/var/log/lastlog dev="dm-0" ino=659972 scontext=system_u:system_r:apmd_t:s0 tcontext=system_u:object_r:lastlog_t:s0 tclass=file permissive=1  ---- type=AVC msg=audit(19/07/18 10:24:19.342:301) : avc: denied { connectto } for pid=3373 comm=xscreensaver-co path=/tmp/.X11-unix/X0 scontext=system_u:system_r:apmd_t:s0 tcontext=system_u:system_r:xserver_t:s0-s0:c0.c1023 tclass=unix_stream_socket permissive=1  ---- type=AVC msg=audit(19/07/18 10:24:19.343:302) : avc: denied { read } for pid=3373 comm=xscreensaver-co name=.Xauthority dev="dm-4" ino=15466502 scontext=system_u:system_r:apmd_t:s0 tcontext=system_u:object_r:xauth_home_t:s0 tclass=file permissive=1  ---- type=AVC msg=audit(19/07/18 10:24:19.343:303) : avc: denied { open } for pid=3373 comm=xscreensaver-co path=/home/ken/.Xauthority dev="dm-4" ino=15466502 scontext=system_u:system_r:apmd_t:s0 tcontext=system_u:object_r:xauth_home_t:s0 tclass=file permissive=1  ---- type=AVC msg=audit(19/07/18 10:24:19.538:315) : avc: denied { read write } for pid=3374 comm=su name=lastlog dev="dm-0" ino=659972 scontext=system_u:system_r:apmd_t:s0 tcontext=system_u:object_r:lastlog_t:s0 tclass=file permissive=1  ---- type=AVC msg=audit(19/07/18 10:24:19.538:316) : avc: denied { open } for pid=3374 comm=su path=/var/log/lastlog dev="dm-0" ino=659972 scontext=system_u:system_r:apmd_t:s0 tcontext=system_u:object_r:lastlog_t:s0 tclass=file permissive=1  ---- type=AVC msg=audit(19/07/18 10:24:19.539:318) : avc: denied { setgid } for pid=3382 comm=su capability=setgid scontext=system_u:system_r:apmd_t:s0 tcontext=system_u:system_r:apmd_t:s0 tclass=capability permissive=1  ---- type=AVC msg=audit(19/07/18 10:24:19.543:319) : avc: denied { connectto } for pid=3382 comm=xscreensaver-co path=/tmp/.X11-unix/X0 scontext=system_u:system_r:apmd_t:s0 tcontext=system_u:system_r:xserver_t:s0-s0:c0.c1023 tclass=unix_stream_socket permissive=1  ---- type=AVC msg=audit(19/07/18 10:24:22.153:336) : avc: denied { read write } for pid=3386 comm=su name=lastlog dev="dm-0" ino=659972 scontext=system_u:system_r:apmd_t:s0 tcontext=system_u:object_r:lastlog_t:s0 tclass=file permissive=1  ---- type=AVC msg=audit(19/07/18 10:24:22.153:337) : avc: denied { open } for pid=3386 comm=su path=/var/log/lastlog dev="dm-0" ino=659972 scontext=system_u:system_r:apmd_t:s0 tcontext=system_u:object_r:lastlog_t:s0 tclass=file permissive=1  ---- type=AVC msg=audit(19/07/18 10:24:22.153:339) : avc: denied { setgid } for pid=3395 comm=su capability=setgid scontext=system_u:system_r:apmd_t:s0 tcontext=system_u:system_r:apmd_t:s0 tclass=capability permissive=1  ---- type=AVC msg=audit(19/07/18 10:24:22.157:340) : avc: denied { connectto } for pid=3395 comm=xscreensaver-co path=/tmp/.X11-unix/X0 scontext=system_u:system_r:apmd_t:s0 tcontext=system_u:system_r:xserver_t:s0-s0:c0.c1023 tclass=unix_stream_socket permissive=1  ---- type=AVC msg=audit(19/07/18 10:24:21.901:322) : avc: denied { create } for pid=3386 comm=su scontext=system_u:system_r:apmd_t:s0 tcontext=system_u:system_r:apmd_t:s0 tclass=netlink_selinux_socket permissive=1  ---- type=AVC msg=audit(19/07/18 10:24:21.901:323) : avc: denied { bind } for pid=3386 comm=su scontext=system_u:system_r:apmd_t:s0 tcontext=system_u:system_r:apmd_t:s0 tclass=netlink_selinux_socket permissive=1  ---- type=AVC msg=audit(19/07/18 10:24:21.901:324) : avc: denied { compute_av } for pid=3386 comm=su scontext=system_u:system_r:apmd_t:s0 tcontext=system_u:object_r:security_t:s0 tclass=security permissive=1  ---- type=AVC msg=audit(19/07/18 10:24:21.905:329) : avc: denied { setsched } for pid=3386 comm=su scontext=system_u:system_r:apmd_t:s0 tcontext=system_u:system_r:apmd_t:s0 tclass=process permissive=1  

Должен быть аккуратный способ сделать это, не отключая selinux для acpi

0

1 ответ на вопрос

0
grawity

Если вы ищете «более аккуратный» способ, сделать сервис запуска графических программ вполне подходящим решением. Это плохой дизайн не только из-за SELinux.

Измените команду на /usr/bin/loginctl lock-sessions. Это передает сигнал «блокировки» всем графическим сеансам, и каждый сеанс может реагировать на него внутренне (например, запускать блокировщик без каких-либо проблем с SELinux). Скорее всего, LXDE может уже поддерживать его.

Если LXDE не реагирует на сигнал блокировки, запустите помощника, который:

Похожие вопросы