J'ai un fichier dans ../new-path/
dir.
lrwxrwxrwx 1 root root 32 Sep 6 19:43 test1.conf -> ../new-path1/test1.conf
Quand je l'édite avec Vim en utilisant Sudo vim test1.conf
sur dans la boîte de dialogue Vim dit.
"test1.conf" [Permissions Denied]
comment je l’édite quand même sur un lien symbolique en utilisant Vim. Je vraiment débutant à propos de symlink.
NOTE
J'ai essayé this post , il supprimera les fichiers/dossiers et le lien symbolique bien sûr, mais je n'ai besoin que de supprimer le lien symbolique en tant que fichier indépendant sans le supprimer ou sans le dissocier car je n'ai pas de sauvegarde n'importe quoi.
EDIT1
La sortie de lsattr $ (readlink -f test1.conf)
--------------e---- ./test2.conf
--------------e---- ./default-ssl.conf
lsattr: Operation not supported While reading flags on ./test1.conf
EDIT2
La sortie de ls -l ../new-path1/test1.conf
lrwxrwxrwx 1 root root 32 Sep 10 14:13 ../new-path1/test1.conf -> ../new-path1/test1.conf
Merci pour tout conseil, J'espère que tout le monde pourra m'aider.
Un lien symbolique est un pointeur sur un fichier situé ailleurs sur votre disque dur. Les liens symboliques facilitent votre travail avec les fichiers. Dans Windows, il existe similaires des pointeurs appelés raccourcis, qui sont utilisés pour le bureau. Vous n'avez donc pas besoin de cliquer dans un dossier pour lancer un programme. Au lieu de cela, vous mettez un raccourci sur votre bureau qui pointe vers le programme dans un dossier situé ailleurs sur le système.
Symlink fait la même chose sur linux, MAIS c'est pour la console/le système et n'a rien à voir avec Graphics par lui-même. Ainsi, les programmes et les utilisateurs d’un système de fichiers Linux peuvent créer ces pointeurs pour rechercher les fichiers de manière plus efficace.
Je suis dans mon dossier personnel et vais créer un dossier de test et un fichier de test.
pwd
/home/simmel
Créer un dossier et un fichier
mkdir testfolder
touch testfolder/testfile
La liste montrera
ls -la testfolder
total 40
drwxr-xr-x 2 simmel simmel 4096 Sep 11 16:19 .
drwxr-xr-x 88 simmel simmel 24576 Sep 11 16:22 ..
-rw-r--r-- 1 simmel simmel 0 Sep 11 16:19 testfile
Maintenant, je vais créer un lien symbolique dans mon dossier personnel dans le dossier de test.
pwd
/home/simmel
ln -s testfolder/testfile
ls -la testfile
lrwxrwxrwx 1 simmel simmel 19 Sep 11 16:24 testfile -> testfolder/testfile
Si vous rencontrez des problèmes pour accéder à un fichier lié symboliquement, jetez toujours un coup d'œil au fichier ou au dossier lui-même et PAS au lien symbolique.
ls -la sur le lien symbolique indique rwx pour tout le monde, mais ce n'est pas vrai du tout! Vous devez consulter le fichier à l’intérieur du dossier (voir ci-dessus) qui indique clairement
ls -la testfolder
total 40
drwxr-xr-x 2 simmel simmel 4096 Sep 11 16:19 .
drwxr-xr-x 88 simmel simmel 24576 Sep 11 16:22 ..
-rw-r--r-- 1 simmel simmel 0 Sep 11 16:19 testfile
Cela signifie que l'utilisateur simmel peut accéder au dossier (lire, écrire, exécuter), le groupe simmel ne peut que lire et exécuter, ainsi que quiconque sur le système. Si je change les droits ou la propriété sur le fichier ou le dossier, les choses seront différentes. Alors disons que nous faisons quelque chose comme donner le fichier à root.
Sudo chown root:root testfolder/testfile
ls -la
total 40
drwxr-xr-x 2 simmel simmel 4096 Sep 11 16:19 .
drwxr-xr-x 88 simmel simmel 24576 Sep 11 16:29 ..
-rw-r--r-- 1 root root 0 Sep 11 16:19 testfile
Comme vous pouvez le constater, le fichier appartient maintenant à root et les modifications ne peuvent être effectuées que par root, mais l'utilisateur simmel peut toujours le lire. Voyons ce que dit le lien symbolique, cela a-t-il changé de quelque façon que ce soit?
ls -la testfile
lrwxrwxrwx 1 simmel simmel 19 Sep 11 16:24 testfile -> testfolder/testfile
Non, c'est toujours pareil. Alors ne vous fiez pas à regarder le lien symbolique lui-même, regardez de près la cible.
Dans Ubuntu, les droits d’un lien symbolique n’ont aucune importance (différent dans BSD, par exemple).
Un lien symbolique pointe vers un dossier et/ou un fichier. Pour obtenir des autorisations sur un dossier/fichier lié symboliquement, vous devez modifier les droits du dossier/fichier lui-même.
En d'autres termes, si vous décidez de changer la propriété ou le mode d'un lien symbolique, vous allez changer la propriété ou le mode du dossier/fichier lui-même.
Pour être honnête, je ne peux que deviner ce qui se passe. La suggestion de PerlDuck était que vous ou quelqu'un d'autre fît accidentellement cela
ln -s testfile testfile
Ce serait un lien symbolique pointant vers lui-même. Un lien mort, car il ne pointe pas vers un fichier ailleurs sur le système de fichiers, mais vers lui-même. Si vous utilisez un terminal de couleur, vous verrez même une couleur rouge dans le terminal, ce qui vous indique que ce lien est complètement rompu.
MAIS, pour créer un tel lien mort, il ne pouvait pas y avoir de fichier portant le même nom dans le même répertoire. Cela ne fonctionne pas.
J'espère donc toujours que votre fichier n'est pas parti. Essayez de le trouver.
faire
Sudo find / -name test1.conf
peut-être avez-vous de la chance et il est toujours là.
Si vous ne le trouvez pas, votre fichier risque d'être perdu pour toujours et vous devrez en créer un nouveau.
Votre lien symbolique
test1.conf -> ../new-path1/test1.conf
est un lien mort. Il pointe vers un répertoire non existant. Vous avez dit qu'il y a un fichier sous ../new-path/
mais le lien pointe vers ../new-path1
. Fixez le lien:
ln -fs ../new-path/test1.conf test1.conf
Après votre modification, il est clair que vous avez créé n lien symbolique à référence automatique de ../new-path1/test1.conf
à ../new-path1/test1.conf
, c'est-à-dire que dans le répertoire new-path1
, il existe un lien symbolique nommé test1.conf
qui pointe sur lui-même. Donc, test1.conf
est un lien symbolique vers test1.conf
qui est un lien symbolique vers test1.conf
qui est un…:
pduck@Host> ls -L ../new-path/test1.conf
ls: cannot access '../new-path/test1.conf': Too many levels of symbolic links
Supprimez ce lien symbolique (rm test1.conf
), créez-le à nouveau et faites-le pointer vers un fichier existant.