깨우기 시 지문이 포함된 시스템 화면 잠금

깨우기 시 지문이 포함된 시스템 화면 잠금

5.18.9-arch1-1 지문 센서: 27c6:63ac Shenzhen Goodix Technology Co., Ltd. Goodix USB2.0 기타

시스템이 최대 절전 모드에서 깨어날 때 bash 스크립트를 실행하는 systemd 서비스를 만들었습니다.

[Unit]
Description=User resume actions
After=hibernate.target

[Service]
User=marc
Type=forking
Environment=DISPLAY=:0
ExecStart=/usr/bin/lock.sh

[Install]
WantedBy=hibernate.target

이것은 lock.sh입니다.

#!/bin/bash
    
thisPid=$$
xsecurelock &
lock=$!

# loop until $lock is gone, or fingerprint is verified
until ! kill -0 $lock || fprintd-verify; do
    echo "FAILURE"
done

#kill the pid for the lock and thisPid
kill $lock
kill $thisPid

이 스크립트는 xsecurelock을 생성하고 해당 pid를 캡처합니다. 그런 다음 fprintd-verify를 실행하고 지문을 성공적으로 읽을 때까지 차단합니다. 그런 다음 스크립트는 xsecurelock과 그 자체를 종료하는데, 이는 중복되는 것으로 알고 있습니다.

systemd 서비스가 제대로 실행되고 있습니다. 깨어난 후 xsecurelock이 생성되지만 지문으로 죽일 수는 없습니다.

lock.sh를 수동으로 실행하면 완벽하게 실행됩니다. xsecurelock이 켜져 있고 지문으로 삭제할 수 있습니다. 그러나 화면을 깨우면(lock.sh를 트리거하는 systemd 파일 트리거) 화면이 xsecurelock으로 잠기고 암호를 입력하여 잠금을 해제할 수 있지만 fprintd-verify가 실패합니다. systemctl 상태는 다음과 같습니다.

Jul 07 12:33:49 manray lock.sh[6630]: failed to claim device: GDBus.Error:net.reactivated.Fprint.Error.PermissionDenied: Not Authorized: ne>
Jul 07 12:33:49 manray lock.sh[4760]: FAILURE
Jul 07 12:33:49 manray lock.sh[6634]: Using device /net/reactivated/Fprint/Device/0
Jul 07 12:33:49 manray lock.sh[6634]: failed to claim device: GDBus.Error:net.reactivated.Fprint.Error.PermissionDenied: Not Authorized: ne>
Jul 07 12:33:49 manray lock.sh[4760]: FAILURE

장치를 청구하기 위해 fprintd-verify를 얻으려면 어떻게 해야 합니까?

편집: 사용자를 루트로 설정하면 systemctl은 다음과 같이 말합니다.

Jul 07 13:14:43 manray systemd[1]: Starting User resume actions...
Jul 07 13:14:43 manray lock.sh[25997]: Authorization required, but no authorization protocol specified
Jul 07 13:14:43 manray lock.sh[25997]: 2022-07-07T17:14:43Z 25997 xsecurelock: Could not connect to $DISPLAY.
Jul 07 13:14:44 manray lock.sh[25998]: Using device /net/reactivated/Fprint/Device/0
Jul 07 13:14:44 manray lock.sh[25998]: ListEnrolledFingers failed: GDBus.Error:net.reactivated.Fprint.Error.NoEnrolledPrints: Failed to dis>
Jul 07 13:14:44 manray lock.sh[25996]: FAILURE

루트로 실행할 때 xsecurelock은 디스플레이를 감지할 수 없으며 지문 센서는 여전히 작동하지 않습니다. 근손가락이 등록되지 않은 것 같아 추가할 수 없습니다.

답변1

해결책은 다음 위치에 새 규칙을 추가하는 것입니다 /usr/share/polkit-1/rules.d/50-net.reactivated.fprint.device.verify.rules.

polkit.addRule(function (action, subject) {
  if (action.id == "net.reactivated.fprint.device.verify") {
    return polkit.Result.YES
  }
})

이 규칙을 사용하면 항상 polkit 인증에 관계없이 fprintd-verify를 실행할 수 있습니다.

나는 이 솔루션이 안전하지 않은 것 같아서 마음에 들지 않습니다.

관련 정보