Mac OS X - Cómo vincular / inicio a / Usuarios

14

Para aquellos de nosotros que incursionamos en pingüinos y manzanas, parece que vale la pena poder usar / rutas de inicio fuera de su hábitat o para esos casos extraños en los que el valor puede haberse sincronizado en algún lugar a lo largo de la línea en algún archivo uso en ambas máquinas.

anthonyryan1
fuente
66
~usernamese expande a su directorio de inicio independientemente de Mac OSX o Linux.
nohillside
1
Soy consciente de esto, pero algunas aplicaciones multiplataforma guardan rutas absolutas. Un ejemplo es Sublime Text 2.
anthonyryan1
1
De hecho, solo se ~expande a su directorio de inicio. ¿Puede aclarar en su pregunta si desea hacer un enlace simbólico a su directorio de inicio de usuario (es decir /Users/[username]) o, de hecho, al directorio de usuario ( /Users/) que contiene directorios separados para todos los usuarios de la máquina?
cleverbit

Respuestas:

19

sudo ln -s /Users /homefuncionará con una configuración adicional, pero no creo que sea una buena idea, ya que debe acceder a su hogar a través ~de shell o $HOME. También /homepodría ser un estándar de Linux y a menudo se usa en Unix, pero no siempre es mejor confiar en información que garantiza que no funcionará, algo que solo funciona la mayor parte del tiempo si todos han seguido una convención.

Para hacer el sudo ln -s /Users /hometrabajo, siga estos pasos (de los comentarios):

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
usuario151019
fuente
77
Primero edite /etc/auto_mastery comente la línea de inicio. Luego reinicie para liberar el recurso existente / hogar. Luego puede vincular el directorio usando el siguiente. ln -s /Users /home. Hasta que haga esto, simplemente no se le permitirá crear el enlace simbólico ya que el recurso está ocupado.
anthonyryan1
@ARKANSAS. ¿Hay posibles consecuencias negativas de hacerlo (o por qué está allí en primer lugar?). Y no tengo permiso para editarlo incluso como root o después de chmod a + w / etc / auto_master ¿hay alguna otra manera?
Abe
2
-1. Esto resulta en un operation not supportedmensaje
Abe
2
@Abe No lo hace si sigues la dirección de @ AR. Tenga en cuenta que no tiene que reiniciar; puedes correr en su sudo automount -cvlugar.
zigg
@zigg gracias. Pero eso todavía no completa la respuesta. Propondré una edición, ¡no pude votar de todos modos!
Abe
5

Lamento que esta respuesta no sea exactamente autoritativa, ya que nunca lo he hecho yo mismo, aunque he usado un montador automático similar en otros sistemas Unix, pero aquí tengo mi comprensión de lo que /homese usa en OS X.

Entonces, sigamos el rastro:

Si primero escribe mountTerminal para mostrar monturas activas, verá esta línea:

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

autofslos mapas se definen en /etc/auto_master, y /homea su vez se define específicamente en /etc/auto_home. Si echas un vistazo /etc/auto_home, verás esta línea:

+/usr/libexec/od_user_homes

Siga el rastro un paso más hasta la od_user_homespágina de manual , y encontrará un programa cuyo propósito es tomar un nombre de usuario, buscarlo en Open Directory y devolver una URL al directorio de inicio de ese usuario. Si lees auto_masteren su página de manual , encontrarás que el uso de un programa ejecutable para un mapa da como resultado que se llame a ese programa para buscar una URL para montar, que a su vez está montada en su lugar.

La aplicación prevista parece ser que, si su Mac está conectada a un servicio de directorio, /home/jdoeesto provocará que el montador automático monte jdoeallí el directorio de inicio.

En base a esto, parece lógico concluir que si no tiene la intención de conectar su Mac a un servicio de directorio, probablemente esté bien eliminando el /homemontaje automático como se detalla en este comentario . Sin embargo, no sé cómo las futuras actualizaciones del sistema operativo lidiarán con esto.

