Mac OS X - Comment créer un lien symbolique / home to / Users

14

Pour ceux d'entre nous qui se familiarisent avec les pingouins et les pommes, il semble très utile d'utiliser les chemins / home hors habbit ou dans les cas étranges où la valeur peut avoir été synchronisée quelque part le long de la ligne dans un fichier que vous utiliser sur les deux machines.

anthonyryan1
la source
6
~usernamese développe dans votre répertoire personnel indépendamment de Mac OSX ou Linux.
nohillside
1
J'en suis conscient, mais certaines applications multiplates-formes enregistrent des chemins absolus. Un exemple étant Sublime Text 2.
anthonyryan1
1
En fait, se ~développe simplement dans votre répertoire personnel. Pouvez - vous s'il vous plaît préciser dans votre question de savoir si vous voulez symlink à votre utilisateur répertoire ( par exemple. /Users/[username]) Ou en fait le répertoire de l' utilisateur lui - même ( /Users/) qui contient des répertoires distincts pour tous les utilisateurs de la machine?
cleverbit

Réponses:

19

sudo ln -s /Users /homefonctionnera avec une configuration supplémentaire, mais je ne pense pas que ce soit une bonne idée car vous devriez accéder à la maison via via ~shell ou $HOME. Il /homepourrait également s'agir d'un standard Linux et souvent utilisé sous Unix, mais il n'est pas toujours préférable de s'appuyer sur des informations dont le fonctionnement est garanti et non quelque chose qui ne fonctionne que la plupart du temps si tout le monde respecte une convention.

Pour faire sudo ln -s /Users /homefonctionner, suivez ces étapes (à partir des commentaires):

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
user151019
la source
7
Modifiez /etc/auto_masteret commentez d'abord la ligne d'accueil. Redémarrez ensuite pour libérer la ressource existante / home. Ensuite, vous pouvez créer un lien symbolique vers le répertoire en utilisant ce qui suit. ln -s /Users /home. Jusqu'à ce que vous fassiez cela, vous ne serez simplement pas autorisé à créer le lien symbolique car la ressource est occupée.
anthonyryan1
@AR. y a-t-il des conséquences négatives potentielles à le faire (ou pourquoi est-ce là en premier lieu?). Et je ne suis pas autorisé à le modifier même en tant que root ou après chmod a + w / etc / auto_master y a-t-il une autre façon?
Abe
2
-1. Il en résulte un operation not supportedmessage
Abe
2
@Abe Ce n'est pas le cas si vous suivez la direction de @ AR. Notez que vous n'avez pas besoin de redémarrer; vous pouvez exécuter à la sudo automount -cvplace.
zigg
@zigg merci. Mais cela ne rend toujours pas la réponse complète. Je proposerai une modification - je n'ai pas pu voter de toute façon!
Abe
5

Je regrette que cette réponse ne fasse pas vraiment autorité, car je ne l'ai jamais fait moi-même - bien que j'aie utilisé un automonteur similaire sur d'autres systèmes Unix - mais voici ma compréhension de ce qui /homeest utilisé sous OS X.

Alors, suivons la piste:

Si vous tapez d'abord mountTerminal pour afficher les montages actifs, vous verrez cette ligne:

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

autofsles cartes sont définies dans /etc/auto_master, et /homesont à leur tour définies spécifiquement dans /etc/auto_home. Si vous regardez /etc/auto_home, vous verrez cette ligne:

+/usr/libexec/od_user_homes

Suivez la piste une étape de plus vers la od_user_homespage de manuel et vous trouverez un programme dont le but est de prendre un nom d'utilisateur, de le rechercher dans Open Directory et de renvoyer une URL vers le répertoire personnel de cet utilisateur. Si vous lisez sur auto_masterà sa page de manuel , vous trouverez que l' utilisation d' un programme exécutable pour un résultat de carte dans ce programme appelé à rechercher une URL à monter, qui est à son tour monté sur place.

L'application prévue semble être que, si votre Mac est connecté à un service d'annuaire, /home/jdoecela entraînera le montage automatique du jdoerépertoire personnel de l'automonteur.

Sur cette base, il semble logique de conclure que si vous n'avez pas l'intention de connecter votre Mac à un service d'annuaire, vous êtes probablement d'accord pour supprimer le /homemontage automatique comme détaillé dans ce commentaire . Je ne sais pas comment les futures mises à jour du système d'exploitation traiteront cela, cependant.

