Mac OS X - Como fazer o link simbólico / home para / Usuários


14

Para aqueles de nós que brincam de pinguins e maçãs, parece muito útil poder usar caminhos de origem / fora do habbit ou para aqueles casos estranhos em que o valor pode ter sido sincronizado em algum lugar ao longo da linha em algum arquivo que você use nas duas máquinas.


6
~usernameexpande para o seu diretório pessoal independentemente do Mac OSX ou Linux.
nohillside

1
Estou ciente disso, mas alguns aplicativos de plataforma cruzada salvam caminhos absolutos. Sendo um exemplo Sublime Texto 2.
anthonyryan1

1
De fato, apenas se ~expande para o seu diretório pessoal. Você pode esclarecer na sua pergunta se deseja vincular o diretório inicial do usuário (ou seja, /Users/[username]) ou de fato o diretório do usuário ( /Users/), que contém diretórios separados para todos os usuários da máquina?
Cleverbit

Respostas:


19

sudo ln -s /Users /homefuncionará com configurações adicionais, mas não acho que seja uma boa ideia, pois você deve acessar a home via ~shell ou $HOME. Também /homepode ser um padrão Linux e frequentemente usado no Unix, mas nem sempre é tão melhor confiar em informações que garantem que não funcionam algo que funciona apenas na maioria das vezes se todos mantiverem uma convenção.

Para fazer o sudo ln -s /Users /hometrabalho, siga estas etapas (nos comentários):

EDITOR=nano sudo -e /etc/auto_master
# add a "#" at the start of the line beginning with /home
# save changes
sudo automount -cv
sudo ln -s /Users /home

7
Primeiro edite /etc/auto_mastere comente a linha inicial. Em seguida, reinicie para liberar o recurso existente / doméstico. Em seguida, você pode desvincular o diretório usando o seguinte. ln -s /Users /home. Até você fazer isso, você simplesmente não poderá criar o link simbólico, pois o recurso está ocupado.
precisa

@AR. existem conseqüências negativas em potencial (ou por que existe em primeiro lugar?). E eu não tenho permissão para editá-lo, mesmo como root ou após chmod a + w / etc / auto_master, existe outra maneira?
Abe

2
-1. Isso resulta em uma operation not supportedmensagem
Abe

2
@ Abe Não se você seguir a direção da @ AR. Observe que você não precisa reiniciar; você pode correr sudo automount -cv.
zigg

@zigg thanks. Mas isso ainda não faz a resposta completa. Vou propor uma edição - eu não poderia votar de qualquer maneira!
Abe

5

Lamento que esta resposta não seja exatamente autorizada, pois nunca fiz isso pessoalmente - embora eu tenha usado um montador de automóveis semelhante em outros sistemas Unix - mas aqui está o meu entendimento sobre o que /homeé usado no OS X.

Então, vamos seguir a trilha:

Se você digitar o mountTerminal pela primeira vez para mostrar montagens ativas, verá esta linha:

map auto_home on /home (autofs, automounted, nobrowse)

autofsmapas são definidos em /etc/auto_mastere, /homepor sua vez, são definidos especificamente em /etc/auto_home. Se você der uma olhada /etc/auto_home, verá esta linha:

+/usr/libexec/od_user_homes

Siga a trilha mais um passo para a od_user_homespágina de manual e você encontrará um programa cujo objetivo é obter um nome de usuário, procurá-lo no Open Directory e retornar um URL para o diretório inicial do usuário. Se você ler sobre auto_mastera sua página man , você vai achar que usando um programa executável para um mapa resulta em que o programa está sendo chamado para procurar uma URL para montar, o que por sua vez é montada no local.

O aplicativo pretendido parece ser que, se o seu Mac estiver conectado a um serviço de diretório, isso /home/jdoefará com que o montador automático monte jdoeo diretório inicial do local.

