Как изменить владельца символических ссылок?

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

53
30.08.2017, 18:25
3 ответа

В системе Linux при изменении владельца символической ссылки с помощью chown по умолчанию изменяется цель символической ссылки (т. Е. независимо от символической ссылка указывает на ).

Если вы хотите изменить владельца самой ссылки, вам нужно использовать параметр -h для chown :

-h, --no-dereference влияет на каждую символическую ссылку вместо любого файла, на который имеется ссылка (полезно только в системах, которые могут изменять владельца символической ссылки)

Например:

$ touch test
$ ls -l test*
-rw-r--r-- 1 mj   mj   0 Jul 27 08:47 test
$ sudo ln -s test test1
$ ls -l test*
-rw-r--r-- 1 mj   mj   0 Jul 27 08:47 test
lrwxrwxrwx 1 root root 4 Jul 27 08:47 test1 -> test
$ sudo chown root:root test1
$ ls -l test*
-rw-r--r-- 1 root root 0 Jul 27 08:47 test
lrwxrwxrwx 1 root root 4 Jul 27 08:47 test1 -> test

Обратите внимание, что цель ссылки теперь принадлежит пользователю root.

$ sudo chown mj:mj test1
$ ls -l test*
-rw-r--r-- 1 mj   mj   0 Jul 27 08:47 test
lrwxrwxrwx 1 root root 4 Jul 27 08:47 test1 -> test

И снова ссылка test1 по-прежнему принадлежит пользователю root, хотя test изменился.

$ sudo chown -h mj:mj test1
$ ls -l test*
-rw-r--r-- 1 mj mj 0 Jul 27 08:47 test
lrwxrwxrwx 1 mj mj 4 Jul 27 08:47 test1 -> test

И, наконец, мы меняем владельца ссылки, используя параметр -h .

79
27.01.2020, 19:33

Также обратите внимание, что указанная вами выше ошибка

ln: creating symbolic link `/etc/init.d/jboss1': Permission denied

не связана с тем, что владельцем символической ссылки является кто-то еще, а не владелец исходного файла. Это (наиболее вероятно) вызвано тем, что пользователь askar не имеет права записи в каталог /etc/init.d .

4
27.01.2020, 19:33

При работе с символическими ссылками вы должны указать большинство инструментов (chown, chmod , ls ...), чтобы не разыменовать ссылку: вы должны добавить параметр -h , как указано на странице руководства:

-h, --no-dereference
          affect symbolic links instead of any referenced file (useful only on systems that can change the ownership of a symlink)

Итак, попробуйте: sudo chown -h askar.admin / etc /init.d/jboss1

9
27.01.2020, 19:33

Теги

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