zigg
la source
1
J'aime utiliser l'automonteur plutôt que de le désactiver. Je laisserais donc le montage automatique monter / Users / $ USER sur / home / $ USER. Je me demande si c'est aussi simple que de remplacer cette ligne dans / etc / auto_home par quelque chose comme "+ / bin / echo / home / $ 1", ou si vous voulez une gestion correcte des erreurs, créez un script qui reproduit ce que fait od_user_homes
Tim B
@TimB Pensée intéressante. Après avoir joué un peu avec, je ne suis pas tout à fait sûr que vous puissiez spécifier un chemin local qui automountdtraitera, cependant. Il semble possible de faire NFS, SMB et AFS.
zigg
Je ne sais pas si cela fonctionne sous Linux, mais c'est ce que j'ai toujours fait sur Solaris. Le vrai répertoire était / export / home / $ USER, et il y avait une configuration standard pour le monter automatiquement sur / home / $ USER. En fait, il semble que ce soit maintenant la configuration standard dans Solaris 11.x selon blogs.oracle.com/observatory/entry/automounted_home_directory
Tim B
1
J'ai juste regardé rapidement. Vous n'avez même pas besoin d'imiter la carte exécutable od_user_homes. C'est juste là pour supporter OD. Le montage automatique ordinaire de / Users / $ USER sur / home / $ USER est possible. Il est indiqué dans la page de manuel auto_master, bien que l'exemple montre des montages NFS distants plutôt que des répertoires locaux, il devrait également fonctionner localement.
Tim B
J'ai peut-être fait quelque chose de mal, mais j'ai essayé de configurer un chemin local où je pouvais utiliser un montage NFS et en ai reçu un Input/output erroren essayant de le faire cd. D'après ma lecture, il semblait que je ne pouvais utiliser que NFS, SMB ou AFS, comme je l'ai dit. Mais peut-être devrions-nous prendre cette ligne d'expérimentation ailleurs…
zigg
2

Il n'y a aucune utilité pour /home . OS X, comme diverses autres versions Unix, a un emplacement unique pour l'utilisateur. Sous Linux, c'est à /home/useret sous OS X, c'est à /Users. C'est pourquoi il est recommandé d'utiliser le raccourci " ~" ou la variable d'environnement $HOME.

Bien que vous puissiez créer un lien symbolique vers le répertoire de base / home de l' /Users/[username]utilisateur à l'aide de la commande suivante:

ln -s ~ /foo

Il ne fonctionnera pas pour créer un lien nommé /homecar il existe déjà un répertoire (n inutilisé) avec ce nom à la racine du système.

cleverbit
la source
1
Exactement. J'ai été sur d'autres systèmes de type Unix qui utilisaient d'autres conventions pour les répertoires personnels pour diverses raisons, par exemple /export/home/usernamesur Solaris. C'est une mauvaise pratique de supposer que /home/usernamecela fonctionnera. Les programmes qui recherchent des répertoires personnels doivent utiliser getpwnamou getpwuid.
zigg
1
Je suis entièrement d'accord que c'est une mauvaise pratique pour les programmes de supposer son existence, mais cela ne résout pas le fait que parfois un logiciel n'est pas développé de manière compétente.
anthonyryan1
Parmi les supports de mon boîtier et d'autres: map auto_home on /home (autofs, automounted, nobrowse)… même si je ne connais pas l'origine de ce support, je ne suis pas d'accord avec "pas d'utilisation pour /home".
Graham Perrin
Désolé aurait dû être plus clair: juste signifié /homeest apparemment réservé, mais inutilisé dans OSX, pas qu'il ne sert à rien de l'utiliser;)
cleverbit
@richarddas J'obtiens la même operation not supportederreur sudo ln -s /Users/username /home/usernameque moi sudo ln -s /Users /home. La solution fournie par @AR fonctionne (commentez la /homeligne /etc/auto_masteret redémarrez).
Abe
1

Je ne vois aucune raison de ne pas renommer le répertoire / home (au cas où je me trompe) et de créer un lien symbolique de / home vers / Users (ou, comme sur ma machine, / Volumes / Users depuis mon système le disque est pour le système, bon sang!)

J'avais l'habitude de travailler en tant que sysadmin, dans un département universitaire avec 11 saveurs d'Unix. Nous avions toutes sortes de liens symboliques dans l'arborescence des répertoires globaux pour que le système de fichiers fasse ce qu'il fallait, et les scripts étaient aussi proches que possible de fonctionner partout. Vous rencontrez quelques pièges, mais si vos doigts sont habitués à taper / home / foo et qu'un lien symbolique reporte le recyclage de vos doigts, allez-y.

