sudo
kann nicht als universell angesehen werden:
Red Hat Enterprise Linux : sudo
Wird standardmäßig unter Red Hat Enterprise Linux und seinen Derivaten 1 installiert , jedoch nur in RHEL 7 und neueren Versionen.
Red Hat Enterprise Linux 7 fügte dem Installationsbildschirm eine neue Option hinzu, in der Sie den ersten Nicht-Root-Benutzer erstellen , ein Kontrollkästchen mit der Bezeichnung "Diesen Benutzer zum Administrator machen". Sein Zweck ist nicht auf dieser Seite des Installationshandbuchs dokumentiert, aber einer seiner Auswirkungen besteht darin, dass dieser Benutzer einen beliebigen Befehl ausführen kann sudo
. Dazu wird dieser Benutzer der wheel
Gruppe hinzugefügt , die einen beliebigen Befehl unter der Standardpaketkonfiguration ausführen kann sudo
.
Red Hat Enterprise Linux 3 bis 6 ist ebenfalls sudo
standardmäßig installiert ( 2), wurde jedoch bis RHEL 7 so konfiguriert, dass nur root
Befehle ausgeführt werden können. Der einfachste Weg, dies zu beheben, besteht darin, einen oder mehrere Benutzer zur wheel
Gruppe hinzuzufügen , sie visudo
als root auszuführen und die %wheel ALL=(ALL)...
Zeile zu kommentieren .
Debian : Ab Debian 9 enthält eine minimale Installation sudo
.
In Debian 7 und 8 mussten Sie das " Standard System Utilities " -Paket auswählen , um es zu bekommen sudo
. Wenn Sie auf sudo
diese Weise installieren, fügt das Betriebssystem-Installationsprogramm den zuvor im Installationsprozess erstellten Benutzer ohne Administratorrechte automatisch der sudo
Gruppe hinzu, die über die Berechtigung verfügt, alle Befehle auszuführen.
In Debian 6 und früheren Versionen mussten Sie sudo
via apt-get
nach der Installation installieren und manuell konfigurieren, um Nicht-Root-Benutzern die Möglichkeit zu geben, es zu verwenden.
FreeBSD : sudo
ist in FreeBSD nicht standardmäßig installiert. Sie müssen es aus Ports erstellen.
NetBSD : Wie FreeBSD.
OpenBSD : sudo
verwendet in OpenBSD standardmäßig installiert werden, aber sie haben umgeschaltet , um doas
so von 5,8, im Oktober 2015 veröffentlicht . doas
Schiffe standardmäßig deaktiviert.
Um sudo
auf die aktuellen Versionen zuzugreifen, müssen Sie diese vom Paket-Repository installieren. Das OpenBSD- sudo
Paket ist ähnlich wie in RHEL 3 bis 6 konfiguriert, so dass nur root
Befehle ausgeführt werden können, was den Zweck von eher zunichte macht sudo
. Wenn Sie root
während der Installation einen Nichtbenutzer hinzugefügt haben, wurde dieser der wheel
Gruppe hinzugefügt. Der einfachste Weg, um sudo
auf einem OpenBSD-System nützlich zu sein, besteht darin, die %wheel ALL=(ALL)...
Zeile über zu entfernen visudo
.
Solaris : sudo
wird standardmäßig in Solaris 11 installiert, aber Solaris 10 und ältere Versionen verwenden das ähnliche, aber nicht ganz das gleiche pfexec
.
Sie können sudo
für ältere Systeme erhalten, aber Standardeinstellungen sind wichtig. Solaris 10 und älter wird jahrelang bei uns sein. Wenn Sie also Solaris in Ihrer Umgebung haben und diese Systeme nicht persönlich kontrollieren und somit sicherstellen können, dass sie sudo
vorhanden sind, können Sie sich nicht darauf verlassen.
Je älter das System ist, desto größer ist die Wahrscheinlichkeit, dass es keine hat sudo
. Obwohl sudo
es sehr alt ist , wurde es erst Mitte der 2000er Jahre populär. Systeme, die älter als diese sind, sind höchst unwahrscheinlich sudo
. Unix-Boxen leben in der Regel sehr lange, daher ist es nicht unvorstellbar, dass Sie auch heute noch auf einem solchen System laufen.
Ich verlasse mich nur sudo
auf Systeme, die ich persönlich verwalte, oder auf Systeme wie Ubuntu, macOS oder openSuSE, bei denen es standardmäßig die einzige Möglichkeit ist, Root-Berechtigungen zu erhalten.
su
näher an einen universellen „hol mir Privilegien Super - User“ Befehl als sudo
, aber dann , wo Sie haben Systeme wie Ubuntu und Mac OS das root - Konto standardmäßig Sie gezielt gesperrt ist zu zwingen , zu verwenden , sudo
statt su
. Sie können also auch nicht su
universal nennen .
Fußnoten :
CentOS, Oracle Linux, Scientific Linux ...
Ja, auch bei minimalen Installationen.
sudo
Möglicherweise wird es auf den meisten Distributionen gebündelt, aber nicht alle konfigurieren jeden Benutzer als ausführbar.Die am weitesten verbreitete Distribution, Ubuntu, verwendet
sudo
als empfohlene Methode, root zu werden (wenn Sie die Befehlszeile verwenden - Benutzer, die sich an die GUI halten, erhalten eine Passwortabfrage, ohne zu verstehen oder sich darum zu kümmern, was unter der Haube passiert). Andere Distributionen können das Einrichten von sudo fördern oder nicht und können es möglicherweise sogar ausliefern oder nicht. Auf der anderen Seitesu
ist es überall verfügbar und kann auf den meisten Systemen verwendet werden, mit Ausnahme derjenigen, auf denen nursudo
verfügbar ist, da der Benutzer das root-Passwort nicht hat.Zwischen
su
undsudo
decken Sie fast alle Ihre Benutzer ab. Die exotisch wenige , die brauchencalife
oderop
oderpfexec
wissen , was bereits zu tun. Selbst wenn dies nicht dersu
Fallsudo
ist , funktioniert ein System, das Dateien an unbekannten Orten weder verwendet noch wahrscheinlich hat, und genug Dinge, an die Sie nicht gedacht haben, dass Ihre Anweisungen wahrscheinlich sowieso nicht funktionieren.quelle
Um Ihre Frage genau zu beantworten: Nein
sudo
wird nicht als universell angesehen. Wahrhaftig, das gesamte Konzept von "universal" ist oft ein roter Hering. Dies gilt insbesondere im Hinblick auf die Cross-Distro-Kompatibilität. Sobald Sie die Vielzahl unterschiedlicher Softwareversionen in den Griff bekommen, wird die Universalität semi-unrealistisch. Das Schreiben von Skripten ist von Natur aus pragmatisch, wenn es pedantisch wäre, wäre es praktisch unmöglich, tragbare Skripte zu schreiben.Normalerweise überprüfe ich meine beabsichtigte Ausführungsumgebung. Als eine semimoderne Linux-Distribution erwarte ich eine POSIX-Shell mit den üblichen GNU-Utils. Für Skripte, die außerhalb von Linux laufen könnten, erwarte ich nur den vollen POSIX-Standard. Offensichtlich sind viele Skripte Linux-spezifisch oder distro-spezifisch, so dass der Umfang der Portabilität häufig eingeschränkt wird.
So gehen Sie auf Ihren speziellen Skriptfall ein:
Dieses eingefügte Skript ist ein POSIX-Shell-Kompliment. Ich schreibe immer Dash-kompatibel.
quelle
sudo
installiert werden. Es erfordert eine Superuser-Ausführung und kann verwendet werden,sudo
wenn es verfügbar ist. Ist diessudo
nicht der Fall, muss das Skript als Root-Benutzer ausgeführt werdendie
.sudo -l
. Leider ist es in dieser Situation unbrauchbar, da möglicherweise ein Kennwort eingegeben werden muss. Wenn ich genauer darüber nachdenke, denke ich, dass das gesamte Konzept am besten über einen Pro-Distro-Test erreicht werden kann. Verwenden, essu -c
sei denn, Sie führen einesu
standardmäßig deaktivierte Distribution aus. In diesem Fall verwenden Siesudo su -c
. Wie andere bereits erwähnt haben, ist es am besten, den Superuser-Zugriff dem Benutzer zu überlassen. Ich würde jede Art von Scrip-Around als Annehmlichkeit betrachten.sudo
. Dies sollte in den meisten Distributionen unter der Annahme von Standardeinstellungensu
/sudo
Konfigurationen ordnungsgemäß funktionieren . Ich weiß, dass ein veraltetes Ubuntu, Prelsb_release
, angesprochen werden müsste ... Aber das ist wirklich nur ein Beispiel und könnte offensichtlich erweitert werden.