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

chown nie zmienia łącza symbolicznego

Próbuję zmienić użytkownika/grupę łącza symbolicznego za pomocą komendy:

$ chown -h myuser:mygroup mysymbolic/

Ale to się nie zmienia. Jestem zalogowany jako root. Aktualny użytkownik/grupa jest ustawiony na root:root. Co poszło nie tak?

Odpowiedzi (8)

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

Kładłem ukośnik na końcu celu:

chown -h myuser:mygroup mysymbolic/

właśnie usunąłem ukośnik na końcu i działa. Oto właściwy sposób:

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

Sama tego próbowałam i to działa na mnie. Jeśli masz -h to zmienia właściciela łącza symbolicznego, ale jeśli nie, to zmienia właściciela samego pliku, a nie łącza.

Ale wydaje się, że nie działa łącze symboliczne jest połączone z katalogiem

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

Nie byłem w stanie chown katalogu nawet z -h, ale użycie pełnej ścieżki działało.

# 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

po prostu.

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

powinien wystarczyć i działać!  

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

Odtwórz ten link przez myuser w domu myusera, a mv ten link do docelowej lokalizacji przez sudo.

Na przykład: (jako myuser), ln -s somedir/ linkname(będzie uszkodzonym linkiem jeśli somedir/ nie istnieje w katalogu użytkownika)

Następnie, sudo mv linkname targetlocation (stanie się ważnym linkiem pod warunkiem, że targetlocation/somedir/ istnieje)

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

Miałem podobny problem. Dla mnie nie mogłem chmodować symbolicznego ogniwa nawet jako korzeń, bez względu na to, jak nazwałem je chmodem. Aby dodać do tego zamieszania, nautilus pokazywał właściciela/grupę jako nic. Właściciel był po prostu pusty. Próbowałem więc zmienić symboliczny link używając nautilusa działającego jako root, ponieważ chmod nie działał i nautilus się rozbił!

Ale chyba zrozumiałem problem. Katalog, na który wskazywał symboliczny link, miał inne uprawnienia niż symboliczny link. Więc chmod'ed katalog docelowy (używając -h) do mojej nazwy użytkownika/grupy. Następnie chmod'ed symboliczny link do tego samego i to zadziałało! I oglądanie szczegółów symbolicznego linku w nautilusie (z uprawnieniami roota) teraz już się nie zawiesza.

Więc dla innych mających podobny problem, sprawdź uprawnienia katalogu/pliku docelowego i upewnij się, że jest on zgodny z uprawnieniami, do których ustawiasz symboliczny link.

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

Dla Solarisa (zweryfikowanego w S11.3) dla symbolicznego linku do katalogu trzeba będzie uruchomić

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

Zauważ, że zmiana owner symlink może działać tylko wtedy, gdy cel jest dostępny dla nowego użytkownika, do którego chcesz go przypisać.

Na przykład, jeśli cel znajduje się wewnątrz folderu, do którego użytkownik, któremu chcesz go przypisać nie ma wystarczających uprawnień, zachowanie ln -s command jest takie, że nie zrobi nic.