
Mir ist die Frage gekommen, ob die Installation des Quellcodes im Root-Konto aus Sicherheitsgründen keine gute Idee ist.
Mein Standpunkt dazu ist, dass es nicht wirklich wichtig ist, ob jemand ein Root-Konto hat, wenn er mit dem Entpacken des Codes beginnt und dann die Schritte zur Installation ausführt.
#./configure
#make
#make install
im Gegensatz zu:
$./configure
$make
$sudo make install
Meine Logik lautet: Es spielt keine Rolle, denn wenn es ein Sicherheitsrisiko verursacht, liegt es am Code selbst und nicht an der Art der Installation, da der Befehl „end“ Root verwendet, um die endgültige Binärdatei und alle damit installierten Dateien zu installieren.
Unabhängig davon, ob man sich in einer Nicht-Root-Benutzersitzung befindet oder nicht, wenn der Quellcode Malware enthält, ist diese nun auf jeden Fall im System. Daher besteht immer ein Risiko, egal was passiert.
Dies hat nichts mit dem eigenen Code zu tun, sondern eher mit dem eigenen Repo, das keine App enthält. Gehen Sie daher zu Git Hub oder der Website der Person, die es geschrieben hat, und verwenden Sie den Quellcode, um es zu installieren. Sogar etwas so Einfaches wie die Installation von Tree.
Der Benutzer muss sich dann mehr Gedanken darüber machen, wie er an den Quellcode gekommen ist, als wenn er mit dem Root-Konto oder einem „normalen“ Benutzerkonto angemeldet ist.
Ich habe bereits alle Argumente gehört, warum man root nicht verwenden sollte, weil mangelnde Aufmerksamkeit beim Schreiben ins Terminal irreversible Schäden am System verursachen kann; mit sudo kann man genauso viel Schaden anrichten, daher ist das an sich ein redundantes Argument und Glaubenssystem. Daher ist es nicht einmal Teil des Punktes, der in diesem Argument enthalten ist.
Dies ist mehr oder weniger eine Ja- oder Nein-Frage. Ja – ich habe recht, es spielt auf lange Sicht keine Rolle, ob jemand sein Root-Konto verwendet, um Quellcode-Apps zu kompilieren und in das System zu installieren, oder nicht.
oder
Nein, ich liege falsch. Es ist wichtig, weil Sie hierfür Root-Rechte benötigen.
Antwort1
Wenn Sie das Ausführen von Programmen als Root überbeanspruchen, bieten Sie einem potentiellen Angreifer mehr Angriffspunkte als nur die „notwendigen“. Versuche, Ihr System zu kompromittieren, werden ohne Root-Privilegien meist nicht funktionieren (oder schwieriger sein). Ihr Vorgehen mit allen Befehlen als Root kann auch dazu führen, dass Sie einfach alles als Root ausführen (ein Verzeichnis auflisten, ein Bild öffnen, Musik abspielen ...), und das bedeutet viele potentiell problematische Stellen.
Sogar unbeabsichtigt – ein Fehler in einem Programm, das Sie ausführen, kann viel mehr Schaden anrichten, wenn Sie es als Root ausführen (und es ist praktisch unmöglich, alle Fehler aus der Software zu entfernen). Oder wenn der Benutzer falsche Optionen eingibt (viel wahrscheinlicher).
Darüber hinaus möchten Sie, wenn Sie ./configure
und verwenden make
, das Programm möglicherweise nicht für alle installieren (es könnte sich beispielsweise um eine Bibliothek handeln, die nur Sie benötigen).
Antwort2
Wenn Sie vermuten, dass das Programm, das Sie installieren,bösartig, führen Sie es nicht als Root oder als Ihr normaler Benutzer aus. Dies umfasst sowohl das Ausführen des kompilierten Programms als auch das Ausführen der bereitgestellten Build-Skripte. Sobald ein Angreifer Code als Sie ausgeführt hat, besitzt er Ihr Konto (und Ihr Computer gehört ihm spätestens, sobald Sie von diesem Konto aus Root-Rechte erhalten). Es spielt keine Rolle, ob der Code des Angreifers ausgeführt wurde, weil Sie ausgeführt haben make
oder weil Sie ausgeführt haben make install
.
Der Sinn des Erstellens als Ihr normaler Benutzer und der Installation als Root besteht darin, die Risiken zu verringern,versehentlichProbleme. Trotzdem sollten Sie normalerweise keine selbst erstellten Programme als Root installieren, es sei denn, dies ist erforderlich (z. B. um einen Treiber oder Systemdienst zu installieren). Installieren Sie als Ihr eigener Benutzer in einem separaten Verzeichnis und verwenden Sie dann ein Programm wieverstauenum das Programm in Standardverzeichnissen ( /usr/local/bin
usw.) verfügbar zu machen. Dies verringert das Risiko, dass der Installationsschritt vorhandene Software überschreibt (es könnte zu einer Namenskollision kommen) oder in unbeabsichtigte Verzeichnisse schreibt, und erleichtert die Deinstallation des Programms, da sich alle Dateien an einem Ort befinden.
Antwort3
Als Benutzer Joe,
./configure
make
sudo make install
Normalerweise nichtbrauchenSie müssen Root sein, um den Code zu konfigurieren oder zu kompilieren, nur um ihn zu installieren. Wenn Sie nichtbrauchenRoot sein, dann sei nicht Root.
Sowohl configure
als auch make
führen Code aus. Wenn Sie sie als Root ausführen, obwohl dies nicht erforderlich ist, wird lediglich ein weiterer Angriffsvektor eingeführt (jemand könnte beispielsweise das Makefile kompromittieren, aber nicht den Quellcode).
Antwort4
Das endgültige Programm (und seine Installation) sind vermutlich sorgfältiger ausgearbeitet als das Gebäude.BeliebigFehler beim Erstellen oder Durchführen von Plausibilitätsprüfungen können Ihr System beschädigen, wenn Sie als Root arbeiten. Reduzieren Sie das Risiko besser so weit wie möglich.