46 votes

Pourquoi /tmp est un lien symbolique vers /private/tmp ?

Pourquoi est-ce que /tmp un lien symbolique vers /private/tmp sur Mac OS X ? En d'autres termes, pourquoi /tmp juste un répertoire ordinaire, comme sous Linux ou BSD ? Je comprends comment cela fonctionne et cela ne me dérange pas, je suis simplement intéressé par le raisonnement (historique ?) qui se cache derrière.

47voto

Gordon Davisson Points 30215

D'après ce que j'ai compris, c'est un vestige de Étape suivante (sur lequel OS X est basé), et NextStep l'a fait pour supporter NetBooting. L'idée était que vous pouviez démarrer à partir d'un volume hébergé par le réseau (probablement en lecture seule, et certainement partagé avec d'autres ordinateurs), et au début du processus de démarrage, monter un volume local (inscriptible) sur /private ; comme g l'a mentionné, cela permettait la modification en cours d'exécution de /var et /tmp, ainsi que des paramètres par ordinateur dans /etc.

Ce n'est plus nécessaire, car le système NetBoot actuel d'Apple utilise une image disque fantôme pour stocker les modifications n'importe où sur le volume de démarrage. Mais certains programmes/docs/etc supposent maintenant que les fichiers se trouvent sous /private, ce serait donc trop compliqué de les remettre en place...

Mise à jour : depuis que j'ai écrit ceci, Apple a arrêté de supporter NetBoot, donc le but original de /private est encore plus obsolète. Cependant, dans MacOS Catalina (version 10.15), ils ont ajouté une nouvelle division de volume. Dans ce cas, c'est pour la sécurité plutôt que pour supporter NetBoot, mais cela fonctionne de manière assez similaire.

Le volume système de Catalina est monté en lecture seule, avec un volume en lecture-écriture monté sur /System/Library/Data (analogue à l'ancien système qui montait un volume RW sur /private), et des "firmlinks" faisant apparaître des parties du volume RW à leur emplacement habituel dans le système de fichiers (là encore, analogue aux liens symboliques qui font apparaître des parties de /private à leur emplacement habituel). Par exemple, /Users est maintenant un lien ferme vers /System/Library/Data/Users. La société Eclectic Light a un bon résumé .

Catalina a également conservé les liens symboliques vers /private ; ainsi, lorsque vous accédez à /etc sur Catalina, il suit le lien symbolique vers /private/etc, puis le lien ferme vers /System/Library/Data/private/etc.

0 votes

"Mais certains programmes/docs/etc" lolpun (etc est symlinké à /private/etc)

6voto

Issac Kelly Points 3014

Je me suis toujours demandé la même chose. Je ne trouve pas de documentation à l'appui, mais ce modèle est généralement utilisé pour faciliter le stockage des fichiers sur un autre volume (par exemple, un disque dur). Cela permet au disque d'être monté (c'est-à-dire attaché) dans le système de fichiers à un seul endroit. Par exemple, lorsque le disque est monté à /private et ensuite les dossiers /etc , /tmp et /var sont alors tous situés sur cet autre disque.

Ce que je ne peux pas dire, c'est pourquoi cela serait bénéfique. Il convient toutefois de noter que ces trois dossiers contiennent des fichiers de "données", tels que des fichiers de configuration, temporaires, de journal, transitoires et de base de données, plutôt que du code exécutable contenu dans le fichier /bin , /sbin y /usr les dossiers.

1voto

UnkwnTech Points 21942

Je ne suis pas sûr de la raison historique, mais OS X a toujours "réorganisé" la structure typique d'Unix. /tmp n'est pas la seule chose qui va à /private il a également /etc y /var .

Peut-être que quelqu'un ayant plus d'expérience dans le domaine de l'OS X pourra proposer quelque chose de plus raisonnable.

0voto

Rich Points 2429

/tmp est un lynx symbolique pour /private/etc afin de maintenir deux systèmes de fichiers clairement séparés :

  • / qui peut être monté en lecture seule, pour le protéger contre toute modification accidentelle ou non désirée, et pour éviter qu'il ne soit rempli de fichiers toujours plus nombreux (journaux et fichiers temporaires),

  • /private qui peuvent être montés en lecture-écriture, et qui contiennent tout répertoire contenant des fichiers modifiables.

Si vous regardez / vous remarquerez 3 répertoires qui sont des des liens symboliques pour cette même raison :

cd /
ls -al | grep '> private'

Cette séparation d'accès entre les systèmes de fichiers en lecture-écriture et en lecture seule n'est pas utilisée en réalité (dans MacOS X), mais tout est en place pour réaliser cette séparation de sécurité.

Certains administrateurs renforcent cette séparation de sécurité en définissant une méthode spécifique /private avec une taille appropriée et des options de montage adéquates. (plus particulièrement nosuid ).

0 votes

C'est la meilleure réponse.

-2voto

benwiggy Points 21125

Souvent, dans Unix, des façons identiques de faire la même chose sont dues à des différences historiques entre System V Unix et BSD Unix. Les Unix modernes doivent supporter les deux pour être compatibles.

Par exemple, lpr y lp pour l'impression : lpr est de BSD et lp provient du Système V.

Je ne sais pas si c'est le cas ici.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X