Использование __ rb_rotate_left ()

Если у вас есть ссылка типа:

link -> foo/bar

и вы хотите изменить ее на:

link -> new/target

Есть два случая, которые следует учитывать:

  1. foo / bar не является каталогом или не существует, или вы нет доступа для поиска по foo . Тогда

     ln -s новая / целевая ссылка 
     

    завершится ошибкой, потому что ссылка уже существует, но вы можете преодолеть это, используя стандарт:

     ln -fs new / целевая ссылка 
     
  2. foo / bar - это каталог (и у вас есть разрешение на поиск в foo , чтобы определить, что foo / bar является каталог). В этом случае, когда вы выполните:

     ln -s new / target link 
     

    или

     ln -fs new / target link 
     

    Это понимается как создание новая target символическая ссылка внутри каталога link ( link - это каталог, потому что это символическая ссылка на каталог foo / bar ). Итак, вы фактически создадите:

     foo / bar / target -> new / target 
     

    Чтобы преодолеть это, GNU ln имеет -T ], чтобы имя ссылки всегда рассматривалось как имя ссылки, а не как каталог для создания ссылки (-ов). Итак, с GNU ln :

     ln -fsT new / target link 
     

    будет работать. Как и раньше, он удалит исходную символическую ссылку link и создаст ее заново с new / target в качестве цели (и процессом euid и egid в качестве владельца).

    GNU ln также имеет параметр -n . Он работает как -T , за исключением случаев, когда ссылка на самом деле является реальным каталогом, и в этом случае он все равно будет создавать символическую ссылку внутри этого каталога (вместо сбоя с ошибкой).

    Наилучший вариант - сначала удалить ссылку, а затем воссоздать ее:

     rm -f link && ln -s new / target link 
     

В большинстве систем разрешения на символические ссылки игнорируется и обычно устанавливается на rwxrwxrwx .

В системах, где важны разрешения символьной ссылки (например, OS / X, где вам нужно разрешение на чтение символьной ссылки, чтобы иметь возможность разрешить ее цель), обычно есть способ изменить их ( chmod -h в ОС /ИКС).

Право собственности, хотя, как и выше, не имеет отношения к доступу к файлу, на который указывает символическая ссылка в большинстве систем, может иметь другое значение относительно бита t родительского каталога или квот. . ) и есть стандартная команда для его изменения:

chown -h user[:group] the-link
chgrp -h group the-link

0
12.12.2017, 14:48
0 ответов

Теги

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