screen
bash에서 실행 하면 변수 LD_LIBRARY_PATH가 지워집니다. 나는 약간의 독서를했고 이것이 예상되는 것처럼 보이지만 나는 그 주위를 돌아봐야합니다.
해결 방법은 LD_LIBRARY_PATH 선언을에 추가하는 것 ~/.bashrc
입니다. 필자의 경우 LD_LIBRARY_PATH는 셸 시작과 화면을 호출 할 때마다 많이 변경되므로 LD_LIBRARY_PATH 의 현재 값을 screen
세션 으로 가져와야합니다 .
screen
bash에서 실행 하면 변수 LD_LIBRARY_PATH가 지워집니다. 나는 약간의 독서를했고 이것이 예상되는 것처럼 보이지만 나는 그 주위를 돌아봐야합니다.
해결 방법은 LD_LIBRARY_PATH 선언을에 추가하는 것 ~/.bashrc
입니다. 필자의 경우 LD_LIBRARY_PATH는 셸 시작과 화면을 호출 할 때마다 많이 변경되므로 LD_LIBRARY_PATH 의 현재 값을 screen
세션 으로 가져와야합니다 .
답변:
screen
환경 변수를 설정 해제하지 않습니다. 리눅스 자체에 의해 제거된다.
대부분의 시스템에서 /usr/bin/screen
실행 파일은 데이터베이스 를 수정할 수 있도록 그룹 용 setgid 비트 와 함께 설치 됩니다. 또한 setgid 를 사용 하여 소켓 디렉토리 ( )에 대한 액세스를 제어합니다 .utmp
utmp
/var/run/screen/
리눅스, A의 setuid를 (또는 setgid를 ) 프로그램이 실행 된 것입니다 그것은 특정 환경 변수 수신 (포함하지 않는 LD_LIBRARY_PATH
몇 가지 다른 LD_*
변수를하고, HOSTALIASES
그렇지 않으면 당신은 작은 도서관과 트릭을 작성할 수), 가능한 공격 지점을 줄이기 위해 su
또는 sudo
그런 식으로 "향상된"기능을 호출합니다.
에서 setgid 비트를 제거 할 수 screen
있지만 모든 사람이 소켓 디렉토리에 완전히 액세스 할 수 있도록해야합니다 (모드 0777). 그러나 부착 screen
자의 UID 자체도 검사하므로 보안 위험이 없어야 합니다.
그러나, 당신은해야 하지 할 utmp
데이터베이스가 세계 쓰기.
chgrp root $(which screen)
과 같습니다 chmod 777 /var/run/screen
. 이 작은 bash 스크립트로 테스트 할 수 있습니다 while true; do echo $LD_LIBRARY_PATH; sleep 2; done
. 경로가 성공적으로 표시됩니다. 고마워요
당신의에서 .screenrc
, 당신은 사용할 수있는 setenv
화면의 환경에 값을 설정하는 명령을 사용합니다.
setenv LD_LIBRARY_PATH $LD_LIBRARY_PATH_SCREEN
이것은 쉘이 시작되기 전에 설정됩니다. 물론 LD_LIBRARY_PATH_SCREEN
당신이 화면을 시작하기 전에 설정해야합니다.
_SCREEN
하나는 당신의 rc 파일 또는 화면을 시작하는 래퍼 스크립트에서 설정할 수 있습니다.