De même, certains linuxen auront déjà des répertoires Home comme / usr / home.

Un endroit où j'ai travaillé avait les répertoires personnels de / Users / {group} / {username} comme protection partielle contre les étudiants qui se promènent dans les fichiers des professeurs si le prof était imprudent avec ses autorisations. Le répertoire des utilisateurs avait été exécuté mais aucun bit de lecture n'était défini, et les répertoires de groupe n'étaient lisibles que par les membres du groupe.

(Tout cela à titre d'illustration, il existe de nombreuses façons de priver ce félin particulier de sa peau.

Un piège possible - vérifiez que la machine à remonter le temps ne finit pas par faire deux copies de tout. Je ne sais pas comment TM traite les liens symboliques. Si c'est le cas, ajoutez / home à la liste d'exclusion de MT.

Sherwood Botsford
la source
1
Si quelque chose ou quelqu'un définit un mode ou une liste de contrôle d'accès inapproprié pour votre alternative, /Usersles routines familières de réparation des autorisations échoueront probablement à apporter les corrections requises. Je recommande donc que cela /Userssoit tel qu'installé par Apple: un répertoire, pas un lien symbolique.
Graham Perrin
0

J'ai essayé cela avant et l'ai fait fonctionner pendant environ une semaine jusqu'à ce que je redémarre ...

Vous ne pouvez pas simplement créer un lien symbolique /homevers /Users. En fait, vous ne pouvez même pas supprimer /home.

Si vous parvenez à le supprimer /home, il réapparaîtra après le redémarrage.

Si vous déplacez /homevers /home.old, et le lien symbolique /home, il supprimera le lien symbolique /home.

Vous pouvez le faire fonctionner tant que votre Mac ne plante pas ou ne redémarre pas.

Lorsque vous redémarrez, tout disparaît!

Lorsque vous redémarrez, Mac OS X semble penser que vous créez un nouvel utilisateur, il écrasera donc toutes vos préférences utilisateur dans votre ancien /Users/usernamerépertoire.

Puisque vous avez tout copié /home/username, vous vous attendez à voir votre nouveau répertoire personnel lorsque ls /homevous le ferez après le redémarrage. Au lieu de cela, vous obtenez RIEN !!! C'est comme si cela n'avait jamais existé.

Dans mon cas, j'ai paniqué pendant environ 30 minutes, puis j'ai démarré en mode mono-utilisateur pour voir si quelque chose pouvait être fait. Je pensais que je pourrais peut-être récupérer un fichier journal ou essayer de démarrer un utilitaire de réparation.

En mode mono-utilisateur, mon répertoire personnel était là. Apple cache intentionnellement tous les répertoires nouvellement créés sous /homeà l'utilisateur lorsqu'il est en mode multi-utilisateur. Il s'agit d'une caractéristique de conception intentionnellement mauvaise.

Apple est boiteux et décourage toutes sortes de piratage de leur système d'exploitation. Quel genre de caractéristique de conception est-ce? Apple cache le contenu du /homerépertoire nouvellement créé . Il n'y a absolument aucune raison légitime pour qu'Apple supprime automatiquement le /homerépertoire ... ou tout répertoire créé par l'utilisateur!

Dans ce cas, ils montent un répertoire sur votre répertoire / home ... le cachant efficacement.

Si vous êtes vraiment déterminé à utiliser à la /homeplace de /Users, vous pourrez peut-être contourner ce problème en écrivant un script pour tout configurer à chaque démarrage.

De plus, je dois mentionner que vous devriez pouvoir utiliser un autre répertoire qui ne /homeremplace pas /Userscar seul /homeest interdit.

Si vous utilisez bash, vous devrez définir certaines des variables d'environnement ... à savoir: CD_HOMEet HOME.

Je souhaite ajouter que ... bien que vous ne puissiez pas démonter ou forcer le démontage /home, vous pouvez monter un disque par-dessus /home. Tout cela monté sur "auto_home".

J'ai pu monter le disque de récupération par-dessus /homeavec succès ... c'est peut-être ainsi que cela peut être fait.

Tim
la source
TL / DR; la personnalisation anti-redémarrage est possible en utilisant la réponse la mieux notée
MarkHu