it-swarm-ru.tech

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

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

$ chown -h myuser:mygroup mysymbolic/ 

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

302
rizidoro

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

chown -h myuser:mygroup mysymbolic/ 

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

 chown -h myuser:mygroup mysymbolic
372
rizidoro

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

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

29
Arto Uusikangas

Я не смог 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/
5
Steve Tauber

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

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

4
Michael

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

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

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

3
wangdong

просто.

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

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

3
Aziz Zoaib

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

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

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

1
cgrey

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

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

1
AnomalySmith

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

[email protected]:/var/tmp$ ls -lal dumpdir
lrwxrwxrwx   1 root     root          16 Jun 15 09:08 dumpdir -> /data/dumpdir/
[email protected]:/var/tmp$ chown -RP Oracle:oinstall dumpdir
lrwxrwxrwx   1 Oracle   oinstall      16 Jun 15 09:09 dumpdir -> /data/dumpdir/
1
RaamEE