Com base nisso, parece lógico concluir que, se você não pretende conectar seu Mac a um serviço de diretório, provavelmente está bem removendo a /homemontagem automática conforme detalhado neste comentário . Mas não sei como as futuras atualizações do sistema operacional irão lidar com isso.


1
Eu gosto de usar o montador automático, em vez de desativá-lo. Então eu deixaria o montador automático montar / Users / $ USER em / home / $ USER. Gostaria de saber se é tão simples quanto substituir essa linha em / etc / auto_home por algo como "+ / bin / echo / home / $ 1" ou se você deseja um tratamento de erros adequado, crie um script que replique o que od_user_homes faz
Tim B

@TimB Pensamento interessante. Tendo brincado um pouco, não tenho certeza absoluta de que você possa especificar um caminho local que automountdserá tratado. Parece possível fazer NFS, SMB e AFS.
zigg

Não sei se isso funciona no Linux, mas era o que eu sempre fazia no Solaris. O diretório real era / export / home / $ USER, e havia uma configuração padrão para montá-la automaticamente em / home / $ USER. Na verdade, parece que agora é a configuração padrão no Solaris 11.x acordo com blogs.oracle.com/observatory/entry/automounted_home_directory
Tim B

1
Eu apenas olhei rapidamente. Você nem precisa imitar o mapa executável od_user_homes. Isso existe apenas para apoiar o OD. A montagem automática comum de / Users / $ USER em / home / $ USER é possível. É mostrado na página do manual auto_master, embora o exemplo lá mostre montagens remotas do NFS em vez de diretórios locais, ele deve funcionar localmente também.
Tim B

Eu poderia estar fazendo algo errado, mas tentei configurar um caminho local onde pudesse usar uma montagem NFS e recebi um Input/output errorao tentar cd. Pela minha leitura, parecia que eu só podia usar NFS, SMB ou AFS, como eu disse. Mas talvez devêssemos tomar essa linha de experimentação em outros lugares ...
zigg

2

Não adianta /home. O OS X, como várias outras versões do Unix, tem um local único para o usuário. No Linux, está /home/user, e no OS X, está /Users. É por isso que é uma boa prática usar a abreviação " ~" ou a variável de ambiente $HOME.

Enquanto você pode criar um link simbólico para o diretório base / home do usuário, /Users/[username]use o seguinte comando:

ln -s ~ /foo

Não funcionará para criar um link nomeado, /homepois já existe um diretório (n não utilizado) com esse nome na raiz do sistema.


1
Exatamente. Já estive em outros sistemas do tipo Unix que usaram outras convenções para diretórios pessoais por vários motivos, por exemplo, /export/home/usernameno Solaris. É uma prática ruim assumir /home/usernameque funcionará. Os programas que procuram diretórios pessoais devem usar getpwnamor getpwuid.
zigg

1
Concordo plenamente que é uma prática recomendada que os programas assumam sua existência, mas isso não resolve que às vezes o software não é desenvolvido de maneira competente.
usar o seguinte

Entre as montarias no meu caso e em outras: map auto_home on /home (autofs, automounted, nobrowse)… embora eu não conheça a origem dessa montaria, devo discordar de "não adianta /home".
Graham Perrin

Desculpe deveria ter sido mais clara: só quis dizer /homeé, aparentemente, reservados, mas não utilizado em OSX, não que não há nenhum ponto de usá-lo;)
cleverbit

@richarddas Eu recebo o mesmo operation not supportederro do sudo ln -s /Users/username /home/usernameque de sudo ln -s /Users /home. A solução fornecida pelo @AR funciona (comente a /homelinha /etc/auto_mastere reinicie).
Abe

1

Não vejo nenhum motivo para renomear o diretório / home (caso esteja errado) e criar um link simbólico de / home para / Users (ou, como na minha máquina, / Volumes / Users desde o meu sistema disco é para sistema, caramba!)

Eu trabalhava como administrador de sistemas, em um departamento universitário com 11 tipos de unix. Tínhamos todos os tipos de links simbólicos na árvore de diretórios global para que o sistema de arquivos fizesse a coisa certa e os scripts chegavam o mais próximo possível do trabalho em qualquer lugar. Você se depara com algumas dicas, mas se seus dedos estão acostumados a digitar / home / foo e um link simbólico adia o trabalho de reciclagem de seus dedos, fique atento.

Da mesma forma, alguns linuxen já terão os diretórios Home como / usr / home.

Um local em que trabalhei tinha diretórios pessoais de / Users / {group} / {username} como uma proteção parcial contra estudantes que vasculhavam arquivos de professores, se o professor não tivesse cuidado com suas permissões. O diretório Users tinha executado, mas nenhum bit de leitura foi definido, e os diretórios do grupo eram legíveis apenas para os membros do grupo.

(Tudo isso na ilustração, existem muitas maneiras de privar esse felino em particular de sua pele.

Um possível problema: verifique se a máquina do tempo não acaba fazendo duas cópias de tudo. Não sei como a TM trata os links simbólicos. Se isso acontecer, adicione / home à lista de exclusões da TM.


1
Se algo ou alguém definir um modo ou ACL inadequado para sua alternativa /Users, as rotinas familiares para reparar permissões provavelmente falharão ao fazer as correções necessárias. Portanto, recomendo que /Usersseja instalado pela Apple: um diretório, não um link simbólico.
Graham Perrin

0

Eu tentei isso antes e trabalhei por cerca de uma semana até reiniciar ...

Você não pode simplesmente ligar /homepara /Users. Na verdade, você não pode nem remover /home.

Se você conseguir remover /home, ele reaparecerá após a reinicialização.

Se você mover /homepara /home.olde o link simbólico /home, ele removerá o link simbólico /home.

Você pode ter isso funcionando enquanto o seu mac não falhar ou reiniciar.

Quando você reinicia, tudo desaparece!

Quando você reinicia, o Mac OS X parece pensar que está criando um novo usuário, substituindo todas as suas preferências de usuário no /Users/usernamediretório antigo .

Desde que você copiou tudo para /home/username, espera ver o seu novo diretório inicial ao fazê- ls /homelo após a reinicialização. Em vez disso, você não obtém NADA !!! É como se nunca tivesse existido.

No meu caso, fiquei em pânico por cerca de 30 minutos, depois iniciei no modo de usuário único para ver se algo poderia ser feito. Eu estava pensando em conseguir um arquivo de log ou tentar iniciar um utilitário de reparo.

No modo de usuário único, meu diretório pessoal estava lá. A Apple oculta intencionalmente todos os diretórios criados recentemente sob /homeo usuário quando no modo multiusuário. Este é um recurso de design intencionalmente maligno.

A Apple é manca e desencoraja todo e qualquer tipo de invasão de seu sistema operacional. Que tipo de recurso de design é esse? A Apple oculta o conteúdo do /homediretório recém-criado . Não há absolutamente nenhuma razão legítima para a Apple remover automaticamente o /homediretório ... ou qualquer diretório criado pelo usuário!

Nesse caso, eles estão montando um diretório no seu diretório / home ... ocultando-o efetivamente.

Se você estiver realmente determinado a usar em /homevez de /Users, poderá contornar isso escrevendo um script para configurar tudo a cada inicialização.

Além disso, devo mencionar que você deve poder usar outro diretório que não /homesubstitui, /Usersporque apenas /homeé banido.

Se você usar o bash, terá que definir algumas variáveis ​​de ambiente ... ou seja: CD_HOMEe HOME.

Gostaria de acrescentar que ... embora você não possa desmontar ou forçar a desmontagem /home, você pode montar um disco em cima /home. Tudo isso montado em cima de "auto_home".

Consegui montar o disco de recuperação em cima do /homesucesso ... talvez seja assim que isso possa ser feito.


TL / DR; personalização re-prova-boot é possível usando a resposta mais votadas
MarkHu
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.