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

У меня есть символическая ссылка с этими разрешениями:

lrwxrwxrwx 1 myuser myuser 38 Aug 18 00:36 npm -> ../lib/node_modules/npm/bin/npm-cli.js* 

Симлинковая ссылка находится в архиве .tar.gz. Теперь, когда я распаковываю архив tar.gz с помощью maven, символическая ссылка больше не действительна. Поэтому я пытаюсь восстановить символическую ссылку. Сначала я создаю символическую ссылку, используя ln, но как установить те же разрешения, что и исходная символическая ссылка?

  • Символы / программные ссылки с цветовой координацией на основе того, на что они ссылаются
  • linux как cd к родительской папке, если она перемещается через символическую ссылку
  • Почему разрешение отклонено для запуска npm с использованием node-dev?
  • Сделать `rsync -link-dest` поиск файлов рекурсивно
  • Почему заполнение bash символической ссылки отличается от каталога?
  • Как удалить каталог символьных ссылок ссылки плюс символическая ссылка?
  • Как создать ярлык для папки в Документы
  • Как Linux работает с символическими ссылками?
  • 4 Solutions collect form web for “Изменить разрешения для символической ссылки”

    Вы можете создать новую символическую ссылку и перенести ее в место старой ссылки.

     ln -s <new_location> npm2 mv -f npm2 npm 

    Это сохранит владение связью. Кроме того, вы можете использовать chown чтобы вручную установить право собственности на ссылку.

     chown -h myuser:myuser npm 

    В большинстве систем разрешения symlink не имеют значения. При использовании символической ссылки будут проверяться разрешения компонентов символической ссылки.

    Когда вы пытаетесь использовать chmod для установки разрешений ссылки, на самом деле вы делаете это, чтобы установить разрешения целевой ссылки. Разрешения на связь не имеют смысла.

    Когда у вас есть ссылка, например:

     link -> foo/bar 

    и хотите изменить его на:

     link -> new/target 

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

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

       ln -s new/target link 

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

       ln -fs new/target link 
    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 за исключением случаев, когда link фактически является реальным каталогом, и в этом случае он все равно будет создавать символическую ссылку внутри этого каталога (вместо сбоя с ошибкой).

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

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

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

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

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

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

    Если вам действительно нужно изменить разрешение символических ссылок (обычно это бессмысленно, как написано в других ответах), мне удалось использовать опцию -R chown :

     chown -R myuser:mygroup link 

    Если -R не использовался, разрешения не были изменены.

    Linux и Unix - лучшая ОС в мире.