KDBX를 얻을 수 있었으면 좋겠어키 파일(및 루트) 외에는 누구도 액세스할 수 $HOME
없도록keepassxc
나 자신을 제외하더라도.
내 유일한 해결책은 실행 파일의 비트를 사용 하고 키 파일에 적절한 그룹 멤버십을 제공하는 것이었지만 불행하게도 keepassxc의 GUI는 GTK+ 애플리케이션이므로 또는 비트 setgid
가 마음에 들지 않으며 자체 종료가 감지될 때 발생합니다.setuid
setgid
가상 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