얼마 전 디스플레이 관리자 독립 게스트 세션을 만드는 아이디어가 있었습니다.
나의 기본 아이디어는 로그인 셸을 즉석에서 임시 홈(fe /tmp/guest-XXXXXX
)을 생성하고 이 세션을 해당 홈에 할당하는 사용자 정의 프로그램으로 변경하는 것이었습니다. 사용자가 로그아웃하면 해당 디렉터리가 다시 제거됩니다. 내가 겪은 문제는 다음과 같습니다. 홈을 설정해야 /etc/passwd
하고 문제 없이 HOME 환경 변수를 덮어쓸 수 있지만 응용 프로그램은 passwd
적어도 그래픽 환경에서 여전히 환경 변수 대신 홈 세트를 사용하는 것 같습니다. . passwd
세션이 시작될 때까지 그것에 대해 모르기 때문에 집을 설정할 수 없습니다 .
내가 생각해낸 기본 논리는 다음과 같습니다.
- 로그인 쉘이 시작되었습니다
- 임시 집이 만들어졌습니다.
- HOME이 임시 집으로 설정되었습니다.
- 진짜 껍질이 갈라졌다
- 실제 쉘이 종료된 후 임시 홈은 제거됩니다.
이것은 su
사용자가 로그인했을 때 작동하는 것처럼 보이지만 그래픽 세션을 실행한다는 것은 모든/모든 프로그램이 시작된 홈 세트를 사용한다는 것을 의미합니다 passwd
.
그래픽 세션이 활성화된 동안/즉시 사용자 홈을 변경할 수 있습니까? 그래픽 세션이 작동하는 방식에 대한 아키텍처에서 뭔가를 간과했나요?