프로그램은 $HOME 이외의 홈 디렉토리를 어떻게 감지합니까?

프로그램은 $HOME 이외의 홈 디렉토리를 어떻게 감지합니까?

/home나는 때때로 아침에 시작하지 못하는 파일 서버가 있는 조직에서 일하고 있습니다 . 여전히 콘솔에 로그인할 수는 있지만 비슷한 오류 메시지가 나타납니다 $HOME not available, using /. 이 경우 내 해결책은 다음과 같습니다.

cd /tmp
mkdir home
chmod 700 home
export HOME=/tmp/home
# wget a copy of my "emergency" rc files that I keep online
# xinit, twm etc. 

따라서 웹 브라우저를 통해 여전히 이메일을 읽을 수 있으며, 파일 서버가 장기간 다운되면 gitlab의 현재 프로젝트를 /tmp에서 확인하고 계속 진행합니다.

Xterm과 twm은 매개 변수 없이 $HOME임시 설정을 존중하고 원활하게 작동하며 bash에서도 잘 작동하는 것 같습니다. 아니요. 여전히 서비스를 제공할 수 없다고 불평하고 있습니다. (Chromium은 실행되지만 시작하면 여전히 dbus가 존재하지 않는 /home에 대해 짜증을 냅니다.)cd~chromium-browser/home/organisation-specific-stuff/my-username--user-data-dir=/tmp/home/chromium

내 질문:

  • 그 외에도 프로그램이 "홈 디렉터리"를 참조하는 다른 방법은 무엇 $HOME이며 일부 프로그램이 다른 것보다 하나를 선택하는 데 대한 타당한 이유(예: 보안 관련)가 있습니까?

  • 예를 들어 chromium, dbus를 일시적으로 사용하도록 지시하는 방법이 있습니까 /tmp/home? 루트 권한이 부족하여 [1]의 솔루션을 사용할 수 없습니다. 같은 이유로 chroot불가능해 보입니다. 아니면 이것은 어리석은/위험한 일입니까?

그것이 차이가 있다면 내 시스템은 "정확히" Ubuntu입니다.

[1]임시로 다른 디렉토리를 홈 디렉토리로 사용

답변1

귀하의 질문이 제 관심을 불러일으키지만 아직 준비된 답변이 없습니다. 내가 시도한 Unix, Linux 또는 *BSD에는 "홈 디렉토리"와 관련된 시스템 호출이 없습니다. 사용자의 홈 디렉토리를 이해하는 Linux 커널에 대해 Google에서 검색할 수 없습니다. 따라서 나는 value가 $HOME"홈 디렉토리"를 결정하는 쉘의 공식 문서 소스라고 믿습니다. 로그인 프로그램은 사용자의 쉘을 분기하고 실행할 때의 로그인 프로그램을 기반으로 설정됩니다 HOME./etc/passwd

알다시피, 값이 $HOME디렉토리 이름과 일치하지 않으면 대부분 쉘 편의성 측면에서 상황이 약간 지저분해집니다. 그러나 실제로는 완전히 깨지는 것은 없습니다. 여전히 대부분 로그인 쉘을 사용할 수 있습니다. 나는 설정을 실험해 보았다 export HOME=/var/tmp. bash이 점에 대해서는 신경 쓰지 않는 것 같으며 cd ~직접 /var/tmp로 이동합니다.

관련 정보