![배경](https://linux55.com/image/172532/%EB%B0%B0%EA%B2%BD.png)
KeePassXC가 샌드박스된 경우플랫 팩에, 브라우저는 다음과 같은 경우에만 액세스할 수 있습니다.아니요샌드박스 방식, 즉 deb/rpm 패키지 또는 이와 유사한 패키지로 호스트에 설치됩니다. 브라우저를 샌드박스합니다.파이어폭스 브라우저및 KeePassXC – 또는 최소한 보안상의 이유로 실제로 원하는 브라우저와 KeePassXC를 기본적으로 설치하는 것은 불가능합니다.
간단히 말해서:
- 이것은 즉시 작동합니다: Firefox(호스트 설치), KeePassXC(플랫허브의 flatpak)
- 이는 다음이 아닙니다: Firefox(샌드박스), KeePassXC(호스트 또는 샌드박스, 중요하지 않음)
그렇다면 이러한 의사소통이 어떻게 이루어지도록 합니까?
답변1
배경
단지 해결책을 원한다면 이 부분을 건너뛰어도 됩니다. 하지만 궁금한 분들을 위해 우리가 직면한 문제를 설명하겠습니다.
$XDG_RUNTIME_DIR/kpxc_server
KeePassXC는 또한 애플리케이션이 수신 대기할 UNIX 소켓을 생성합니다 .keepassxc-proxy
시작 – 합격지역 메시징–브라우저를 통해(플러그인[email protected]
, 즉 KeePassXC-Browser에 의해 트리거됨) 해당 소켓에서 메시지를 수신하려고 시도합니다.- Firefox가 샌드박스 처리되지 않은 경우 에이전트는 정상적으로 시작할 수 있습니다. 해야 할 유일한 일은 KeePassXC flatpak에 들어가는 것입니다.
- 플랫허브 KeePassXC패치가 있습니다keepassxc-proxy가 다음을 통해 시작되도록 허용합니다. 즉,
flatpak run
이제 Firefox를 실행할 수 있습니다. - 이것이 호스트에 설치된 Firefox가 지금까지 작동하는 이유입니다.
- 이제 Flatpak으로 설치하면 Firefox가 작동하지 않는 이유: 아주 좋습니다 공식Mozilla의 Firefox Flatpak브라우저로서 실제로는 어떤 권한도 없습니다. 예를 들어 파일 시스템에 대한 일반적인 액세스 권한이 없습니다.웹 포털). 어쨌든, 무엇을 하든, 할 수 없는 한 가지 일이 있습니다.호스트 또는 다른 flatpak에서 프로세스 생성.
따라서 우리는 래퍼 스크립트를 만들어 이 문제를 해결할 수 있습니다.flatpak-spawn을 사용하세요Firefox가 샌드박스에서 탈출하도록 하세요. 그러나 Firefox 샌드박스가 얼마나 아름답고 안전하게 구축되었는지를 보면 감히 그러한 기능의 보안을 타협할 수는 없습니다. 결국 보안 관점에서 보면 호스트 컴퓨터에 Firefox를 다시 설치할 수 있습니다. 좋은 소식이 오고 있습니다:이 솔루션은 모든 샌드박스 및 보안 측면을 유지합니다!
그러나 Firefox가 프록시를 실행해야 하는 문제를 해결했지만 아직 더 많은 것이 있습니다. 스포일러 경고, 우리가 해결해야 할 핵심 사항은 다음과 같습니다.
- Firefox를 통해 keepassxc-proxy 실행(해결책: Firefox 샌드박스에서 실행)
- Firefox가 KeePassXC의 소켓에 액세스하도록 허용합니다. 참고: 이 단계에서는 이미 변형인 Firefox(샌드박스), KeePassXC(호스트 설치)를 실행할 수 있습니다.
- KeePassXC flatpak의 UNUX 소켓을 Flatpak 외부의 다른 응용 프로그램에 노출합니다. (해결책: 심볼릭 링크)
현재 해결 방법
v1.2
테스트 환경: Fedora 32, org.mozilla.firefox
flathub의 v75, org.keepassxc.KeePassXC
flathub의 v2.5.4
Firefox를 통해 keepassxc-proxy 실행
- 먼저 가장 나쁜 점은
keepassxc-proxy
Firefox flatpak 내에서 실행되기를 원하기 때문에 바이너리가 필요하다는 것입니다. 우리에게는 좋습니다. 종속성이 많지 않고 독립형 애플리케이션으로 작동합니다.- 그래서 내가 골랐어Rust 프록시 애플리케이션(왜 그러면 안되는 걸까요?
답변2
루크의 대답올바른 길을 가고 있었지만 바꿔야 했어요문제Ubuntu 22.04에서 keepassxc 2.7.1을 사용하려면:
- 이 저장소는 더 이상 사용되지 않습니다.https://github.com/varjolintu/keepassxc-proxy-rust대신에
- 호스트와 flatpak에서 사용할 수 있는 libc 사이에 불일치가 있으므로 정적으로 링크된 바이너리를 만들어야 합니다.
- Flatpak의 관점에서 .json 파일의 경로는 절대 경로여야 합니다.
- 소켓 이름 변경으로 인해 flatpak override 명령을 조정해야 합니다.
날 봐블로그 게시물자세한 지침을 받으세요.
답변3
@decocijo 및 @rugk의 답변에서 영감을 받아 Chrome 기반 브라우저(Vivaldi)에 대한 작업 예제가 있으며 Firefox에 대한 보다 직접적인 접근 방식도 제공합니다.
git clone https://github.com/varjolintu/keepassxc-proxy-rust
cd keepassxc-proxy-rust
# compile
# add deps if needed
sudo dnf install gcc rustup
rustup-init
rustup target add x86_64-unknown-linux-musl
RUSTFLAGS='-C link-arg=-s' cargo build --release --target x86_64-unknown-linux-musl
cp target/x86_64-unknown-linux-musl/release/keepassxc-proxy ~/.var/app/com.vivaldi.Vivaldi/config/vivaldi/NativeMessagingHosts/
# modify flatpaks
sudo flatpak override --filesystem=xdg-run/app/org.keepassxc.KeePassXC:ro com.vivaldi.Vivaldi
sudo flatpak override --filesystem=xdg-run/org.keepassxc.KeePassXC:ro com.vivaldi.Vivaldi
sudo flatpak override --filesystem=/var/home/m8/.var/app/com.vivaldi.Vivaldi/config/vivaldi/NativeMessagingHosts org.keepassxc.KeePassXC
# modify keepassxc browser path
In the KeePassXC UI.
- Tools
- Settings
- Browser Integration
- General
- Enable Browser Integration
- Tick Vivaldi
- Advanced
- Use a custom location
- Chromium
- ~/.var/app/com.vivaldi.Vivaldi/config/vivaldi/NativeMessagingHosts