liens symboliques basés sur l'identifiant de l'utilisateur

1

Je me demande comment créer sous Linux quelque chose comme un lien symbolique, qui pointera vers différents répertoires pour différents utilisateurs le voyant. Je cherchais depuis longtemps et ai trouvé quelque chose appelé hlfsd - Bien sûr, les liens symboliques ordinaires ne peuvent pas le faire, car ils reposent sur des "trucs" du noyau, mais j'ai trouvé quelque chose qui pourrait résoudre ce problème.

Mais, existe-t-il une "meilleure" solution - quelque soit la méthode qui me donne un fichier de type lien, qui pointe vers différents répertoires en fonction de l'identifiant de l'utilisateur?

En gros ce que je veux faire:

Considérons que nous avons un serveur avec une structure de fichiers à l' A/{a1 a2}/{b1 b2}/{c1 c2} intérieur de ces dossiers. Il existe de gros fichiers et ne devrait pas être copié sur le réseau. Disons que l'utilisateur U1 veut accéder à ces fichiers, il peut donc créer un lien symbolique (jusqu'ici tout va bien).

Le problème, c’est quand il veut accéder à cette structure et n’avoir qu’une copie locale, par exemple A/a1/b1/c1. Bien sûr, nous pouvons faire beaucoup de liens symboliques localement, qui pointeront vers ces dossiers sur le serveur, mais nous n’avons aucune fonctionnalité très importante pour moi - quand quelqu'un ajoute un dossier A/a1/b1/c3, puis cet utilisateur, qui était lié à cette structure de fichier et ont A/a1/b1/c1localement, ne verra pas les modifications, car tous ses liens ont été créés manuellement.

Wdanilo
la source
Je ne comprends pas comment votre cas d'utilisation est lié à votre question. Pourquoi différents utilisateurs devraient-ils voir des contenus différents pour le même fichier / répertoire? Le fait que les fichiers soient distants est-il important? Quel est le confort de l'utilisateur et quel est le niveau de sécurité? Peut-être qu'AFS ou FUSE pourraient vous intéresser.
Gilles

Réponses:

1

FreeBSD avait quelques manipulations spéciales de liens symboliques, je pense, appelées liens symboliques variadiques (bien qu'une recherche Google de ce terme ne trouve pas ce que je voulais). L'idée que vous ne faites pas un lien symbolique vers un chemin spécifique, mais une chaîne pouvant avoir des remplacements.

Non seulement vous êtes pris au dépourvu par le fait que Linux ne le supporte pas, mais il est plus difficile d’implémenter ce que vous voulez par utilisateur. Dans * BSD, il était fait pour créer des liens symboliques pour des chaînes simples que le noyau connaîtrait, comme l'architecture (c.-à-d. I686 vs x86_64). Alors, un symlnik de / opt / someapp / bin => / opt / someapp / $ {arch} / bin prend tout son sens. Mais vous voulez faire par utilisateur. Rappelez-vous que les liens symboliques sont résolus dans le noyau et que celui-ci ne connaît pas votre nom ni le répertoire principal. Il connaît votre userid, et c'est à peu près tout. Il faudrait passer en mode utilisateur pour obtenir des informations à votre sujet. Pas impossible, mais très délicat. Ensuite, comment fonctionneraient les programmes setuid?

En bref, je sais ce que vous voulez dire, ce que vous voulez, mais il est peu probable que vous y arriviez. Peut-être vérifier les fusibles et voir s’ils ont quelque chose que vous pouvez utiliser.

Pas tout à fait ce que vous avez dit, mais peut-être que vous pouvez le faire avec le contrôle de source. ClearCase (payware) avait un module de noyau qui ferait la plupart de ce que vous voulez, sans savoir s'il le ferait toujours. Même sans module de système de fichiers du noyau, vous pouvez probablement placer le contrôle de source distribuée dans 60 à 70% de ce que vous voulez.

Rich Homolka
la source
0

La solution simple est que je vois dans chaque dossier il y a dossier caché .realfilesdans les dossiers réels sont et dossiers sur le serveur comme A/a1ou A/a1/b2sont des liens symboliques dans le dossier ci - dessus A, donc A/a1symlink à ../MOUNT/.realfiles/a1et A/a1/b2est à ../MOUNT/.realfiles/a1 symlink /.realfiles/b1.

Maintenant, fondamentalement, le MOUNT sur le serveur est un lien symbolique vers A. mais s'il sera possible de modifier les liens par utilisateur, le dossier MOUNT pointera vers un autre répertoire pour chaque utilisateur. Nous pourrons alors modifier certains liens à notre guise.

(Je connais cette situation particulière, mais j'ai mieux fait de l'expliquer bien)

Sathyajith Bhat
la source
@wdanilo J'ai fait de mon mieux pour essayer de séparer la réponse de la question. Si jamais vous revenez, postez une réponse et envoyez-moi un @sathya pour que je puisse le supprimer.
Sathyajith Bhat
SALUT! Le problème est que ce n'est pas la réponse :( C'est une solution générale, cela fonctionnerait Si je pouvais créer des liens symboliques "par utilisateur". Le lien symbolique "MOUNT" pointerait donc vers un autre endroit pour chaque utilisateur :(
wdanilo