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

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

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

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

  • Удалить софт-ссылку, но не целевую
  • Добавление других прав rw для файла
  • Rsync: возможно ли передавать файлы src в виде символических ссылок и копировать остальную часть структуры dir
  • Объясните символ «@» в этом примере разрешений
  • Является ли символическая / софт-ссылка похожей на ярлык / псевдоним на рабочем столе?
  • Как скопировать символические ссылки как символические ссылки с одной машины на другую?
  • OpenSSH отказался от каталога .ssh с символической ссылкой
  • Как связать папку для создания ярлыка
  • Подключить символическую ссылку к программе или скрипту, который возвращает файл
  • Пользователь с доступом для чтения / home
  • Почему setuid не работает?
  • Отсутствие эффекта umask и chmod на подключенных дисках
  • 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 - лучшая ОС в мире.