echo $HOME
apenas imprimirá /home/user
. Mas no meu sistema, /home
não está montado /
e nem é sua própria partição.
# shared linux data partition, `/home` is here
UUID=a89334f7-59b7-4d04-b89b-a5a30c379644 /mnt/linux_data ext4 defaults 1 2
O diretório inicial é montado usando uma montagem vinculada,
# bind mount /home to directory to a directory on /linux_data
/mnt/linux_data/01_centos /home none bind 0 0
Clicando no ícone do diretório inicial no Caja, a barra de localização indica /home/user
. Mas esse diretório deveria ser /mnt/linux_data/01_centos/user
o que existe naquele local. Posso navegar /mnt/linux_data/01_centos/user
passando pelo /root
ícone no Caja, mas gostaria de alguns meios para imprimir o caminho completo para o que o sistema operacional acredita ser /home
.
Responder1
$HOME
está definido para o que está disponível /etc/passwd
para o usuário. Para ver por si mesmo, crie um diretório chamado /opt/username
para um usuário, torne-o o proprietário e use-o vipw
para alterar sua página inicial para /opt/username
in /etc/passwd
. Faça login como usuário e use pwd
e você verá que eles estão dentro /opt/username
e isso $HOME
se expande para /opt/username
.
Se você usar o comando grep username /etc/passwd
ou getent passwd username
, verá que a página inicial está definida como /home/username
e não /mnt/linux_data/01_centos/user
. No que diz respeito ao sistema operacional, a casa é, de fato, /home/username
independentemente de outro sistema de arquivos estar montado lá. Seu sistema está funcionando exatamente como deveria.
Para esclarecer o LDAP, se houver usuários que se autenticam via LDAP, seus diretórios pessoais serão designados no servidor LDAP, que geralmente é o Active Directory. Você ainda poderá vê-lo getent passwd
e se for alterado lá, a $HOME
variável refletirá isso.