chown ändert den symbolischen Link nicht

312

Ich versuche, den Benutzer / die Gruppe eines symbolischen Links mit dem folgenden Befehl zu ändern:

$ chown -h myuser:mygroup mysymbolic/ 

Aber es ändert sich nicht. Ich bin als root angemeldet. Der aktuelle Benutzer / die aktuelle Gruppe wird auf root gesetzt: root. Was schief gelaufen ist?


quelle
Welches Betriebssystem verwenden Sie? Die Option -h wirkt sich laut manaul nur auf Systeme aus, die den Besitz von symbolischen Links ändern können.
Jichao
Sind Sie auf einem NFS-Mount?
Ortomala Lokni
Alles, was mit endet, /ist ein Verzeichnis. Sie meinen mysymbolic, das ist der symbolische Link, nicht mysymbolic/das Verzeichnis, auf das er verweist.
David Schwartz

Antworten:

381

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

chown -h myuser:mygroup mysymbolic/ 

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

 chown -h myuser:mygroup mysymbolic
Rizidoro
quelle
9
funktioniert nicht für mich auf Ubuntu
Radek
2
Wow, das hat Stunden gedauert.
definiert
54
@Radek Es funktionierte für mich unter Ubuntu, solange ich mich an die -hFlagge erinnerte .
IQAndreas
29
Funktioniert bei mir unter Ubuntu mit -h und ohne abschließenden Schrägstrich.
Friederblümle
8
Ich kann es nicht glauben, nach 4 Jahren bin ich in meine Vergangenheit gestoßen und habe das gleiche Problem, das Missin '-h'!
Antony D'Andrea
29

Ich habe es selbst versucht und es funktioniert bei mir. Wenn Sie das -h haben, ändert es den Eigentümer der symbolischen Verknüpfung, aber wenn Sie dies nicht tun, ändert es den Eigentümer der Datei selbst und nicht die Verknüpfung.

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

Arto Uusikangas
quelle
2
Für das, was es wert ist, ist die Manpage unter OS X bei der Option -h viel klarer als bei der unter (Arch) Linux. "-H Wenn es sich bei der Datei um eine symbolische Verknüpfung handelt, ändern Sie die Benutzer-ID und / oder die Gruppen-ID der Verknüpfung selbst." Vs. Systeme, die den Besitz eines Symlinks ändern können) ”
Matijs
6

Ich war nicht in der Lage, chownein Verzeichnis zu erstellen, obwohl -hdie Verwendung des vollständigen Pfads funktioniert hat.

# 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/
Steve Tauber
quelle
5

Ist das Ziel eine Datei oder ein Verzeichnis?

Wenn es sich um ein Verzeichnis handelt, versuchen Sie -H (Großbuchstabe H)


quelle
das ziel ist ein verzeichnis
Siehe meine bearbeitete Antwort zum Verzeichnis
6
Entschuldigung für die Thread-Nekromantie, aber ich möchte darauf hinweisen, dass die korrekte Syntax mit dem Kleinbuchstaben 'h' ist.
4

einfach.

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

sollte reichen und funktionieren!  

Aziz Zoaib
quelle
3

Erstellen Sie diesen Link von myuser bei myuser zu Hause neu und mv diesen Link zum Zielspeicherort von sudo.

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

Dann sudo mv linkname targetlocation(wird ein gültiger Link zur Verfügung gestellt targetlocation/somedir/)

Wangdong
quelle
Ihre Antwort ist ohne Detail und schwer zu verstehen. Bitte überdenken Sie Ihre Antwort, um weitere Einzelheiten zu erfahren.
James Mertz
1

Ich hatte ein ähnliches Problem. Für mich konnte ich den symbolischen Link nicht einmal als root chmod, unabhängig davon, wie ich chmod aufgerufen habe. Um dies noch zu verwirren, zeigte Nautilus den Besitzer / die Gruppe als nichts. Der Besitzer war nur leer. Also habe ich versucht, den symbolischen Link mit nautilus als root zu ändern, da chmod nicht funktionierte und nautilus abgestürzt ist !!

Aber ich glaube, ich habe das Problem herausgefunden. Das Verzeichnis, auf das die symbolische Verknüpfung zeigte, hatte andere Berechtigungen als die symbolische Verknüpfung. Also habe ich das Zielverzeichnis (mit -h) auf den Namen meines Benutzers / meiner Gruppe geändert. Dann wurde der symbolische Link zum selben geändert und es funktionierte! Und das Anzeigen der Details des symbolischen Links in Nautilus (mit Root-Berechtigungen) stürzt jetzt nicht mehr ab.

Wenn andere Benutzer ein ähnliches Problem haben, überprüfen Sie die Berechtigungen des Zielverzeichnisses / der Zieldatei und stellen Sie sicher, dass sie mit den Berechtigungen kompatibel sind, auf die Sie den symbolischen Link setzen.

cgrey
quelle
1

Beachten Sie, dass die Veränderung ownernur eines Symlink arbeiten kann , wenn das Ziel ist erreichbar durch den neuen Benutzer Sie es zuweisen möchten.

Befindet sich Ihr Ziel beispielsweise in einem Ordner, dem der Benutzer, dem Sie es zuweisen möchten, nicht über ausreichende Rechte verfügt, ist das ln -s commandVerhalten so, dass es überhaupt nichts unternimmt .

AnomalySmith
quelle
1

Für Solaris (verifiziert in S11.3) müssen Sie einen symbolischen Link zu einem Verzeichnis ausführen

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/
RaamEE
quelle