Как редактировать.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
) и создайте его заново и сделайте так, чтобы он указывал на существующий файл.