zigg
fuente
1
Me gusta usar el montador automático, en lugar de deshabilitarlo. Entonces, dejaría que el montador automático montara / Users / $ USER en / home / $ USER. Me pregunto si es tan simple como reemplazar esa línea en / etc / auto_home con algo como "+ / bin / echo / home / $ 1", o si desea un manejo adecuado de errores, cree un script que reproduzca lo que hace od_user_homes
Tim B
@TimB Pensamiento interesante. Sin embargo, después de haber jugado un poco con él, no estoy completamente seguro de que pueda especificar una ruta local automountd. Parece posible hacer NFS, SMB y AFS.
zigg
No sé si eso funciona en Linux, pero fue lo que siempre hice en Solaris. El directorio real era / export / home / $ USER, y había una configuración estándar para montarlo automáticamente en / home / $ USER. De hecho, parece que ahora es la configuración estándar en Solaris 11.x según blogs.oracle.com/observatory/entry/automounted_home_directory
Tim B
1
Solo miré rápidamente. Ni siquiera necesita imitar el mapa ejecutable od_user_homes. Eso es solo para soportar OD. Es posible el montaje automático ordinario de / Users / $ USER en / home / $ USER. Se muestra en la página de manual de auto_master, aunque el ejemplo allí muestra montajes NFS remotos en lugar de directorios locales, también debería funcionar localmente.
Tim B
Podría haber estado haciendo algo mal, pero intenté configurar una ruta local donde podría usar un montaje NFS y recibí un Input/output errormensaje al intentarlo cd. Según mi lectura, parecía que solo podía usar NFS, SMB o AFS, como dije. Pero tal vez deberíamos llevar esta línea de experimentación a otra parte ...
zigg
2

No sirve de nada /home. OS X, como varias otras versiones de Unix, tiene una ubicación única para el usuario. En Linux está en /home/user, y en OS X está en /Users. Es por esto que es una buena práctica utilizar la " ~" taquigrafía o la variable de entorno $HOME.

Si bien puede crear un enlace simbólico al directorio base / de inicio del usuario /Users/[username]con el siguiente comando:

ln -s ~ /foo

No funcionará crear un enlace llamado /homeya que ya hay un directorio (n sin usar) con ese nombre en la raíz del sistema.

Cleverbit
fuente
1
Exactamente. He estado en otros sistemas tipo Unix que usaban otras convenciones para directorios de inicio por varias razones, por ejemplo, /export/home/usernameen Solaris. Es una mala práctica asumir /home/usernameque funcionará. Los programas que buscan directorios principales deberían usar getpwnamo getpwuid.
zigg
1
Estoy totalmente de acuerdo en que es una mala práctica que los programas asuman su existencia, pero eso no soluciona que a veces el software no se desarrolle de manera competente.
anthonyryan1
Entre las monturas en mi caso y otras: map auto_home on /home (autofs, automounted, nobrowse)... aunque no sé el origen de esa montura, debería estar en desacuerdo con "no sirve para /home".
Graham Perrin
Lo siento debería haber sido más claro: solo significa /homeque aparentemente está reservado, pero no se usa en OSX, no es que no tenga sentido usarlo;)
cleverbit
@richarddas Recibo el mismo operation not supportederror sudo ln -s /Users/username /home/usernameque el que tengo sudo ln -s /Users /home. La solución provista por @AR funciona (comente la /homelínea /etc/auto_mastery reinicie).
Abe
1

No veo ninguna razón para no renombrar el directorio / home (en caso de que me equivoque) y crear un enlace simbólico desde / home a / Users (o, como en mi máquina, / Volumes / Users desde mi sistema ¡El disco es para el sistema, maldita sea!)

Solía ​​trabajar como administrador de sistemas, en un departamento universitario con 11 sabores de Unix. Teníamos todo tipo de enlaces simbólicos en el árbol de directorios global para que el sistema de archivos hiciera lo correcto, y los scripts se acercaran lo más posible a trabajar en todas partes. Te encuentras con algunas trampas, pero si tus dedos están acostumbrados a escribir / home / foo y un enlace simbólico pospone el reentrenamiento del trabajo para tus dedos, ve hacia adelante.

