Könnten Sie bitte erklären, warum eine binär kompilierte Datei (z. B. in /usr/sbin
) Schreibberechtigung für root
Benutzer hat?
Für mich ist dies zusammengestellt. Dies bedeutet, dass direktes Schreiben keine Verwendung hat und die Datei auf irgendeine Weise einem Sicherheitsproblem ausgesetzt sein kann.
Ein Skript (z. B. eine bash
Datei) ist möglicherweise beschreibbar, da es sich im Grunde genommen um eine Textdatei handelt. Warum ist es jedoch für eine kompilierte Datei, für die meines Wissens eigentlich kein Schreiben erforderlich ist, dasselbe?
Vielen Dank im Voraus für Ihr Feedback.
linux
files
permissions
root
t1m0th33
quelle
quelle
root
Schreibzugriff auf eine Binärdatei hat. Wenn nichts anderes hilft es beim Upgrade dieses Pakets.memmove()
verschieben Sie den letzten Teil zum Ende und öffnen Sie eine Lücke, und fügen Sie dann neuen Text in die Lücke ein. Oder Sie können eine Reihe vonpread()
/ verwendenpwrite()
, um dasselbe zu tun.ETXTBSY
). Stattdessen wird die alte Binärdatei entfernt und die neue Binärdatei in eine neue Datei mit demselben Namen geschrieben. Für das Entfernen von Dateien sind keine Schreibrechte erforderlich, lediglich für das enthaltene Verzeichnis (dh/usr/sbin/
).Antworten:
Es spielt keine Rolle, ob die Dateien in
/bin
(oder einem anderen Standardverzeichnis, in dem ausführbare Dateien gespeichert sind) von root geschrieben werden können oder nicht. Auf einem Linux-Server, den ich verwende, sind sie von root schreibbar, auf meiner OpenBSD-Maschine jedoch nicht.Solange sie nicht von der Gruppe oder von "anderen" beschreibbar sind!
Es gibt keine Sicherheitslücke, z
Wenn jemand es überschreiben wollte, musste er root sein, und wenn er es ist
root
und überschreibt, dann sind sie es auchEine andere zu berücksichtigende Sache ist, dass root in die Datei schreiben kann, egal ob sie schreibgeschützt ist oder nicht, weil ... root.
Beachten Sie auch, dass "ein Skript" genauso ausführbar ist wie eine Binärdatei. Ein Skript muss nicht beschreibbar sein, "weil es eine Textdatei ist". Wenn überhaupt, sollte es wahrscheinlich nur dieselbe Berechtigung haben wie die anderen ausführbaren Dateien im selben Verzeichnis.
Ändern Sie jetzt nicht die Berechtigungen für alles! Dies kann allerlei Chaos anrichten und Paketmanager verwirren, die möglicherweise überprüfen, ob die Berechtigungen ordnungsgemäß festgelegt wurden. Dies kann das System auch anfällig machen, wenn Sie die Berechtigungen für eine sicherheitskritische Anwendung versehentlich auf die falsche Weise ändern.
Gehen Sie einfach davon aus, dass die Berechtigungen für die ausführbaren Dateien korrekt eingestellt sind, es sei denn, Sie finden etwas wirklich Seltsames. In diesem Fall sollten Sie sich wahrscheinlich an den entsprechenden Paketbetreuer wenden, um zu überprüfen, anstatt Änderungen vorzunehmen.
In den Kommentaren und im Chat wurde nach etwas Geschichte gerufen.
Die Geschichte der Berechtigungen für Binärdateien unter Linux ist nichts, wovon ich etwas weiß. Es kann spekuliert werden, dass sie einfach die Berechtigungen aus dem Verzeichnis oder nur aus dem Standard
umask
von Linux geerbt haben , aber ich weiß es wirklich nicht.Was ich weiß ist, dass OpenBSD die Binärdateien im Basissystem 1 standardmäßig mit dem Berechtigungsmodus 555 installiert (
-r-xr-xr-x
). Dies wird in einem Makefile-Fragment angegeben, in/usr/share/mk/bsd.own.mk
demBINMODE
555 festgelegt ist (sofern es nicht bereits festgelegt ist). Dies wird später bei der Installation der ausführbaren Dateienmake build
in verwendet/usr/src
.Ich habe mir das mit Anmerkungen versehene CVS-Protokoll für diese Datei angesehen und festgestellt, dass diese Zeile in der Datei unverändert ist, seit sie 1995 aus NetBSD importiert wurde.
Unter NetBSD wurde die Datei 1993 zum ersten Mal in CVS gestellt und
BINMODE
auf 555 gesetzt.Das FreeBSD-Projekt verwendet anscheinend seit mindestens 1994 genau dieselbe Datei wie NetBSD und fügt bei einem späteren Commit einen Hinweis in die Commit-Meldung ein, dass die alten Dateien aus der 4.4BSD-Version der Berkeley Software Distribution stammen.
Darüber hinaus hat die CSRG in Berkeley die Quellen in SCCS gespeichert, ihr Repository ist jedoch in Git-Form auf GitHub 2 verfügbar . Die Akte, die wir hier forencisch behandeln, scheint von Keith Bostic (oder jemandem in seiner Nähe) im Jahr 1990 begangen worden zu sein .
Das ist also diese Geschichte. Wenn Sie das Warum wollen , dann müssen wir wahrscheinlich Keith fragen. Ich hatte gehofft, eine Commit-Nachricht zu einer Änderung zu erhalten, in der stand: " Das muss 555 sein, weil ... ", aber nein.
1 BSD-Systeme sind strenger in "Basissystem" - und "3rd-Party-Pakete" (Ports / Pakete) unterteilt als Linux. Das Basissystem ist eine zusammenhängende Einheit, die einen vollständigen Satz von Funktionen zum Ausführen des Betriebssystems bereitstellt, während die Ports oder Pakete als "lokale Software" angesehen und unter installiert werden
/usr/local
.2 Ein umfassenderes GitHub-Repository für Unix-Versionen ab den 70er Jahren ist ebenfalls verfügbar .
quelle
root
.chmod -R
gestellt hat,/usr
oder/var
, und Überraschung - siesudo
funktionieren nicht oder etwas anderes funktioniert nicht.