У меня есть файл в ../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 любой может помочь мне.
Симлинк - это указатель на файл, который находится где-то еще на вашем жестком диске. Символьные ссылки используются для облегчения вашей работы с файлами. В 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
может быть, вам повезло, и он все еще там.
Если вы не можете его найти, ваш файл может быть утерян навсегда, и вам придется создать новый.
Ваша символьная ссылка
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
) и создайте его заново и заставьте его указать на существующий файл.