keepassxc 실행 파일로만 키 파일 액세스를 제한하세요.

keepassxc 실행 파일로만 키 파일 액세스를 제한하세요.

KDBX를 얻을 수 있었으면 좋겠어키 파일(및 루트) 외에는 누구도 액세스할 수 $HOME없도록keepassxc나 자신을 제외하더라도.

내 유일한 해결책은 실행 파일의 비트를 사용 하고 키 파일에 적절한 그룹 멤버십을 제공하는 것이었지만 불행하게도 keepassxc의 GUI는 GTK+ 애플리케이션이므로 또는 비트 setgid가 마음에 들지 않으며 자체 종료가 감지될 때 발생합니다.setuidsetgid

가상 KDBX 볼트 및 키 파일을 사용하여 테스트 환경을 설정하려면 다음을 수행하십시오.

sudo addgroup keepassxc

sudo chgrp keepassxc $(which -P keepassxc)
sudo chmod g+s $(which -P keepassxc)

# to revert back afterwards:
# sudo delgroup keepassxc
# sudo chgrp root $(which -P keepassxc)
# sudo chmod g-s $(which -P keepassxc)

# create test files
keepassxc-cli db-create -p -k key.file test.kdbx
chmod -rwx,g+r key.file
sudo chown root:keepassxc key.file

# access test
keepassxc --keyfile key.file test.kdbx # should succeed
sha256sum key.file                     # should fail

하지만 앞서 말했듯이 keepassxc GUI는 다음과 같이 종료됩니다.

Warning: Ignoring XDG_SESSION_TYPE=wayland on Gnome. Use QT_QPA_PLATFORM=wayland to run on Wayland anyway.

(process:102257): Gtk-WARNING **: 19:45:45.157: This process is currently running setuid or setgid.
This is not a supported use of GTK+. You must create a helper
program instead. For further details, see:

    http://www.gtk.org/setuid.html

Refusing to initialize GTK+.

나는 더 이상 keepassxc를 망치는 것을 거부합니다. 제한된 비트 setu/gid에는 타당한 이유가 있어야 합니다 .

내 접근 방식에 대한 해결책을 알고 있습니까? 바람직합니까?
언급된 도우미에 대한 간단한 템플릿/솔루션이 있습니까? 그냥 큰 타격?
단일 실행 파일에 대한 제한된 파일 액세스 목표를 달성하는 더 좋은 방법이 있습니까?

답변1

약간의 조사 끝에 @muru 덕분에 작동하는 것을 발견했고안전해 보이는해결책.

sudo특정 사용자와 호스트가 특정 명령에 대해 그룹 전환을 수행하도록 허용하는 데 사용됩니다 . keepassxc바이너리의 권한을 변경할 필요가 없습니다 .

그룹 및 키 파일을 설정한 후(위 질문의 코드 블록 참조) 새 sudoers 파일을 만듭니다. 예를 들면 다음과 같습니다.

# creation
echo "$USER $HOSTNAME=(:keepassxc) NOPASSWD:NOEXEC:NOFOLLOW: /usr/bin/keepassxc" \
| sudo tee /etc/sudoers.d/keepassxc

# validation
sudo visudo -sc /etc/sudoers.d/keepassxc

이를 통해 $USER명령은 그룹의 구성원으로서만 실행될 수 있습니다. 명령 문자열은 정확해야 하므로 나중에 keepassxc에 추가 매개변수를 전달하거나 절대 경로를 변경하려면 이를 sudoers 파일에도 반영해야 합니다. 그렇지 않으면 sudo에 의해 거부됩니다./usr/bin/keepassxc(:keepassxc)

권한이 없는 환경에서 keepassxc를 시작하는 마지막 명령은 쉽게 별칭이 될 수 있다는 것 $USER입니다 .sudo -g keepassxc /usr/bin/keepassxc

관련 정보