Как редактирование так или иначе .conf на символьной ссылке с помощью энергии?

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

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

Спасибо за любого совет Hope любой может помочь мне.

3
задан 11 September 2018 в 14:30

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

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

[ 113]

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

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

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

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

2
ответ дан 1 December 2019 в 15:49

Ваша символьная ссылка

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

2
ответ дан 1 December 2019 в 15:49

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

Похожие вопросы: