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

chown ändert den symbolischen Link

Ich versuche, den Benutzer/Gruppe eines symbolischen Links mit dem Befehl:

$ chown -h myuser:mygroup mysymbolic/

zu ändern, aber es ändert sich nicht. Ich bin als root eingeloggt. Der aktuelle Benutzer/die aktuelle Gruppe wird auf root:root gesetzt. Was ging schief?

Antworten (8)

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

Ich habe einen Schrägstrich am Ende des Ziels gesetzt:

chown -h myuser:mygroup mysymbolic/

hat den Schrägstrich am Ende einfach entfernt und funktioniert. Hier ist der richtige Weg:

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

Ich habe das selbst versucht, und es funktioniert bei mir. Wenn Sie das -h haben, ändert es den Besitzer des symbolischen Links, aber wenn Sie es nicht haben, dann ändert es den Besitzer der Datei selbst und nicht den Link.

Aber es scheint nicht zu funktionieren, wenn der symbolische Link mit einem Verzeichnis verknüpft ist

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

Ich konnte selbst mit chown kein Verzeichnis -h erstellen, aber die Verwendung des vollständigen Pfades funktionierte.

# 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]

sollte genügen und funktionieren!  

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

Erstellen Sie diesen Link von myuser bei myuser zu Hause neu, und mv diesen Link zum Zielort durch sudo.

Zum Beispiel: (als myuser), ln -s somedir/ linkname(wird ein defekter Link sein, wenn somedir/ im Verzeichnis des Benutzers nicht existiert)

Dann, sudo mv linkname targetlocation (wird ein gültiger Link, vorausgesetzt, dass targetlocation/somedir/ existiert)

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

Ich hatte ein ähnliches Problem. Für mich konnte ich den symbolischen Link nicht einmal als Root chmodifizieren, unabhängig davon, wie ich chmod aufgerufen habe. Um Verwirrung zu stiften, zeigte nautilus den Besitzer/Gruppe als nichts an. Der Eigentümer war einfach leer. Also versuchte ich, den symbolischen Link mit nautilus als root zu ändern, da chmod nicht funktionierte und nautilus abstürzte!!

Aber ich glaube, ich habe das Problem herausgefunden. Das Verzeichnis, auf das der symbolische Link zeigte, hatte andere Berechtigungen als der symbolische Link. Also habe ich das Zielverzeichnis (mit -h) auf meinen Benutzer-/Gruppennamen umgestellt. Dann chmodierte ich den symbolischen Link auf dasselbe und es funktionierte! Und das Betrachten der Details des symbolischen Links in nautilus (mit Root-Rechten) stürzt jetzt nicht mehr ab.

Für andere, die ein ähnliches Problem haben, überprüfen Sie also die Rechte des Zielverzeichnisses/der Zieldatei und stellen Sie sicher, dass sie mit den Rechten, auf die Sie den symbolischen Link setzen, kompatibel sind.

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

Für Solaris (verifiziert auf S11.3) müssen Sie für einen symbolischen Link zu einem Verzeichnis

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/
``` ausführen
1
1
1
2015-11-01 19:12:57 +0000

Beachten Sie, dass das Ändern von owner eines Symlinks nur funktionieren kann, wenn das Ziel für den neuen Benutzer, dem Sie es zuweisen möchten, zugänglich ist.

Wenn sich Ihr Ziel beispielsweise in einem Ordner befindet, für den der Benutzer, dem Sie es zuweisen möchten, nicht genügend Rechte hat, ist das Verhalten von ln -s command so, dass es überhaupt nichts tut.