Как редактировать.conf на символическую ссылку, используя Vim?

У меня есть файл в ../new-path/ реж.

lrwxrwxrwx 1 root root   32 Sep  6 19:43 test1.conf -> ../new-path1/test1.conf

Когда я редактирую его с помощью Vim sudo vim test1.conf под диалогом Vim сказал.

"test1.conf" [Permissions Denied]

как я редактирую его в любом случае на символической ссылке, используя Vim. Я действительно новичок о символической ссылке.

НОТА

Я попробовал этот пост, он, конечно, удалит файлы / папки и символическую ссылку, но мне нужно только удалить символическую ссылку как независимый файл без его удаления, или он отменяет связь, потому что у меня нет резервной копии.

EDIT1

Вывод lsattr $ (readlink -f test1.conf)

--------------e---- ./test2.conf
--------------e---- ./default-ssl.conf
lsattr: Operation not supported While reading flags on ./test1.conf

EDIT2

Выход из ls -l ../new-path1/test1.conf

lrwxrwxrwx 1 root root 32 Sep 10 14:13 ../new-path1/test1.conf -> ../new-path1/test1.conf

Спасибо за любой совет, надеюсь, кто-нибудь может мне помочь.

2 ответа

Что такое (мягкая) символическая ссылка (короткое имя символическая ссылка)?

Символьная ссылка - это указатель на файл, который находится где-то еще на вашем жестком диске. Символьные ссылки используются для облегчения вашей работы с файлами. В Windows есть аналогичные указатели, называемые ярлыками, которые используются для рабочего стола, поэтому вам не нужно щелкать папку, чтобы запустить программу. Вместо этого вы ставите ярлык на рабочий стол, указывающий на программу внутри папки, расположенной в другом месте системы.

Symlink делает то же самое в Linux, но это для консоли / системы и не имеет ничего общего с Graphics. Таким образом, программы и пользователи в файловой системе Linux могут создавать эти указатели для более эффективного поиска файлов.

Как создать символическую ссылку? Как это работает?

Я нахожусь в моей домашней папке и создам тестовую папку и тестовый файл.

pwd
/home/simmel

Создать папку и файл

mkdir testfolder
touch testfolder/testfile

Листинг это покажет

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

Теперь я создам символическую ссылку в моей домашней папке в тестовой папке

pwd
/home/simmel

ln -s testfolder/testfile

ls -la testfile       
lrwxrwxrwx 1 simmel simmel 19 Sep 11 16:24 testfile -> testfolder/testfile

Если у вас есть проблемы с доступом к файлу с символической ссылкой, всегда обращайте внимание на сам файл или папку, а НЕ на символическую ссылку.

ls -la в символической ссылке указывает на rwx для всех, но это совсем не так! Вам нужно взглянуть на файл внутри папки (см. Выше), в котором четко указано

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

Это означает, что пользователь может полностью получить доступ к папке (чтение, запись, выполнение), группа simmel может только читать и выполнять, как и любой другой пользователь системы. Если я изменю права или владельца файла или папки, все будет иначе. Допустим, мы делаем что-то вроде предоставления файла пользователю 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

Как видите, файл теперь принадлежит пользователю root, и изменения могут вноситься только пользователем root, но пользователь simmel все еще может его прочитать. Давайте посмотрим, что говорит символическая ссылка, она изменилась каким-либо образом?

ls -la testfile 
lrwxrwxrwx 1 simmel simmel 19 Sep 11 16:24 testfile -> testfolder/testfile

Нет, это все то же самое. Так что не полагайтесь на саму символическую ссылку, внимательно посмотрите на цель.

В Ubuntu права символической ссылки не имеют никакого значения (например, различаются в BSD).

Символьная ссылка указывает на папку и / или файл. Чтобы получить разрешения для папки / файла с символической ссылкой, вам нужно изменить права самой папки / файла.

Другими словами, если вы решите изменить владельца или режим символической ссылки, вы собираетесь изменить владельца или режим на саму папку / файл.

Что радует с вашим файлом?

Если честно, я могу только догадываться, что получится. Предположение PerlDuck было, что вы или кто-то другой случайно сделал это

ln -s testfile testfile

Это будет символическая ссылка, указывающая на себя. Неработающая ссылка, потому что она указывает не на файл где-то еще в файловой системе, а на саму себя. Если вы используете цветной терминал, вы даже увидите красный цвет в терминале, показывающий, что эта ссылка совершенно не работает.

НО, чтобы создать такую ​​мертвую ссылку, не могло быть файла с тем же именем в том же каталоге. Это не работает.

Так что я все еще надеюсь, что ваш файл не исчез, попробуйте найти его.

делать

sudo find / -name test1.conf

может быть, вам повезло, и он все еще там.

Если вы не можете найти его, ваш файл может быть утерян навсегда, и вам придется создать новый.

Ваша символическая ссылка

test1.conf -> ../new-path1/test1.conf

мертвая ссылка. Это указывает на несуществующий каталог. Вы сказали, что есть файл ниже ../new-path/ но ссылка указывает на../new-path1вместо. Исправить ссылку:

ln -fs ../new-path/test1.conf test1.conf

После вашего редактирования стало ясно, что вы создали символическую ссылку из ../new-path1/test1.conf в ../new-path1/test1.confт.е. в каталоге new-path1 существует символическая ссылка с именем test1.conf это указывает на себя. Так test1.conf символическая ссылка на test1.confкоторая является символической ссылкой на test1.conf который является...:

pduck@host> ls -L ../new-path/test1.conf 
ls: cannot access '../new-path/test1.conf': Too many levels of symbolic links

Брось эту символическую ссылку (rm test1.conf) и создайте его заново и сделайте так, чтобы он указывал на существующий файл.

Другие вопросы по тегам