TL;박사;
weston은 수퍼유저 권한 없이 사용자 weston으로 초기화됩니다.
그러나 애플리케이션에는 일부 su 권한이 필요하며 루트 사용자와 일부 파일을 공유합니다.
웨스턴 사용자가 GUI 실행 파일에 액세스할 수 있는 안전한 Wayland 환경을 구현하는 올바른 방법은 무엇입니까?
문제 설명
백엔드에는 NETLINK 소켓, 세마포어, 스레딩 및 공유 메모리 생성과 같이 루트가 액세스할 수 있거나 일반 사용자가 변경해서는 안 되는 특정 기능에 대한 액세스가 필요합니다( /dev/shm
).
그러나 GUI 응용 프로그램은 공유 메모리, 공유 파일, 세마포어 및 스레드와 같이 루트 사용자가 만든 일부 리소스에 액세스할 수 있어야 합니다.
해결책
루트로 실행
모든 것을 루트로 실행할 수 있지만 이는 안전하지 않습니다.
/etc/init.d/weston
파일을 WESTON_USER=weston
다음에서 변경하십시오 .WESTON_USER=root
하지만,이 이메일에서는 다음과 같이 설명합니다.설명하다:
Weston은 실행 중인 사용자만 액세스할 수 있도록 권한이 있는 소켓을 생성합니다. 이것은 잘 고려된 것이며 인증이 작동하는 방식입니다. 따라서 weston을 루트로 실행한 후 다른 일반 사용자로 연결할 수 없습니다. 실제로,weston을 루트로 실행하면 안 됩니다(모든 GL, 셰이더 컴파일러, 프로토콜 처리 등 포함).. rpi 백엔드에 대한 요구 사항, 즉 weston을 실행하는 데 필요한 액세스 권한이 무엇인지 잘 모르지만, 루트를 열려면 루트가 필요한 그래픽 장치가 있는 경우 처리 방법과 유사하게 weston-launch에서 이 작업을 수행해야 합니다. 리눅스 drm 및 입력 장치 제한 방법.
따라서 루트 사용자를 사용해서는 안 되지만 weston-launch
.Weston 실행은 어떻게 작동합니까? 최신 웨스턴은 사용하지 않는 것 같아요weston-launch
그룹 권한
이러한 공유 리소스를 처리하기 위해 그룹을 만들어야 합니까? 그리고 다른 그룹의 일부 개인 리소스도 있나요? 공유 리소스를 백엔드에서만 변경할 수 있다면 어떻게 될까요?
우리는 변할 수 있어웨스턴 초기화.bb파일에 그룹이 포함되어 있습니다.
능력
권한 확인을 수행하기 위해 기존 UNIX 구현에서는 권한이 있는 프로세스(유효 사용자 ID가 0이고 수퍼유저 또는 루트라고 함)와 권한이 없는 프로세스(유효 UID가 0이 아님)라는 두 가지 유형의 프로세스를 구별합니다. 권한이 있는 프로세스는 모든 커널 권한 검사를 우회하는 반면, 권한이 없는 프로세스는 프로세스 자격 증명(일반적으로 유효 UID, 유효 GID 및 보충 그룹 목록)을 기반으로 전체 권한 검사를 받습니다.
~해야 한다능력사용?
기타 솔루션
다른 해결책은 무엇입니까? 보안 환경에서 이를 구현하는 가장 실현 가능한 방법은 무엇입니까?