Я столкнулся с некоторыми проблемами при создании софт-ссылок. Ниже приведен оригинальный файл.
$ ls -l /etc/init.d/jboss
-rwxr-xr-x 1 askar admin 4972 Mar 11 2014 /etc/init.d/jboss
Сбой создания ссылки с проблемой разрешения для владельца файла:
ln -sv jboss /etc/init.d/jboss1
ln: creating symbolic link `/etc/init.d/jboss1': Permission denied
$ id
uid=689(askar) gid=500(admin) groups=500(admin)
Итак, я создал ссылку с привилегиями sudo:
$ sudo ln -sv jboss /etc/init.d/jboss1
`/etc/init.d/jboss1' -> `jboss'
$ ls -l /etc/init.d/jboss1
lrwxrwxrwx 1 root root 11 Jul 27 17:24 /etc/init.d/jboss1 -> jboss
Далее я попытался сменить владельца софт-ссылки на первоначального пользователя.
$ sudo chown askar.admin /etc/init.d/jboss1
$ ls -l /etc/init.d/jboss1
lrwxrwxrwx 1 root root 11 Jul 27 17:24 /etc/init.d/jboss1 -> jboss
Но разрешение софт-ссылки не меняется.
Что мне здесь не хватает, чтобы изменить разрешение ссылки?
Ответы:
В системе Linux при изменении владельца символической ссылки с помощью
chown
по умолчанию изменяется цель символической ссылки (т. Е. Независимо от того , на что указывает символическая ссылка ).Если вы хотите сменить владельца самой ссылки, вам нужно использовать
-h
опцию дляchown
:Например:
Обратите внимание, что цель ссылки теперь принадлежит пользователю root.
И снова, ссылка
test1
все еще принадлежит пользователю root, хотяtest
и изменилась.И, наконец, мы меняем владельца ссылки, используя
-h
опцию.источник
cp -as
ниinstall
неln
могут напрямую создавать символические ссылки с указанным пользователем / группой.При работе с символьными ссылками вы должны указать большинству инструментов (chown, chmod, ls ...) не разыменовывать ссылку: вы должны добавить
-h
параметр, как указано в man-странице:Так что попробуйте :
sudo chown -h askar.admin /etc/init.d/jboss1
источник
Также обратите внимание, что ошибка, которую вы дали выше
не связано с тем, что владелец символической ссылки является кем-то другим, а не владельцем исходного файла. Это (скорее всего) вызвано тем, что у пользователя askar нет прав на запись в каталог
/etc/init.d
.источник