2009-11-09 13:02:39 +0000 2009-11-09 13:02:39 +0000
319
319

chown не меняет символическую ссылку

Я пытаюсь изменить пользователя/группу символической ссылки командой:

$ chown -h myuser:mygroup mysymbolic/

Но она не меняется. Я вхожу в систему как root. Текущий пользователь/группа установлен в root:root. Что пошло не так?

Ответы (8)

391
391
391
2009-11-09 13:16:42 +0000

Я ставил косую черту в конце цели:

chown -h myuser:mygroup mysymbolic/

просто удалил косую черту в конце и работает. Вот правильный путь:

chown -h myuser:mygroup mysymbolic
29
29
29
2009-11-09 13:08:43 +0000

Я сам пробовал это, и это работает на меня. Если у вас есть -h, то меняется владелец символической ссылки, но если нет, то меняется владелец самого файла, а не ссылки.

Но кажется, что работа символической ссылки не связана с директорией

7
7
7
2013-12-30 16:43:51 +0000

Я не смог chown каталог даже с -h, но использование полного пути работало.

# ls -al
drwxr-xr-x 2 deploy deploy 4096 Dec 30 10:29 .
drwxr-xr-x 3 deploy deploy 4096 Dec 30 08:59 ..
lrwxrwxrwx 1 root root 32 Dec 30 09:02 apps -> /u/apps/
# chown -h deploy:deploy apps
# ls -al
drwxr-xr-x 2 deploy deploy 4096 Dec 30 10:29 .
drwxr-xr-x 3 deploy deploy 4096 Dec 30 08:59 ..
lrwxrwxrwx 1 root root 32 Dec 30 09:02 apps -> /u/apps/
# chown -h deploy:deploy apps/
# ls -al
drwxr-xr-x 2 deploy deploy 4096 Dec 30 10:29 .
drwxr-xr-x 3 deploy deploy 4096 Dec 30 08:59 ..
lrwxrwxrwx 1 root root 32 Dec 30 09:02 apps -> /u/apps/
# pwd 
/var/www/html
# chown -h deploy:deploy /var/www/html/apps
# ls -al
drwxr-xr-x 2 deploy deploy 4096 Dec 30 10:29 .
drwxr-xr-x 3 deploy deploy 4096 Dec 30 08:59 ..
lrwxrwxrwx 1 deploy deploy 32 Dec 30 09:02 apps -> /u/apps/
4
4
4
2017-12-05 11:02:14 +0000

Просто.

chown -h myuser:mygroup <symlink> [without trailing slash]

должно быть достаточно и работать!  

3
3
3
2012-04-26 09:15:50 +0000

Воссоздайте эту ссылку миузером у себя дома, и mv эту ссылку на целевое место по sudo.

Например: (как myuser), ln -s somedir/ linkname (будет разорванной ссылкой, если somedir/ не существует в каталоге пользователя)

Тогда, sudo mv linkname targetlocation (станет действительной ссылкой при условии, что targetlocation/somedir/ существует).

1
1
1
2014-09-16 17:46:29 +0000

У меня была похожая проблема. Для меня, я не мог chmod символическую ссылку даже как корень, независимо от того, как я называл chmod. Чтобы добавить путаницы, nautilus показывал владельца/группу как ничто. Владелец был просто пуст. Поэтому я попытался изменить символическую ссылку, используя nautilus, запущенный как root, так как chmod не работал и nautilus разбился!

Но я думаю, что понял проблему. Каталог, на который указывала символическая ссылка, имел другие разрешения, чем символическая ссылка. Поэтому я chmod'ed целевой каталог (используя -h) на имя пользователя/группы. Затем chmod'ed символическая ссылка на тот же самый каталог, и это сработало! И просмотр подробностей символической ссылки в nautilus (с правами root) больше не дает сбоев.

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

1
1
1
2016-08-11 05:24:48 +0000

Для Solaris (проверено на S11.3) для символической ссылки на каталог необходимо запустить

root@ac11x017:/var/tmp$ ls -lal dumpdir
lrwxrwxrwx 1 root root 16 Jun 15 09:08 dumpdir -> /data/dumpdir/
root@ac11x017:/var/tmp$ chown -RP oracle:oinstall dumpdir
lrwxrwxrwx 1 oracle oinstall 16 Jun 15 09:09 dumpdir -> /data/dumpdir/
```.
1
1
1
2015-11-01 19:12:57 +0000

Обратите внимание, что изменение owner symlink может работать только в том случае, если цель является acsible для нового пользователя, которому вы хотите ее назначить.

Например, если ваша цель находится в папке, которой пользователь, которому вы хотите ее назначить, не имеет достаточных прав, поведение ln -s command таково, что он вообще ничего не будет делать.

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

6
10
11
5
2