문제

루트로 실행 해야하는 Linux 용 UI 앱 (GTK 사용)이 있습니다 (읽기 및 쓰기 /dev /sd*).

사용자가 루트 쉘을 열거나 앱을 시작할 때마다 수동으로 "sudo"를 사용하도록 요구하는 대신 앱이 일부 OS 제공 API를 사용하여 루트 권한을 얻을 수 있는지 궁금합니다. (참고 : GTK 앱은 "setuid"모드를 사용할 수 없으므로 여기서는 옵션이 아닙니다.)

여기서 장점은 더 쉬운 워크 플로입니다. 사용자는 기본 사용자 계정에서 루트 터미널을 열고 발사하는 대신 데스크탑에서 내 앱을 두 번 클릭 할 수 있습니다.

OS X가 정확히 제공하기 때문에 이것을 묻습니다. 앱은 OS에 루트 권한으로 실행 파일을 시작하도록 요청할 수 있습니다. OS (앱이 아닌)는 사용자에게 자격 증명을 입력 한 다음 원하는대로 대상을 시작하도록 요청합니다. .

Linux와 비슷한 것이 있는지 궁금합니다 (Ubuntu, EG)

설명:

따라서 PolicyKit의 힌트 후 "/dev/sd ..."블록 장치에 R/W에 액세스 할 수 있는지 궁금합니다. 나는 의사를 이해하기가 매우 어렵다는 것을 알았으므로, 나는 그것을 헛된 것을 이해하기 위해 몇 시간을 보내기 전에 이것이 가능한지 물어볼 것이라고 생각했다.

업데이트:

이 앱은 미지의 Linux 사용자를위한 원격 운영 디스크 수리 도구이며, 해당 Linux Noobs는 Sudo 사용 또는 사용자 그룹 멤버십 변경에 대해 많은 이해가 없으며, 특히 디스크가 방금 행동하기 시작했고 놀라운 경우 . 그렇기 때문에 나는 이와 같은 기술을 피하는 솔루션을 찾는 이유입니다.

도움이 되었습니까?

해결책

단순하지만 지금은 단계적으로 나오는 오래된 방법은 gksu. 여기 GKSU의 미래에 대한 토론입니다.

새로운 방법은 사용하는 것입니다 정책 키트. 이것이 어떻게 작동하는지 잘 모르겠지만 pkexec 명령.

업데이트:

예제 코드를 켜고 있습니다 http://hal.freedesktop.org/docs/polkit/polkit-apps.html, PolicyKit을 사용하여 특정에 대한 승인을 얻을 수있는 것 같습니다. 행위 다음은 설명합니다 .policy 파일 /usr/share/polkit-1/actions. 다른 사용자로서 프로그램을 실행하기위한 조치는 org.freedesktop.policykit.exec. 블록 장치에 직접 액세스하기위한 조치를 찾을 수는 없지만 PolicyKit 문서도 내 뇌를 깨뜨린다는 것을 인정해야합니다.

따라서 아마도 가장 간단한 작업 과정은 권한을 명령 줄 유틸리티로 분리하고 GUI 응용 프로그램에서이를 실행하는 디스크 맨링 코드를 분리하는 것입니다. g_spawn_[a]sync() ~와 함께 pkexec. 그렇게하면 조치를 요청하는 데 귀찮게 할 필요가 없습니다. 어쨌든 전체 GUI 응용 프로그램을 루트로 실행하는 것은 어쨌든 나쁜 연습 일 것입니다.

또 다른 제안은 PolicyKit (David Zeuthen)의 저자에게 직접 문의하는 것입니다. 또는 질문을 GTK-App-Devel 목록에 게시 해보십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top