Linux Chown Command Tutorial für Anfänger (12 Beispiele)
Unter Linux kann es vorkommen, dass Sie den Eigentümer und gruppenbezogene Informationen für eine Datei oder ein Verzeichnis ändern möchten. Wenn du ein Anfänger in der Kommandozeile bist und wissen möchtest, wie du solche Änderungen über die Kommandozeile vornehmen kannst, wirst du froh sein zu wissen, dass es einen Befehl – synchronisiertes Chown – gibt, der dich dies tun lässt.
Bevor wir mit dem Tutorial zum Chown-Befehl beginnen, ist es erwähnenswert, dass alle hier genannten Beispiele und Anweisungen mit Ubuntu 18.04 LTS getestet wurden. Außerdem ist die Chown-Version, die wir verwendet haben, 8.28.
Linux chown Befehl
Wie bereits eingangs erwähnt, können Sie mit dem Befehl chown den Eigentümer der Datei und die Gruppe über die Befehlszeile ändern. Es folgt die generische Syntax des Befehls:
chown [OPTION]... [OWNER][:[GROUP]] FILE...
Hier ist, was die Man Page des Tools darüber sagt:
If only an owner (a user name or numeric user ID) is given, that user is made the owner of each given file, and the files' group is not changed. If the owner is followed by a colon and a group name (or numeric group ID), with no spaces between them, the group ownership of the files is changed as well. If a colon but no group name follows the user name, that user is made the owner of the files and the group of the files is changed to that user's login group. If the colon and group are given, but the owner is omitted, only the group of the files is changed; in this case, chown performs the same function as chgrp. If only a colon is given, or if the entire operand is empty, neither the owner nor the group is changed.
Die folgenden Q&A-Beispiele geben Ihnen eine gute Vorstellung davon, wie der Befehl chown funktioniert:
Q1. Wie kann man den Eigentümer einer Datei ändern?
Betrachten Sie das folgende Beispiel:
Hier ist der Eigentümer der Datei’himanshu‘ und die Gruppe, zu der sie gehört, ist ebenfalls’himanshu‘. Um nun den Besitzer zu ändern, sagen wir mal’root‘, verwenden Sie den folgenden Befehl:
chown root file1
Der folgende Screenshot bestätigt, dass der Besitzer nun auf’root‘ geändert wurde.
Q2. Wie kann man die Gruppe einer Datei ändern?
Die Änderung der Gruppe ist vergleichbar mit der Änderung des Eigentümers. Der einzige Unterschied besteht in der Syntax des Befehls, die wie folgt lautet:
chown :[group-name] [file-name]
Angenommen, die Anforderung besteht darin, die Gruppe von ‚file1‘ auf ‚root‘ zu ändern. Dann wäre der Befehl:
chown :root file1
Der folgende Screenshot zeigt, dass die Gruppe erfolgreich von ‚himanshu‘ auf ‚root‘ umgestellt wurde.
Hinweis: Falls Sie sich fragen, warum der Befehl’sudo‘ verwendet wurde, oder falls Sie neu bei’sudo‘ sind, sollten Sie zuerst unser Tutorial zu diesem Tool durchgehen.
Q3. Wie kann man Besitzer und Gruppe einer Datei ändern?
Um sowohl den Besitzer als auch die Gruppe der Datei zu ändern, verwenden Sie die folgende Syntax:
chown [new-owner]:[new-group] [file-name]
In unserem Fall werden wir also, um den bestehenden Besitzer und die Gruppe von’root‘ auf’himanshu‘ zu ändern, den folgenden Befehl verwenden:
chown himanshu:himanshu file1
Der folgende Screenshot zeigt den obigen Befehl in Aktion:
Q4. Wie kann man den Besitzer oder die Gruppe (oder beides) ändern, nachdem man den vorhandenen Besitzer/Gruppe überprüft hat?
Es kann Situationen geben, in denen Sie vielleicht zuerst den vorhandenen Besitzer/Gruppe einer Datei überprüfen möchten, bevor Sie eine Änderung vornehmen. Für diese Fälle kannst du also die Option –from von der Kommandozeile aus verwenden. Diese Option erfordert, dass Sie den Eigentümer/Gruppennamen angeben, den Sie überprüfen möchten.
chown --from=[curr-own]:[curr-group] [new-owner]:[new-group] [filename]
Zum Beispiel:
chown --from=root:himanshu himanshu:root file1
Der obige Befehl prüft, ob der bestehende Besitzer ‚root‘ und die Gruppe ‚himanshu‘ ist. Wenn ja, dann wird der Besitzer auf’himanshu‘ geändert und die Gruppe wird zu’root‘.
Q5. Wie kann man Besitzer-/Gruppeninformationen aus einer Referenzdatei übernehmen?
Es kann auch Situationen geben, in denen Sie möchten, dass chown Eigentümer- und gruppenbezogene Informationen aus einer Datei aufnimmt, anstatt sie manuell über die Befehlszeile einzugeben. In diesen Fällen können Sie die Befehlszeilenoption –reference verwenden. Bei dieser Option müssen Sie den Namen der Referenzdatei eingeben.
chown --reference=[ref-file-name] [filename]
Zum Beispiel:
chown --reference=file2 file1
Der obige Befehl kopiert also die Eigentümer- und Gruppeninformationen von Datei2 nach Datei1.
Q6. Wie lässt man chown rekursiv mit Dateien und Verzeichnissen arbeiten?
Um den Befehl chown rekursiv auf Dateien und Verzeichnisse anzuwenden, verwenden Sie die Befehlszeilenoption -R.
chown -R [new-owner]:[new-group] [directory-name-or-path]
Für diejenigen, die es nicht wissen, bedeutet rekursiv, dass die Operation für alle Dateien im angegebenen Verzeichnis sowie für Dateien und Verzeichnisse in allen Unterverzeichnissen durchgeführt wird.
Q7. Wie kann man Chown dazu bringen, Fehlermeldungen zu unterdrücken?
Es kann vorkommen, dass der Befehl chown, den Sie ausführen, einen Fehler anzeigt. Zum Beispiel den folgenden Befehl, wenn er auf meinem System ausgeführt wird:
chown --from=himanshu:himanshu himanshu:root file4
gab den folgenden Fehler an:
chown: cannot access 'file4': No such file or directory
Angenommen, die Anforderung ist, dass das Tool solche Fehler nicht anzeigen sollte. Dann kann dies mit der Kommandozeilenoption -f ermöglicht werden.
Der vorgenannte Screenshot bestätigt, dass die Kommandozeilenoption -f Fehler/Warnungen unterdrückt.
Q8. Wie kann man den Gruppenbesitz in die Anmeldegruppe des angegebenen Benutzers ändern?
Dies kann mit der Syntax[user/owner]: erfolgen. Zum Beispiel der folgende Befehl:
chown himanshu: file1
Wird sicherstellen, dass das Eigentum an ‚himanshu‘ übergeben wird und die Gruppe in die Anmeldegruppe von ‚himanshu‘ geändert wird. Beachten Sie, dass dies anders ist als der Fall, wenn Doppelpunkt (:) nicht verwendet wird, da in diesem Fall (erklärt in Q1 oben), die Gruppe unverändert bleibt.
Eine weitere erwähnenswerte Sache ist, dass, wenn Sie nur einen Doppelpunkt (:) verwenden, ohne einen Besitzer oder eine Gruppe anzugeben, dann wird keine Änderung vorgenommen. Zum Beispiel:
chown : file1
Dieser Befehl hat keinen Einfluss auf das Eigentum des Benutzers oder der Gruppe an der Datei.
Q9. Wie funktioniert Chown mit symbolischen Links?
Wenn Sie versuchen, das Eigentum von Benutzern und Gruppen an einem symbolischen Link zu ändern, wird es standardmäßig keine Änderung geben. Stattdessen erhält die Datei, auf die sie verweist, diese Änderungen.
Der folgende Screenshot zeigt zum Beispiel, dass ich einen symbolischen Link’link1′ erstellt habe, dessen Benutzer- und Gruppenbesitzer auf’himanshu‘ gesetzt sind. Dann habe ich den Befehl chown ausgeführt, um Benutzer und Gruppe auf’root‘ zu ändern. Aber der Befehl hatte keinen Einfluss auf die symbolische Link-Datei – stattdessen ist es’file1′ (auf die symbolische Link-Punkte zeigen), deren Benutzer- und Gruppenbesitzer geändert wurden.
Wenn Sie möchten, können Sie dieses Standardverhalten jedoch mit der Option -h überschreiben.
Q10. Wie kann man Besitzer und Gruppe für ein Verzeichnis ändern?
Genauso wie bei Dateien. Nachfolgend ein Beispiel:
chown root:root ./test-dir/
Beachten Sie, dass Sie den Eigentümer und die Gruppenänderung für ein Verzeichnis mit dem Befehl stat überprüfen können – die Felder UID und GID in der Ausgabe zeigen Benutzer- und Gruppennamen an.
Beispielsweise in meinem Fall zeigte die Ausgabe dem geänderten Benutzer deutlich eine Gruppenzugehörigkeit.
File: test-dir Size: 4096 Blocks: 8 IO Block: 4096 directory Device: 808h/2056d Inode: 11928001 Links: 2 Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2018-08-07 10:31:04.867467573 +0530 Modify: 2018-08-07 10:30:53.651807123 +0530 Change: 2018-08-07 10:32:49.644427930 +0530 Birth: -
Beachten Sie, dass Sie bei rekursiven Änderungen (siehe Q&A zur Option -R) und bei symbolischen Links über die folgenden Möglichkeiten verfügen:
The following options modify how a hierarchy is traversed when the -R option is also specified. If more than one is specified, only the final one takes effect.
-H if a command line argument is a symbolic link to a directory,
traverse it
-L traverse every symbolic link to a directory encountered
-P do not traverse any symbolic links (default)
Q11. Können UID und GID anstelle von Benutzer- und Gruppennamen verwendet werden?
Ja, Sie können anstelle von Namen auch Benutzer- und Gruppen-ID verwenden. Die Syntax des Befehls bleibt jedoch unverändert.
Zum Beispiel:
chown 1000:1000 file1
Der obige Befehl ändert den Benutzer- und Gruppenbesitz auf den Benutzer mit UID 1000 und die Gruppe mit GID 1000.
Q12. Wie kann man erreichen, dass die Chown-Details des Betriebs im Output angezeigt werden?
Wenn Sie möchten, dass der Befehl chown Details der von ihm ausgeführten Operation anzeigt, verwenden Sie die Befehlszeilenoption -v.
Zum Beispiel dieser Befehl:
sudo chown himanshu:himanshu link1 -v
erzeugt die folgende Ausgabe:
changed ownership of 'link1' from root:root to himanshu:himanshu
Nun gibt es noch eine weitere Option -c, die sich auch wie -v verhält, nur dass sie keine Details anzeigt, wenn nichts geändert wird.
Fazit
Der Befehl chown, wie die meisten von Ihnen wahrscheinlich zustimmen würden, ist nicht schwer zu benutzen. Was noch besser ist, ist, dass die Man Page des Tools viele Details enthält, die für Benutzer (insbesondere Anfänger) hilfreich sein könnten. Probieren Sie die Beispiele aus, die wir hier erklärt haben, und für den Rest der Funktionen/Optionen gehen Sie die chown man page durch. Im Falle von Zweifeln oder Fragen hinterlassen Sie unten einen Kommentar.