
GDK_NATIVE_WINDOWS
수정을 위해 호출되는 환경 변수를 설정해야 합니다.Ubuntu의 Eclipse 버튼 문제. 환경 변수를 설정하기 위해 다음 줄을 ~/.pam_environment
.
GDK_NATIVE_WINDOWS DEFAULT=true
echo $GDK_NATIVE_WINDOWS
놀랍게도 터미널에 있을 때 환경 변수가 설정되지 않습니다 . 그러나 내가 나열한 다른 모든 환경 변수는 ~/.pam_environment
올바르게 설정되었습니다. 게다가 tty(예: )로 전환하면 Alt+Ctrl+F1
환경 변수가 올바르게 설정됩니다. 에서 이 환경 변수를 설정하는 데 어떤 문제가 있나요 ~/.pam_environment
?
답변1
~/.pam_environment 파일에서 간단한 "key=value" 구문을 따르세요. 기본값, 재정의, ${HOME}, 아무것도 없습니다. 그냥 키=값입니다. 링크한 매뉴얼 페이지는 pam_env.conf 전용입니다. 다른 것을 약속하지 않는 "man 8 pam_env"를 참조하십시오. "이 모듈은 별도의 줄에 간단한 KEY=VAL 쌍을 사용하여 파일을 구문 분석할 수도 있습니다."
그런데 ./pam_environment에 PATH=${PATH}:more/paths와 같은 것을 넣는 것은 PATH가 ${PATH}:more/paths로 설정되므로 거의 모든 로그인 시도를 중단하는 좋은 방법입니다.문자 그대로(거기서 찾을 수 있는 것이 많지 않습니다). 구조하려면 "/bin/mv .pam_environment out_of_the_way"하고 다시 로그인하세요.
답변2
식별한 대로 환경 변수는 ~/.pam_environment
권장 사항에 따라 설정되어야 합니다.https://help.ubuntu.com/community/EnvironmentVariables. 말보다 쉽습니다;)
나와 동일한 구성 격차가 발생했을 가능성이 있습니다. 아래의 암호화된 홈에 대한 해결 방법을 참조하세요.
나의 ~/.pam_environment
:
PATH DEFAULT=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:${HOME}/bin
IDEA_JDK DEFAULT=${HOME}/Applications/jdk
왜 추악한 정적 경로입니까? ${PATH}
나에게는 효과가 없을 것입니다. 나는 이 문제를 해결하려고 여러 번 로그인을 차단했기 때문에 기본값의 보기 흉한 정적 복사본을 고수하고 있습니다. :)
암호화된 홈 폴더에 대한 해결 방법
Ubuntu에서는 다음을 포함하여 릴리스됩니다.우분투 12.04/etc/pam.d/common-session
(Precise Pangolin) Beta 2, 암호화된 홈 디렉토리를 사용하는 경우 이를 로드하려면 수정해야 합니다 ~/.pam_environment
. 이 솔루션은 이전 릴리스에서 작동하는 것으로 보이지만 테스트하지는 않았습니다.
Guenther Montag(g-montag)가 2010년 8월 19일에 썼습니다:
이는 암호화된 홈 디렉토리에 문제가 있는 것 같습니다. 나는 추가했다
세션이 필요합니다 pam_env.so
/etc/pam.d/common-session 끝에서 이제 ~/.pam_environment를 읽습니다. 암호화된 홈 디렉토리가 없는 다른 시스템(또한 10.04)에서는 해결 방법이 필요하지 않습니다. 아마도 내 경우에는 시스템이 해독되기 전에 ~/.pam_environment를 읽으려고 시도할 것입니다.
답변3
GDK_NATIVE_WINDOWS와 DEFAULT=true 사이에 공백이 있습니다. 이것은 링크한 예와 다릅니다.
노력하다:
GDK_NATIVE_WINDOWS=참
답변4
Debian Bullseye(아마도 2013년쯤)와 Ubuntu에서 최소 14.04(Docker 컨테이너에서 테스트됨)로 돌아가면 ~/.pam_environment는 user_endir별로 읽히지 않으며 pam_env의 경우 기본값은 off입니다( 참조 man 7 pam_env
). 다시 활성화하려면 다음 단계를 따르세요.
echo 'session optional pam_env.so user_readenv=1' >> /etc/pam.d/common-session
즉, 대화형 세션(CLI 또는 su와 같은 그래픽 로그인)에 대해 user_reader가 1인 pam_env를 설정합니다.
다음과 같은 이유로 업스트림이 비활성화된 것 같습니다.
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2010-4708" Linux-PAM(일명 pam) 1.1.2 및 이전 버전의 pam_env 모듈은 사용자의 홈 디렉터리에 있는 .pam_environment 파일을 읽습니다. 이로 인해 로컬 사용자가 pam_env PAM에 의존하는 프로그램을 실행하여 의도하지 않은 환경에서 프로그램을 실행할 수 있습니다. 확인하다. "
위의 설명이 나에게 명확하지 않다고 생각했습니다. ~/.pam_environment를 사용하면 사용자가 알지 못하는 사이에 프로그램 환경을 변경할 수 있다는 뜻이라면 홈 폴더의 모든 옵션은 동일합니다(예: ~/.profile, ~/.zprofile). 정신 ~/.profile은 그래픽 로그인 관리자가 읽도록 지시합니다. 그런데 왜 ~/.pam_environment를 제거하고 ~/.profile을 유지합니까?
적절한 방법은 /etc/security/pam_env.conf에서 사용자별로 환경 변수를 설정하는 기능을 갖는 것입니다. 아직 업스트림을 요청하지 않았습니다. 또는 관리자 권한으로만 편집 가능한 모든 옵션.