Почему я не могу установить жесткую ссылку на файл, который мне не принадлежит, хотя я могу его переместить?

Проверьте конфигурацию пиннинга для apt в /etc/apt/preferences и /etc/apt/preferences.d/

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

Официальные backports уже прикреплены ниже (100), чем jessie, в файле backported packages Release в репозитории backports. Вам не нужно делать никаких настроек apt, чтобы заставить apt предпочесть jessie вместо jessie-backports.

2
14.07.2017, 16:57
2 ответа

Изman 2 link:«... оба имени относятся к одному и тому же файлу (и, следовательно, имеют одинаковые разрешения и права собственности )»

Несмотря на то, что у вас есть разрешение на чтение/копирование/перемещение файла, вы не можете создать две ссылки на один и тот же файл с разными разрешениями или владельцем, так как режим , uid и gid хранятся в индексном узле, на который вы создаете ссылки из двух разных каталогов, а не в самой записи каталога.

Рассмотрим:

$ touch file_a
$ touch file_b
$ ln file_a file_A
$ ls -iln
total 0
1310731 -rw-rw-r-- 2 1000 1000 0 Jul 11 08:45 file_a
1310731 -rw-rw-r-- 2 1000 1000 0 Jul 11 08:45 file_A
1320710 -rw-rw-r-- 1 1000 1000 0 Jul 11 08:45 file_b

======= ===================================== ======
^       ^                                     ^
|       |                                     \-- names, stored in directory
|       \-- file metadata, stored in inode
\-- inode number, stored in directory and pointing to inode

В этом примере file_aи file_Aимеют одинаковый номер инода, поэтому обязательно имеют все одинаковые атрибуты, хранящиеся в иноде.

-1
27.01.2020, 22:03

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

Запись каталога представляет собой пару имя+номер ; имя файла и число, называемое номером i -. Это индекс в то, что называется i -списком , который содержит все реальные подробности о каждом файле в структурах, называемых i -узлами .

Узел i -содержит, среди прочего, сведения о том, кому принадлежит файл. Он фактически «принадлежит» владельцу файла. Одним из полей в нем является счетчик использования , который обычно равен 1.

Когда создается жесткая ссылка, это просто еще одна пара имя+номер, неотличимая от первой. В этот момент счетчик использования увеличивается на 1; когда удаляется жесткая ссылка (или исходная запись каталога, поскольку они оба имеют одинаковый статус ), счетчик использования уменьшается на 1. Когда он становится равным нулю, файл исчезает. Из этого вы можете видеть, что создание жесткой ссылки означало бы, что вы должны иметь возможность изменить узел i -, когда вы не были его владельцем.

Это было проблемой в течение нескольких лет в UNIX и было одной из причин, по которой была введена символическая ссылка (или символическая ссылка , иногда называемая программной ссылкой ). Это пара имя+имя , в основном просто предоставляющая псевдоним для исходного файла. В узле i -ничего не меняется; это просто перенаправление. Недостатком является то, что исходный файл можно удалить без исчезновения символической ссылки,и в итоге указывает на несуществующий -файл.

-1
27.01.2020, 22:03

Теги

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