
HyperFIDO U2F 키인 숨겨진 장치를 제거할 때 세션을 잠그려고 합니다. 그러나 여러 번 시도한 후에도 성공하지 못했습니다.
/etc/udev/rules.d/50-lockscreen.rules
나는 다음과 같은 udev 규칙을 만들려고 했습니다 .
SUBSYSTEM="hid", ACTION=="remove", RUN+="/usr/local/bin/lock.sh"
호출하는 스크립트는 lock.sh
다음과 같습니다.
#!/bin/bash
/usr/bin/gnome-screensaver-command --lock
누구든지 나를 도와줄 수 있나요?
답변1
systemd를 사용하는 배포판에 있다고 가정해 보겠습니다. 그렇다면 ...
이거 봐요페이지제거와 관련된 특정 이벤트(여러 개가 있음)와 일치하도록 규칙에 넣을 주요 장치 정보를 가져오는 방법에 대한 정보를 얻은 다음 규칙의 RUN 부분에 넣습니다 /usr/bin/loginctl lock-sessions
. udev 규칙을 다시 로드하고 키를 꺼내면 화면이 잠기고 해당 시스템의 모든 세션도 잠깁니다.
잠그려면하나세션을 사용하려면 특정 세션 ID를 찾아 해당 ID만 잠가야 하지만 루트가 있으면 전체 머신을 단독으로 사용할 수 있습니다. 모든 세션을 잠그는 것은 대부분의 경우 문제가 되지 않습니다.
그리고 당신은 끝났습니다.
답변2
가장 가능성 있는 설명은 gnome-screensaver-command가 udev가 제공하는 컨텍스트에서 실행될 때 아무 것도 모른다는 것입니다.누구의화면 보호기 켜짐어느 디스플레이명령을 수행해야 합니다. 사용자 계정에서 실행되지 않으며 X 사용자 세션 전체에 전파되는 환경 변수가 없습니다.
다음을 수행할 수 있는 접근 방식~할 것 같은작동하게 되다:
- 사용자에게 su로 gnome-screensaver-command를 실행하십시오.
- DISPLAY 환경 변수가 X 세션 내의 터미널에 있는 것과 동일한 값으로 설정되어 있는지 확인하십시오.
- X 세션에 대한 연결 권한이 설정되었는지 확인하세요. xauth 및/또는 xhost를 조작해야 합니다. 자세한 내용은 정확한 설정에 따라 다릅니다.
문제를 더 자세히 설명하려면: gnome이 인프라로 사용하는 X11은 "다양한 독립 세션(다양한 사용자 계정이 로그인되어 있거나 기능 키를 통해 전환 가능하거나 다른 모니터 및 마우스/키보드에 연결될 수 있음)"과 같은 시나리오를 허용합니다. "("Multiseat") 및 "실제 세션은 모니터 및 HID 장치가 연결된 컴퓨터와 다른 컴퓨터에서 실행되고 있습니다."(여기서는 "XDMCP"가 키워드입니다). "하나의 세션, 하나의 사용자"는 실제로 가능한 사용 사례 중 하나일 뿐이며, 해당 세션에 속하지 않고 해당 세션의 모든 것을 방해하는 명령이 올바르게 반응하는 방법을 알 수 있는 유일한 사례입니다. 그러나 내장된 특별한 조항은 없습니다. 그 경우에는.
답변3
맨페이지에는 다음과 같이 나와 있습니다.
RUN{type} ... This can only be used for very short-running foreground tasks. Running an event process for a long period of time may block all further events for this or a dependent device. Starting daemons or other long-running processes is not appropriate for udev; the forked processes, detached or not, will be unconditionally killed after the event handling has finished.
따라서 udev-rule에서는 이 작업을 수행할 수 없습니다. 그러나 udev 규칙을 사용하면 로그인할 때 시작하는 다른 프로그램과 통신할 수 있으며, 그러면 화면 보호기가 켜집니다. 이는 또한 해당 프로그램에 올바른 DISPLAY, 권한 쿠키 등을 제공하는 문제를 해결합니다.
또한 두 명 이상의 사용자가 로그인하여 X를 사용하는 경우(물리적으로 여러 화면이 있거나 원격으로) 발생하는 문제를 해결합니다. X는 많은 사람들이 모르고 있더라도 이를 허용하도록 명시적으로 작성되었기 때문입니다. 이 기능을 사용하지 마세요.