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


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

$ chown -h myuser:mygroup mysymbolic/ 

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


271
2017-11-09 13:02


Источник


Какую операционную систему вы используете? В соответствии с мануальной страницей опция -h влияет только на системы, которые могут изменить право собственности на символическую ссылку. - Jichao
Вы на монте NFS? - Ortomala Lokni
Все, что заканчивается / это каталог. Ты имеешь в виду mysymbolic, который является символической ссылкой, а не mysymbolic/ который, вероятно, является справочником, на который он указывает. - David Schwartz


Ответы:


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

chown -h myuser:mygroup mysymbolic/ 

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

 chown -h myuser:mygroup mysymbolic

340
2017-11-09 13:16



не работает для меня на ubuntu - Radek
Вау, мне потребовались часы. - defines
@Radek Это работало для меня на Ubuntu, пока я помнил -h флаг. - IQAndreas
Работает для меня на Ubuntu с  -h а также без конечная косая черта. - friederbluemle
Я не могу поверить через 4 года, я столкнулся с моим прошлым «я», страдающим одной и той же проблемой, «missin '-h»! - Antony D'Andrea


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

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


25
2017-11-09 13:08



Для чего это стоит, man-страница на OS X намного понятнее на -h, чем на Linux. "-H Если файл является символической ссылкой, измените идентификатор пользователя и / или идентификатор группы самой ссылки." Vs. "-h, --no-dereference влияет на символические ссылки, а не на любой ссылочный файл (полезно только на системы, которые могут изменить право собственности на символическую ссылку) " - Matijs


Я не смог 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
2017-12-30 16:43





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

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


4
2017-11-09 13:08



цель - это каталог
см. мой отредактированный ответ о каталоге
Извините за некромантию нити, но я хотел бы указать, что правильный синтаксис имеет строчный «h».


Восстановите эту ссылку myuser в доме myuser, и mv эту ссылку на целевое местоположение sudo.

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

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


3
2018-04-26 09:15



Ваш ответ без подробностей и трудно понять. Пожалуйста, подумайте над тем, чтобы пересмотреть свой ответ, чтобы предоставить более подробную информацию. - KronoS


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

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

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


1
2017-09-16 17:46





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

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


1
2017-11-01 19:12





Для 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
2017-08-11 05:24