Was ist der Hauptunterschied zwischen chmod und chown?

43

In einigen Beispielen habe ich gesehen, dass einige chownanstelle von verwendet werden chmod. Ich weiß nicht, wo ich chmodund verwenden soll chown. Bitte erkläre mir den Unterschied zwischen ihnen, wann und warum ich beides verwenden soll.

saravana kumar kandasami
quelle
18
Niemand hat es explizit noch: eine ch anges die mod e und die andere ch anges den eigenen ihn. Lesen Sie auch den Mann ual.
Hören Sie auf, Monica
1
Und während chownauch ch ange die gr ou p wird chgrpspeziell für diese Aufgabe.
Hören Sie auf, Monica
6
Was ist der Hauptunterschied zwischen einer Banane und einem Stuhl? Setz dich nicht auf die Banane.
Shadur

Antworten:

48

Lassen Sie uns eine Datei erstellen

touch rainbow

Werfen wir einen Blick auf die Metadaten der Datei

$ ls -l rainbow
-rw-rw-r-- 1 zanna zanna 0 May 24 10:09 rainbow

Der erste Teil der Informationen ist der Dateityp ( -am Anfang bedeutet dies, dass es sich um eine reguläre Datei handelt) und die Berechtigungsbits

Danach sehen wir den Besitzer (zanna) und die Gruppe (zanna). Mit dem chownBefehl können wir Folgendes ändern:

$ sudo chown pixie rainbow
$ ls -l rainbow
-rw-rw-r-- 1 pixie zanna 0 May 24 10:09 rainbow

Und wir verwenden chmod, um die Berechtigungsbits zu ändern

$ sudo chmod 333 rainbow
$ ls -l rainbow
--wx-wx-wx 1 pixie zanna 0 May 24 10:09 rainbow

Da die Berechtigungsbits separat für Eigentümer, Gruppe und andere festgelegt werden, können Sie die Dateiberechtigungen für verschiedene Benutzer steuern, indem Sie chownund kombinieren chmod. In dieser Kurzanleitung finden Sie einen Schnellkurs zu Berechtigungen unter Linux.

Zanna
quelle
1
+1 für Bild .. Keine oktale Def obwohl? Oder zum chmod a+wBeispiel? Was zeitaufwändig ist, aber mehr Stimmen bekommt, denke ich: D
WinEunuuchs2Unix
2
@ WinEunuuchs2Unix haha ​​danke ... ich habe bewusst eine besonders nutzlose Berechtigungseinstellung gewählt. Wenn ich wirklich erkläre, wann und warum ich jede mögliche Permutation von chmodund chown(was bei weitem eine zu breite Frage ist) verwenden soll, wird meine Antwort für immer weitergehen. Der Versuch, es einfach zu halten
Zanna
96

Kurz gesagt, chownwird verwendet, um den Besitz einer Datei zu ändern, während die Dateimodusbits geändert werden chmod.

  • chown definiert, wem die Datei gehört.
  • chmod definiert wer was kann.

Wenn Sie jemanden zum Eigentümer einer Datei machen, kann er fast überall, wo er möchte, diese Datei bearbeiten. Er kann beispielsweise chmoddie Modifikationen (z. B. Berechtigungen) ändern, um zu definieren, wer was tun darf.

$ ls -l file
-rwxrwxr-x  2  ravexina admins   26 May  9 12:49 file

In der obigen Zeile sehen wir, dass dies ravexinader Eigentümer der Datei und adminsdie Gruppe ist. Ich kann verwenden: sudo chown dave:sudo fileum den Besitzer der Datei daveund die Gruppe zu ändern sudo; Jetzt gehört die Datei "Dave" und allen in der "Sudo" -Gruppe.

Mit chmoddefinieren wir jedoch, wer was kann? Wer hat das Recht, eine Datei zu lesen, in eine Datei zu schreiben oder auszuführen. z.B:

chmod 777 file

Erteilt jedem das Recht zum Lesen, Schreiben und Ausführen, einschließlich dem Eigentümer, der Gruppe und allen anderen.

Aus turnoff.us : Bildbeschreibung hier eingeben

