295

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

$ chown -h myuser:mygroup mysymbolic/ 

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

9 ответов9

365

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

chown -h myuser:mygroup mysymbolic/ 

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

 chown -h myuser:mygroup mysymbolic
27

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

Но это не похоже на работу символической ссылки связана с каталогом

5

Я не смог 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

Является ли цель файлом или каталогом?

Если это каталог, попробуйте -H (верхний регистр H)

3

Повторно создайте эту ссылку myuser в доме myuser и передайте эту ссылку на целевое местоположение с помощью sudo.

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

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

2

просто.

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

должно хватить и работать!  

1

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

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

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

1

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

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

1

Для 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/

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .