É possível redefinir o diretório inicial? por exemplo, para em /ext1/username
vez de /home/username
, ou seja, expandindo ~
para outro diretório (em vez de alterar o diretório inicial real onde os arquivos pessoais dos usuários estão localizados).
(Esta questão é principalmente acadêmica, pois parece uma prática ruim fazê-lo. Também não tenho escolha quanto a usá-lo csh
, apesar de ter lido o Top 10.)
~
para algo diferente do diretório inicial real?~
diretório para outro diretório (não, se eu entendi sua alternativa corretamente, mudar onde os diretórios pessoais de todos os usuários devem estar localizados). Eu não sabia que isso~
era interpretado como uma forma curta de$HOME
, como @michas descreveu em sua resposta.Respostas:
O til
~
é interpretado pelo seu shell. Seu shell interpretará~
como uma forma abreviada de$HOME
.Tente
(echo ~; HOME=foo; echo ~)
. Isso deve primeiro imprimir seu diretório pessoal real e depois "foo", conforme você definir$HOME
.O valor padrão de
$HOME
vem da sua configuração do sistema. Usegetent passwd
para listar todos os usuários conhecidos e seus diretórios pessoais. Dependendo da configuração do sistema, essas entradas podem ser provenientes/etc/passwd
ou qualquer serviço de diretório remoto.Se você deseja redefinir temporariamente seu diretório pessoal, basta definir outro
$HOME
.Se você quiser alterá-lo permanentemente, precisará alterar a entrada da senha, por exemplo, editando manualmente
/etc/passwd
.fonte
csh
na variável relevante é$home
(em minúsculas), e você não podesetenv HOME /ext1/acheong
-Você pode únicaset home=/ext1/acheong
, e que funcionou para mim.)usermod -d
vipw
(ou qualquer GUI fornecida pelo seu sistema operacional) em vez de editar/etc/passwd
diretamente. A edição direta corre o risco de corromper o arquivo, o que pode ser difícil de recuperar.O valor usado
~
é determinado a partir do valor obtido no banco de dados administrativo (getent passwd
), geralmente no/etc/passwd
arquivo, para o diretório inicial de cada usuário definido lá.A sexta coluna deste arquivo é a origem do valor usado quando alguém digita
cd ~
.nsswitch
Você pode ver o que um sistema usaria para o diretório inicial do usuário usando o comando
getent passwd
:O "banco de dados" que os fornece é controlado através do resolvedor de sistemas, definido em
/etc/nsswitch.conf
.Os arquivos acima significam
/etc/passwd
, mas o "banco de dados" pode vir de LDAP, NIS ou outros locais na rede, por exemplo.Mover / Redefinir?
Executar esta operação é um pouco complicado depois que as contas foram criadas. Se você estiver criando contas do zero, é trivial redefinir a localização de um usuário no diretório inicial. Ao executar o
useradd
comando, você pode especificar o local a ser usado para o diretório inicial de um usuário.Exemplo
trecho da página do manual
Para contas existentes?
Isso se torna mais uma operação cirúrgica, pois muitas vezes o caminho do diretório inicial de um usuário é incluído estaticamente nos arquivos de configuração, tornando-o mais complicado.
Exemplo
Eles precisam ser corrigidos ou você precisará fornecer um link
/home/sam
para o novo local/ext1/sam
.Movendo quando "banco de dados" não é
/etc/passwd
Se o sistema estiver obtendo os diretórios pessoais do LDAP, NIS etc., será necessário realizar a realocação nesses sistemas e coordenar a movimentação dos arquivos de
/home/sam
para/ext1/sam
.Referências
fonte
Se o motivo é espalhar os usuários por vários sistemas de arquivos, você também pode usar o
automounter
. E ainda permite que você tenha um diretório "base" diferente para seus usuários.fonte