Ravexina
quelle
1
Der Eigentümer kann die Datei nicht nach Belieben bearbeiten. Zum Löschen oder Verschieben sind Schreibrechte für das enthaltene Verzeichnis erforderlich.
muru
2
@muru das stimmt;) Ich meinte lesen / schreiben / ausführen, es gibt auch chattrwas die Datei beeinflussen kann, denke ich.
Ravexina
1
@KamilMaciorowski Du weißt das, ich weiß das, Ravexina weiß das, aber die meisten Leute wissen es nicht.
muru
2
@KamilMaciorowski Ich habe dich nicht gebeten, etwas vorzutäuschen. Was Sie vermissen, ist, dass die meisten Leute das Löschen oder Umbenennen einer Datei nicht als Operationen im Verzeichnis betrachten, sondern als Operationen in der Datei. Deshalb haben wir Fragen wie diese haben: superuser.com/q/373115/334516 , unix.stackexchange.com/q/48579/70524 , askubuntu.com/q/240424/158442 Offensichtlich wissen Sie , diese sind Operationen auf dem Verzeichnis (Glückwünsche !), aber es gibt ein weit verbreitetes Missverständnis. Daher habe ich festgestellt, dass das Umbenennen oder Löschen Berechtigungen für das Verzeichnis und nicht für die Datei umfasst. ...
muru
1
@KamilMaciorowski ... Diese Frage wurde von einem Benutzer gestellt, der den Unterschied zwischen chmod und chown nicht kennt. Daher erscheint es mir vernünftig, dass er nicht wissen würde, dass das Umbenennen einer Datei Berechtigungen für das Verzeichnis erfordert.
muru
19

Wenn Sie die Berechtigungen einer Datei (oder eines Verzeichnisses oder was auch immer) berücksichtigen, gibt es zwei Faktoren:

  • Wem gehört die Datei - dem Benutzer und der Gruppe, und
  • was sie damit machen können - lesen, schreiben, ausführen oder eine Kombination davon.

chownbefasst sich mit dem wer . chmodbefasst sich mit dem was . Sie können nicht eins anstelle des anderen verwenden.

Einfache Unix-Berechtigungen klassifizieren Benutzer, die versuchen, auf eine Datei zuzugreifen, in drei Typen:

  1. der Besitzer der Datei
  2. Benutzer, die Mitglieder der Gruppe sind, die die Datei besitzt
  3. alle anderen

chownwird verwendet, um die ersten beiden zu ändern. chmodwird verwendet, um die für diese Typen gewährten Rechte zu ändern.

muru
quelle
7

Ein paar Punkte / Tipps, die zu den vorherigen ausgezeichneten Antworten hinzugefügt werden sollen:

  • Sie müssen über die Ausführungsberechtigung für ein Verzeichnis (und alle darüber liegenden Verzeichnisse) verfügen, um darauf zugreifen zu können
  • Verwenden Sie die Option -R, um die Änderungen rekursiv auf alles anzuwenden, einschließlich und unterhalb des Ziels, z chown -R www-data files/
  • Sie können Benutzer und Gruppe gleichzeitig mithilfe der Syntax ändern chown user:group myfile
  • Häufig ist es einfacher / besser, die Optionen '+' und '-' zu verwenden, als absolute Berechtigungen festzulegen, insbesondere wenn es sich um eine Kombination aus Dateien und Verzeichnissen handelt. Wenn Sie beispielsweise Gruppenschreibberechtigungen für ein Verzeichnis und alles darunter erteilen chmod -R 775 files/möchten, wird "files /" und alles darin und darunter für alle ausführbar und lesbar. Dies ist möglicherweise nicht das gewünschte Ergebnis für jede Datei. Mit chmod -R g+w files/wird nur die Gruppenschreibberechtigung hinzugefügt, ohne etwas anderes zu berühren.
James-Geldart
quelle
6

Sehr gute Antworten schon, aber ich möchte einen Beitrag leisten, bei dem die Berechtigungen sehr einfach zu verstehen sind

chmod u=r+w,o=r-w,g=-r-w test.php

u = user
o = other
g = group

Auf diese Weise können Sie einfach Berechtigungen an eine Datei anhängen. Im obigen Beispiel

user = read + write
other = read but not write
group = not read not write

Und vergessen -RSie nicht, wenn Sie Berechtigungen rekursiv ändern möchten.

Adam
quelle
1

chownÄndert, wem die Datei gehört und zu welcher Gruppe sie gehört, während sich chmodändert, wie die Eigentümer und Gruppen auf die Datei zugreifen können (oder ob sie überhaupt darauf zugreifen können).

Bruno Finger
quelle