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.

Chown-Befehl symlinks

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.

Das könnte dich auch interessieren …