Del mismo modo, algunos linuxen ya tendrán directorios de inicio como / usr / home.

Un lugar donde trabajé tenía los directorios principales de / Users / {group} / {username} como protección parcial contra los estudiantes que se arrastraban por los archivos de los profesores si el profesor no tenía cuidado con sus permisos. El directorio de usuarios se había ejecutado pero no se habían establecido bits de lectura, y los directorios del grupo solo podían leerse los miembros del grupo.

(Todo esto en la ilustración, hay muchas maneras de privar a este felino en particular de su piel.

Una posible trampa: comprueba que la máquina del tiempo no termine haciendo dos copias de todo. No sé cómo TM trata los enlaces simbólicos. Si lo hace, agregue / home a la lista de exclusión de TM.

Sherwood Botsford
fuente
1
Si algo o alguien configura un modo inapropiado o ACL para su alternativa, /Usersentonces las rutinas familiares para reparar los permisos probablemente no harán las correcciones necesarias. Por lo tanto, recomiendo que /Userssea ​​como lo instaló Apple: un directorio, no un enlace simbólico.
Graham Perrin
0

Intenté esto antes y lo puse a funcionar durante aproximadamente una semana hasta que reinicié ...

No puedes simplemente hacer un enlace simbólico /homea /Users. De hecho, ni siquiera puedes eliminarlo /home.

Si logra eliminar /home, volverá a aparecer después de reiniciar.

Si se muda /homea /home.old, y enlace simbólico /home, se elimina el enlace simbólico /home.

Puede hacer que esto funcione mientras su Mac no se bloquee o reinicie.

Cuando reinicias, ¡todo desaparece!

Cuando reinicia, Mac OS X parece pensar que está creando un nuevo usuario, por lo que sobrescribirá todas sus preferencias de usuario en su /Users/usernamedirectorio anterior.

Como copiaste todo /home/username, esperas ver tu nuevo directorio de inicio cuando lo hagas ls /homedespués de reiniciar. En cambio, no obtienes NADA !!! Es como si nunca hubiera existido.

En mi caso, estuve enloqueciendo durante unos 30 minutos, luego arranqué en modo de usuario único para ver si se podía hacer algo. Estaba pensando que podría obtener un archivo de registro o intentar iniciar una utilidad de reparación.

En modo de usuario único, mi directorio de inicio estaba allí. Apple oculta intencionalmente cualquier directorio recién creado /homedel usuario cuando está en modo multiusuario. Esta es una característica de diseño intencionalmente malvada.

Apple es cojo y desalienta cualquier tipo de pirateo de su sistema operativo. ¿Qué tipo de característica de diseño es esa? Apple oculta el contenido del /homedirectorio recién creado . ¡No hay absolutamente ninguna razón legítima para que Apple elimine automáticamente el /homedirectorio ... o cualquier directorio creado por el usuario!

En este caso, están montando un directorio sobre su directorio / home ... ocultándolo efectivamente.

Si realmente está decidido a usarlo en /homelugar de hacerlo /Users, es posible que pueda evitarlo escribiendo un script para configurar todo en cada arranque.

Además, debo mencionar que debería poder usar algún otro directorio que no /homesea ​​un reemplazo /Usersporque solo /homeestá prohibido.

Si usa bash, tendrá que establecer algunas de las variables de entorno ... a saber: CD_HOMEy HOME.

Deseo agregar eso ... aunque no puede desmontar o forzar el desmontaje /home, puede montar un disco encima /home. Todo esto montado encima de "auto_home".

Pude montar el disco de recuperación encima con /homeéxito ... tal vez así es como se puede hacer.

Tim
fuente
TL / DR; La personalización a prueba de reinicio es posible utilizando la respuesta mejor calificada
MarkHu