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

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

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 работает с символическими ссылками?
  • Symlink везде
  • Доступ к файлу в PHP через символическую ссылку от пользователя, который обычно не имеет разрешения
  • Создавать символические ссылки на внешнем устройстве хранения данных, которое может работать на любых Linux-машинах?
  • Как можно разделить ссылки при извлечении из файла tar?
  • Как заменить символическую ссылку на копию файла, к которому он привязан?
  • Можем ли мы использовать символическую ссылку и жесткую ссылку для каталогов?
  • Символическая ссылка становится нечитаемой после prctl (PR_SET_DUMPABLE, 0);
  • 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 не использовался, разрешения не были изменены.

    Interesting Posts

    network.service Не удалось запустить LSB: создать сеть вверх / вниз – Centos 7

    Способ удаления новой строки (^ M) только из переменных, а не из файла

    с firewalld можно ли использовать инвертированный ipset в качестве источника?

    загрузить отсутствующую библиотеку из ~ / без root или symlinks на совместном хостинге?

    ctrl + c, за которым следует стрелка вверх для редактирования предыдущей командной строки, приводит к повреждению текста в gnome-terminal

    Пользовательская установка GCC – как мне установить переменные среды?

    История Bash с метками времени

    Где рекомендуемое место для установки приложений, которые не относятся к apt?

    Создание модуля ядра с использованием dkms, отсутствующих заголовков

    Перенумеровать зашифрованный раздел – sda3 на sda5

    Libreoffice Writer, как получить доступную только для чтения часть документа

    Команда обходит вокруг одной строки после 80 символов

    Передача файлов из AIX в Windows – проблемы с CR и LF (управляющие символы)

    Не удалось установить Linux Mint 17 на аппаратное обеспечение, использующее AMD APU (A5800k) с материнской платой MSI

    debian: удалить все пакеты, установленные в определенный день

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