Warum ist der chown
Befehl nur root? Warum können Benutzer ohne Rootberechtigung chown nicht verwenden, um ihre eigenen Dateien weiterzugeben?
permissions
not-root-user
chown
Phleg
quelle
quelle
chown
zu verschenken Dateien , die sie besitzen. (Ich habe Systeme gesehen, bei denen es je nach Dateisystemkonfiguration möglich ist.)Antworten:
Die meisten Unix-Systeme verhindern, dass Benutzer Dateien „verraten“. Das heißt, Benutzer können nur ausgeführt werden,
chown
wenn sie über die Zielbenutzer- und Gruppenrechte verfügen. Da für die Verwendungchown
der Datei der Besitz der Datei oder der Root-Status erforderlich ist (Benutzer können niemals die Dateien anderer Benutzer übernehmen), kann nur root ausgeführt werdenchown
, um den Eigentümer einer Datei in einen anderen Benutzer zu ändern.Der Grund für diese Einschränkung ist, dass die Weitergabe einer Datei an einen anderen Benutzer in seltenen, aber immer noch wichtigen Situationen zu schlechten Ergebnissen führen kann. Zum Beispiel:
chown
diese Datei dann ausführen , um den Besitz eines anderen Benutzers Bill zu erlangen. Die Datei würde dann unter Bills Datenträgerkontingent zählen, obwohl nur Alice die Datei verwenden kann.quelle
/bin/bash
, festlegen und dannchown
an den gewünschten Benutzer senden kann . Jetzt haben sie als diese Person Shell-Zugriff.chown
löscht immer die Bits setuid und setgid.drwxr-xr-x ring0 ring0 .
) , in der Wurzel hat eine normale Datei (-rw-r--r-- root root file
), warum kann ich nicht tun ,chown ring0 file
da es trotzdem zu tun erlaubt, wiering0
,cp file x ; rm file ; mv x file
(und einige optionaltouch sometime file
...)?Unter Linux benötigen Sie die Funktion CAP_CHOWN, um chown auszuführen. root wird so gewährt. Weitere Erklärungen finden Sie unter: http://vouters.dyndns.org/tima/Linux-OpenVMS-C-Implementing_chown.html . Wenn Sie die CAP_CHOWN-Funktion bereitstellen möchten, erstellen Sie Ihren Code mit libcap-ng oder libcap wie folgt: http://vouters.dyndns.org/tima/Linux-PAM-C-Pluggable_Authentication_Modules_programming_example.html, wobei Sie CAP_AUDIT_WRITE einfach ersetzen müssen mit CAP_CHOWN.
quelle
Sie können den Befehl starten, er funktioniert jedoch nicht, wenn Sie kein Root-Benutzer sind. Es ist ganz einfach: Stellen Sie sich einen Benutzer vor, der aus einer Software einen Root-Benutzer machen kann. Es kann das Setuid-Bit hinzufügen und, voilà, der Kerl ist root! Die Verwendung kann also das Bit mit chmod hinzufügen, aber keine Chance, den Eigentümer von Dateien zu ändern.
quelle