1 votes

Comment contourner l'autorisation de création de liens durs vers des répertoires situés sur le même système de fichiers ?

Je suis bien conscient de la différence entre symbolique et dur des liens. Je suis également conscient des dangers de créer des liens durs vers des annuaires .

Néanmoins, je suis insistant sur la création d'un lien dur à un répertoire et à tous ses sous-répertoires (sur la même partition).

Cependant, la méthode suivante ne fonctionne pas :

root@fab-ux:/home/fab-user/Public
# ln --directory ../Documents/CV/ CV
ln: failed to create hard link ‘CV’ => ‘../Documents/CV/’: Operation not permitted

Existe-t-il un paramètre du noyau/système de fichiers (fonctionnant sous EXT4) qui me permette de réaliser cette folie ?

Oui, je peux monter un lien, je peux lier des fichiers individuels par une tâche cron, ... Mais le fait est que je veux à la fois la commodité de n'avoir qu'un seul répertoire physique. <em>et </em>tous ses fichiers et la commodité de ne télécharger vers le nuage que certains répertoires liés en dur dans mon répertoire public ; le logiciel du nuage détecte les liens symboliques et ne les prend pas en charge. <em>et le plus important de tous : </em>J'utilise Ubuntu ! Pas OSX ni Windows : Je veux que le système fasse ce que <em>I </em>veux !

4voto

cmks Points 1814

Tant que vous restez sur un noyau actuel (il s'agit d'une fonctionnalité du noyau plutôt que du système de fichiers), il n'y a pratiquement aucun moyen de contourner ces limitations.

Limites des liens physiques

Afin d'éviter les boucles dans le système de fichiers, et de conserver l'interprétation de la directive .. (répertoire parent) cohérent, de nombreux systèmes d'exploitation modernes n'autorisent pas les liens en dur vers les répertoires. UNIX System V les autorisait, mais seul le super-utilisateur avait la permission de créer de tels liens.

Spécifications de base de l'Open Group numéro 7 (extrait)

... Lien vers un répertoire est limité au super-utilisateur dans la plupart des implémentations historiques parce que cette capacité peut produire des boucles dans la hiérarchie des fichiers ou autrement corrompre le système de fichiers. Ce volume de POSIX.1-2008 poursuit cette philosophie en interdisant à link() et unlink() de faire cela . D'autres fonctions pourraient le faire si l'implémenteur concevait une telle extension...


Parce qu'il n'y a plus d'appel système comme link() qui ne vérifient pas que l'ancien chemin est un fichier ordinaire, la seule solution consiste à créer une fonction similaire à la fonction linkat() de le faire à votre façon.

1voto

psusi Points 35613

Vous ne pouvez pas créer de liens durs vers des répertoires sous linux. J'ai entendu dire que OSX le permet pour l'utilisation de Time Machine, mais pas sous Linux. Le plus proche que vous pouvez faire est cp -l qui créera une nouvelle arborescence de répertoires reflétant l'original, mais qui liera en dur tous les fichiers réguliers.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X