Ich arbeite mit einem Support-Mitglied für ein Produkt zusammen und er besteht darauf, dass ich root sein muss, um eine Reihe von Patches zu installieren, und dass sudo nicht funktioniert. Er gibt keinen Grund an, scheint aber in seinen Überzeugungen sehr fest zu sein. Browsing Superuser Ich kann keinen möglichen Grund dafür feststellen und bestätige dies, wenn ich Folgendes ausführe:
sudo -l
Ich bekomme:
...
User [MY USERNAME] may run the following commands on this host:
(ALL) ALL
Der Zugriff des Linux / Server-Teams auf das Root-Verzeichnis ist meines Wissens kein sofortiger Vorgang. Daher würde ich es vorziehen, sie selbst zu installieren.
Gibt es einen praktischen Grund, warum sich sudo bei der Installation von Software auf einem Server anders verhält als root?
sudo
und die Skripte wurden gerade geschrieben. Wenn das der Fall ist, dann Antwort sds könnte sehr hilfreich sein für Sie:sudo su -
.Antworten:
Es hängt stark davon ab, wie Sie Ihr Programm mit
sudo
oder aufrufensu
.ZB auf dem System, auf dem ich gerade bin:
Wobei [1] = / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin
Env = Umgebungsvariablen werden für 1 und 5 zurückgesetzt, entnommen aus $ USER in 2,3,4.
So einen Skript oder ein Programm , das mit einer anderen Option gestartet wird , kann sehen , anders
$PATH
,$HOME
kann die Schale liest anders.bashrc
,.profile
und Umgebungsvariablen. Es liest die mit dem verknüpfte Datei$HOME
. Jeder Benutzer kann seine Umgebung auf unterschiedliche Weise ändern (Variablen$PATH
, .bashrc, .profile, .bash_profile, alias ...). Insbesondere kann ein Benutzer eine andere Reihenfolge der Verzeichnisse in seinem Verzeichnis haben$PATH
und infolgedessen kann ein Skript einen Befehl ausführen, z. B./home/$USER/bin
in dem Pfad, der von root erwartet wird.Sie können das Programm unter ausführen,
sudo -i
alssu -
wären Sie als root mit angemeldet , aber Sie können ein anderes Verhalten haben, wenn Sie es mitsudo MyCommand
oder mit ausführensu -c MyCommand
.Von
man su
:Vom Menschen
sudo
quelle
sudo
Ihre Möglichkeiten durch die Berechtigungen in der sudoers-Datei eingeschränkt werden können. Das letzte Blockzitat impliziert das vielleicht, aber wenn ich es richtig verstehe, scheint das ein weiterer wesentlicher Unterschied zu sein, der über die Umwelt hinausgeht (oder vielleicht wegen der Umwelt?).Wenn Sie vollen
sudo
Zugriff haben, können Sieroot
verwendensudo su -
, so dass der Sicherheitspunkt nicht mehr aktuell ist.In der Tat gibt es eine Möglichkeit, den Unterschied zwischen einem Programm, das als ausgeführt wurde,
root
und einem Programm, das untersudo
Verwendung vongetuid
vs ausgeführt wurde , zu erkennen,geteuid
aber dies ist ein erfundener Trick. Warum sollte ein Patch-System das tun?quelle
su -
, er möchte möglicherweise verwenden,sudo -i
damit er dieselbe Umgebung hat wie beim direkten Anmelden.sudo myscript
Sie $ PATH und Umgebungsvariablen von der Shell fernhalten, in der Sie sich befinden. Wenn Sie mitsudo -i myscript
Ihnen laufen, laufen Sie, als ob Sie sich als root anmelden. Siehe die Antwort in unserem _zoo of calls :-) _sudo
wie die Anmeldung als rootgeteuid()
undgetuid()
von einem anders zu sein ein anderes ist ein Mythos. su und sudo ändern vor dem Ausführen des angegebenen Befehls oder der angegebenen Shell sowohl die realen als auch die effektiven Benutzer-IDs in die des Zielbenutzers, es sei denn, Sie haben sie ausdrücklich für ein anderes Verhalten konfiguriert. Sie können dies (für sudo) überprüfen, indem Siesudo id -u
undsudo id -ru
(beide zeigen 0) ausführen , sudo (8) lesen (unter BEFEHLSAUSFÜHRUNG ) oder ein Testprogramm schreiben .Es gibt ein paar Unterschiede, wenn Sie eine Root-Shell erhalten, wie von @Hastur hervorgehoben.
Wenn Sie keine Root-Shell erhalten, gibt es weitere Unterschiede. Das Support-Mitglied hat möglicherweise Erfahrung damit, Dinge zu tun, wie beispielsweise,
sudo patch -p0 < /root/patch.file
wopatch
es als root ausgeführt wird, aber nicht<
(Piping aus einer Datei).quelle
sudo /bin/bash -c "./patch -p0 < /root/patch"
. B. etwas wie schreiben . Noch heikler ist es, wenn Sie eine Datei mithilfe der Umleitung erstellen>
. Auf die erste Weise erstellen Sie eine Datei, die dem Benutzer nur dann gehört, wenn Sie das Recht haben, in das endgültige Verzeichnis zu schreiben. In letzterer Weise erstellen Sie eine Datei, die root gehört ... die dunkle Seite von Unix ;-)Ich glaube, wenn Sie sudo-Zugriff verwenden, wird eine Protokolldatei erstellt, aber wenn Sie direkt über root-Zugriff ausgeführt werden, ist dies nicht der Fall.
quelle
Es hängt davon ab, wie feinkörnig der Root-Zugriff sein soll. Wenn Sie mehrere Benutzer haben, die unterschiedliche Aufgaben auf einem System ausführen, ist sudo idealer. Ein Beispiel, das ich häufig verwende, ist die Notwendigkeit, eine Anwendung oder eine Datenbank neu zu starten. Sicherheit wird am besten immer am wenigsten privilegiert. Ich benutze Gruppen und erlaube nur diesen Gruppen, explizite Aktionen auszuführen. Ein gutes Buch, das diesen Prozess beschreibt, ist "Sudo Mastery: Benutzerzugriffskontrolle für echte Menschen". Eigentlich ist es ein gutes Buch über Sudo im Allgemeinen ...
quelle