Como os programas detectam o diretório inicial (diferente de $ HOME) [duplicado]

3

Eu trabalho em uma organização onde o servidor de arquivos contendo /home às vezes não inicia na manhã. Ainda posso fazer login no console, mas recebo uma mensagem de erro como $HOME not available, using / . Nesse caso, minha solução alternativa é

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. 

para que eu ainda possa ler e-mails através de um navegador da web e se o servidor de arquivos ficar inativo por muito tempo, verifique meus projetos atuais do gitlab em / tmp e continue lá.

Xterm e twm parecem respeitar $HOME e, felizmente, trabalham na minha configuração temporária, cd sem parâmetros e ~ no bash funcionam bem. chromium-browser não e ainda reclama sobre /home/organisation-specific-stuff/my-username não estar disponível. (O Chromium será executado com --user-data-dir=/tmp/home/chromium , mas o lançamento ainda fará com que o dbus lance um ajuste sobre o inexistente / home).

Minhas perguntas:

  • Quais outras maneiras além de $HOME estão lá para os programas referenciarem o "diretório home", e existem boas razões (por exemplo, implicações de segurança) por que alguns programas escolhem um sobre o outro?

  • Existe uma maneira de saber, por exemplo? chromium, dbus para usar temporariamente /tmp/home ? Eu não posso usar a solução em [1] devido à falta de direitos de root. Pela mesma razão, chroot parece fora de questão. Ou isso é uma coisa estúpida / perigosa de se fazer?

Meu sistema é Ubuntu "preciso" se isso faz diferença.

[1] Temporariamente use outra coisa como diretório pessoal

    
por Bristol 30.09.2014 / 11:30

1 resposta

1

Sua pergunta me intriga e eu não tenho uma resposta pronta. Nenhum Unix, Linux ou * BSD que eu tentei possui uma chamada de sistema relacionada ao "diretório home". Eu não posso pesquisar nada sobre o kernel Linux conhecendo o diretório pessoal do usuário. Então, acredito que o valor de $HOME é a fonte oficial de registro de um shell para descobrir o "diretório inicial". O programa de login define HOME com base no conteúdo de /etc/passwd quando o programa de login forks e executa o shell de um usuário.

Como você percebeu, se o valor de $HOME não corresponder ao nome de um diretório, as coisas ficam um pouco difíceis, principalmente na área de conveniências de shell, mas nada realmente se rompe - você ainda pode use o shell de login. Eu experimentei definindo export HOME=/var/tmp . bash parece não se importar, e cd ~ leva você diretamente para / var / tmp.

    
por 30.09.2014 / 18:01

Tags