Ich habe eine Hausaufgabe zur Kernel-Programmierung unter Linux. Die Frage lautet:
Welches Linux-spezifische Privileg ist erforderlich, um den Besitz einer Datei beim Kopieren beizubehalten, und wie erhält man dieses Privileg?
Durch Experimente habe ich herausgefunden, dass ich ein Superuser sein muss, root
damit dies funktioniert. Gibt es eine genauere Möglichkeit, diesen Effekt zu erklären?
Antwort1
Sehen Sie sich diecapabilities(7)
Handbuchseite – Sie müssen die CAP_CHOWN
Möglichkeit haben, den Dateieigentümer über zu ändern chown()
. (Root hat alle Funktionen automatisch aktiviert. Auf der Handbuchseite wird erklärt, wie Sie die Funktionen in anderen Fällen erhalten.)
Es gibt keine separate Methode/Fähigkeit, um einfachbewahrenEigentumsrechte, da Dateikopien unter Linux einfach durch Lesen/Schreiben von Daten in die Zieldatei erstellt werden und dann dasselbe mit Metadaten gemacht wird. (Zum Vergleich: Windows NT hat SeBackupPrivilege
und SeRestorePrivilege
-Berechtigungen und die BackupRead()
/ BackupWrite()
-Aufrufe.)