Kann ich einen * super * Superuser erstellen, damit ich tatsächlich einen Benutzer habe, der die Berechtigung zum Root verweigern kann?


34

Ich dachte, dass es vorteilhaft sein könnte, einen Benutzer mit höheren Berechtigungen als den Root-Benutzer zu haben.

Sie sehen, ich möchte alle Aktivitäten und fast alle vorhandenen Root-Benutzerrechte genau so behalten , wie sie jetzt sind.

Ich möchte jedoch die Möglichkeit haben, von Fall zu Fall die Berechtigung zum Rooten zu verweigern.

Einer der Vorteile davon würde es mir ermöglichen, zu verhindern, dass bestimmte unerwünschte Dateien während Updates installiert werden. Dies ist nur ein Beispiel für einen möglichen Vorteil.

Da apt-get-Aktualisierungen von root oder mit sudo-Berechtigungen ausgeführt werden, kann apt-get bestimmte unerwünschte Dateien während der Aktualisierung ersetzen.

Wenn ich diese Berechtigungen für diese einzelnen Dateien verweigern könnte, könnte ich sie als Simlink zu /dev/nulleiner leeren Platzhalterdatei festlegen oder möglicherweise über Berechtigungen verfügen, die das Ersetzen der Datei während der Aktualisierung verweigern würden.

Außerdem kann ich nicht anders, als an eine Zeile erinnert zu werden, die in einem Interview mit einem der Ubuntu-Entwickler gesagt wurde, als der Typ etwas darüber sagte, wie Benutzer "uns" besser vertrauen (unter Bezugnahme auf die Ubuntu-Entwickler), "weil wir root haben "Dies war ein Verweis darauf, wie Systemaktualisierungen mit Root - Berechtigung durchgeführt werden.

Es interessiert mich überhaupt nicht, die Installationsprozedur zu ändern, um dieses Problem zu umgehen. Jetzt, da mein Verstand die Idee liebt, Root-Zugriff zu verweigern, möchte ich einen Weg finden, wie dies geschehen kann, um dies zu tun.

Ich habe gerade darüber nachgedacht und bisher keine Zeit mit der Idee verbracht, und ich bin ziemlich zuversichtlich, dass dies herausgefunden werden kann. Ich bin jedoch gespannt, ob dies bereits geschehen ist oder ob es sich möglicherweise nicht um eine neue Idee oder ein neues Konzept handelt.

Grundsätzlich scheint es eine Möglichkeit zu geben, einen Super-Super-User zu haben, der nur um einen Grad über die Berechtigung des Systems hinaus verfügt.


Hinweis: Obwohl ich der Meinung bin, dass die akzeptierte Antwort die Kriterien am besten erfüllt, gefällt mir die Antwort von @CR sehr gut. ebenfalls.

Ich möchte einen tatsächlichen Benutzer höher im Baum (ich) erstellen, aber ich denke, ich muss mich nur eines Tages hinsetzen, wenn ich die Zeit habe, es herauszufinden.

Außerdem versuche ich hier nicht, Ubuntu auszuwählen. Ich würde es nicht als meine Hauptdistribution benutzen, wenn ich mich negativ darüber fühlen würde.


4
Um welche Art von Dateien handelt es sich und warum? " Verhindern, dass bestimmte unerwünschte Dateien installiert werden _" weist darauf hin, dass die Dateien (normalerweise) nicht vorhanden sind, und Sie möchten dies verhindern. "_hat jedoch verhindert, dass die Datei während des Updates ersetzt wird. " schlägt vor, dass die Dateien bereits vorhanden sind (mit vermutlich erwünschtem Inhalt) und Sie keine neuen Versionen möchten.
TripeHound

6
Beachten Sie, dass jede Methode, die das apt(Überschreiben) von Dateien verhindert, zu einem Fehler führen und den Aktualisierungsprozess abbrechen kann. aptweigert sich dann, Updates oder Installationen durchzuführen, bis das "Problem" behoben ist.
Dubu

6
"Es interessiert mich absolut nicht, die Installationsprozedur zu ändern, um dieses Problem zu umgehen." Möglicherweise, aber es ist im Allgemeinen der richtige Weg, um das Problem wie angegeben zu lösen. Die Beschränkung von root kann erfolgen (formal entspricht root-in-userland nicht der Zugriffsebene des Kernel-Modus), und es gibt Systeme, um dies zu erreichen, aber dies widerspricht der Unix-Philosophie und den grundlegenden Sicherheitsprinzipien. Im Allgemeinen ist es ausnahmsweise schwierig, eine Blacklist für alle Elemente zu erstellen, die für die Erlangung der "vollständigen" Wurzel verwendet werden könnten, wenn jemand eine "partielle" Wurzel hat. Geben Sie dem vertrauenswürdigen Code lieber nur root.
Kevin

8
@mchid: root hat die volle Kontrolle. Das ist der springende Punkt. Damit es nicht die volle Kontrolle hat, müssen Sie so viele Dinge ablehnen, dass es nicht mehr wie root aussieht (z. B. keine Kernelmodule installieren, keine beliebigen Geräte mounten usw.). Wenn Sie Dinge nicht als root ausführen möchten, führen Sie sie nicht als root aus. Verteilen Sie stattdessen Funktionen (mit Ausnahme aller root-äquivalenten , die Sie nicht benötigen) oder führen Sie einen Daemon wie polkitd aus , der Root-Operationen für Nicht-Root-Prozesse ausführt.
Kevin

4
@mchid: Das ist das Problem: Es gibt eine Vielzahl von Möglichkeiten für Programme, um Ihre Einschränkungen zu umgehen. Sofern Sie nicht alle diese Möglichkeiten auf die schwarze Liste setzen, kann jedes Programm, das Sie als "eingeschränkter Root" ausführen, zu einem vollständigen Root werden, wann immer es möchte. Ihr gesamtes Programm ist also nichts weiter als eine Scharade von Sicherheitstheater.
Kevin

Antworten:


83

Der gewünschte "Benutzer" heißt LSM: Linux-Sicherheitsmodul. Die bekanntesten sind SELinux und AppArmor.

Auf diese Weise können Sie verhindern, dass bestimmte Binärdateien (und ihre untergeordneten Prozesse) bestimmte Aufgaben ausführen (auch wenn ihre UID dies ist root). Sie können diese Vorgänge jedoch auch für gettydie untergeordneten Prozesse zulassen , damit Sie sie manuell ausführen können.


2
Aber wenn ihre UID root ist, können sie dann nicht die Selinux-Berechtigungen ändern, die den Zugriff von vornherein verhindern?
curious_cat

11
@curious_cat: Ja, natürlich müssen Sie einem "Limited Root" -Prozess die Möglichkeit verweigern, seine eigene Berechtigung zu ändern / zu erhöhen! Die Leute, die SELinux geschrieben haben, haben bereits darüber nachgedacht ...
Peter Cordes

8
@curious_cat Sie können die LSMs so konfigurieren, dass es unmöglich ist, ihre Konfiguration zur Laufzeit zu ändern. Sie müssen dann neu starten und einen Kernel-Parameter angeben, um das zu tun.
Hauke ​​Laging

5
@Joshua Wenn Ihre Kopie von apt-get Rowhammer verwendet, haben Sie größere Probleme.
Draconis

3
@corsiKa Zunächst möchten Sie die Personen, die den Computer starten können, auf Personen beschränken, die sich tatsächlich am Computer befinden, da Systeme während des Startvorgangs anfällig sind. Das Auslösen eines Neustarts über das Netz ist in Ordnung, die Steuerung beim Booten jedoch nicht. Zweitens ist eine Regel der Computersicherheit, dass Sie nichts tun können, sobald ein Angreifer physischen Zugriff hat, da er dann auch alles in LN2 eintauchen kann / die Hardware neu verkabeln kann / etc. Ja, es wird allgemein angenommen, dass jemand, der das Booten einer Maschine ändern kann, die Maschine "gewonnen" hat.
HTNW

51

Sie verstehen das Konzept des rootBenutzers falsch .

Befindet sich im Klartext rootoben auf dem Baum.

Was ist, wenn Sie sich eines Tages für einen "Super Super User" und im nächsten Monat für einen "Super Super Super User" (!) Entscheiden. Wie weit "hoch" möchten Sie den Baum gehen? Wie würden Sie alle Berechtigungen und Hierarchien mischen, damit dies funktioniert? Wer ist immer oben? Jemand muss oben sein, und das ist es root. Ende der Geschichte.

Die hier angegebenen Lösungen - einschließlich AppArmor und SELinux - ändern dies nicht wirklich. Sie ermöglichen einfach eine genauere Kontrolle über rootBerechtigungen und Prozesse.

Es scheint mir, dass Ihr Update-Prozess nicht für das gewünschte Ergebnis geeignet ist. Aber das ist überhaupt kein Fehler des rootBenutzers. Anstatt die Dinge zu rootkomplizieren, sollten Sie sich den Benutzer mit der höchsten Berechtigungsstufe vorstellen, und ansonsten müssen Sie nach unten arbeiten.

Ich weiß, dass einige Leute dies vermerken werden, aber es gibt keine höhere Ebene in der Benutzerhierarchie, und alle anderen Lösungen geben einfach eine etwas andere Kontrolle darüber, wie rootBerechtigungen funktionieren. Sie erstellen jedoch keinen neuen Benutzer mit höheren Berechtigungen.

Sie können keinen Benutzer mit "mehr Berechtigungen" haben, als rootweil dies rootdie höchstmögliche Berechtigungsstufe darstellt. Die Verwendung eines Ausdrucks wie "mehr Kontrolle als root" ist ein Widerspruch - roothat die volle Kontrolle und alle möglichen Berechtigungen, sodass darüber hinaus nichts getan werden kann.


Ich wäre an der Spitze, nicht am Ende der Geschichte. Da es keine höhere Ebene in der Benutzerhierarchie gibt, ist der genaue Grund, warum ich einen höheren Benutzer erstellen möchte.
6.

Ich möchte jedoch Folgendes: Kontrolle über Root-Berechtigungen und -Prozesse, damit ich Root-Berechtigungen verweigern kann. Wenn ich irgendwie die Berechtigung zum Root verweigern kann, ohne einen neuen Benutzer mit SELinux oder AppArmor zu erstellen, brauche ich wahrscheinlich keinen neuen Benutzer. Ich möchte volle Kontrolle, mehr Kontrolle als root.
6.

16
Sie können keinen Benutzer haben, der "mehr Berechtigungen" als hat root. Das ist das ganze Problem. Der Benutzer, den Sie erstellen möchten, ist im Wesentlichen der Root-Benutzer. Sie müssen dies auf die andere Weise tun, z. B. indem Sie einen Benutzer mit rootBerechtigungen erstellen und dann bestimmte Benutzer ablehnen, bei denen Sie eine genauere Kontrolle wünschen. Was du fragst ("mehr Kontrolle als root") ist nicht möglich oder auch nur eine Sache!
Andy

@mchid Sie möchten also den aktuellen Root-Benutzer in mchid umbenennen, einen neuen Benutzer mit dem Namen root erstellen und apt-get et al dazu bringen, Ihren neuen Nicht-Root-Benutzer zu verwenden.
Odalrick

Hat auf einigen Systemen rootkeine Berechtigung, direkt auf Hardware zuzugreifen. Wenn Sie das Laden von Kernel-Modulen deaktivieren, können Sie verhindern, dass Root die vollständige Kontrolle über die Hardware ( /dev/memund ähnliches) hat. Nicht wirklich relevant für Dateisystem-Berechtigungen, da Sie kein Apt-Get verwenden würden, das direkt mit Ihrem SATA- oder NVMe-Controller kommuniziert. Technisch gesehen gibt es jedoch den Status "Mehr Berechtigungen als root" und dies wird als Kernel-Modus bezeichnet. : P
Peter Cordes

26

Wenn Sie nur verhindern möchten, dass Dateien oder Verzeichnisse geändert / gelöscht werden, setzen Sie einfach das unveränderliche Flag auf diese.

chattr +i <file>

Nicht einmal root wird in der Lage sein, ihnen etwas anzutun, wenn das Flag nicht entfernt wird. Es ist auch möglich, das Container / Namespace-System zu verwenden, um den Root-Zugriff zu verhindern.


11
Aber root kann das Flag entfernen.
3.

10
apt wird, wie fast alles, chattr nicht verwenden, um diese Flagge zu entfernen.
CR.

13
@sebasth: Richtig, aber Apt-, dpkg- und Per-Package-Installationsskripte ändern (normalerweise) die Dateiattribute nicht. Stattdessen werden sie einfach scheitern und sich beschweren, wenn sie versuchen, Dateien mit dem unveränderlichen Flag zu ändern.
David Foerster

4
@TripeHound Das OP möchte also apt-geterfolgreich die Datei ersetzen und dabei die Datei intakt lassen? Das ist etwas widersprüchlich, wie ich zu sagen wage.
Dmitry Grigoryev

3
@DmitryGrigoryev Es hört sich so an , als wollten apt-getsie glauben , dass es erfolgreich war, lassen aber eine oder mehrere Dateien unverändert. Sie sagen nicht, welche Dateien oder warum, aber wie Sie sagen, etwas widersprüchlich - und neigen in Zukunft zu "merkwürdigem Verhalten".
TripeHound

9
  • Anstatt einen Super-Super-User zu haben, können Sie root einschränken. Siehe Was sind die verschiedenen Möglichkeiten, Dateiberechtigungen usw. unter gnu / linux festzulegen?

  • Es gibt auch AppArmor und SELinux.

  • Und / oder konfigurieren Sie sudo, damit Sie nicht die vollen Root-Rechte preisgeben. Sie können es so einrichten, dass ein Benutzer nur vorab vereinbarte Befehle mit vorab vereinbarten Argumenten ausführen kann.

  • Sie können die Virtualisierung auch verwenden, um root einzuschränken:

    • cgroups, namespaces, chroot etc (docker macht das)
    • Xen
    • Virtualbox
  • Siehe auch etckeeper: Diese Tool-Revision kontrolliert das /etcVerzeichnis und synchronisiert mit apt. Standardmäßig ist es nicht sicher, eine böswillige Installation könnte es sabotieren, aber Sie könnten es auch dazu bringen, Änderungen in ein Firewall-Backup-Repository zu übertragen.

  • Verwendung der Versionskontrolle im Allgemeinen mit einem Backup-Repository mit Firewall. Dies hilft bei versehentlichen, absichtlichen Beschädigungen und Hardwarefehlern.


Firewall-Backup-Repositorys können sich auf einer anderen Maschine, im Internet oder auf einer anderen virtuellen Maschine (oder einem Host der virtuellen Maschine) befinden.


8

Für Software wie APT , die im Normalbetrieb den Zugriff auf fast das gesamte System erfordert, ist die Einschränkung problematisch. Selbst wenn Sie verhindern, dass es auf bestimmte Teile des Systems zugreift, gibt es höchstwahrscheinlich mehr als genug Möglichkeiten, die ein böswilliger Distributor umgehen kann. Zum Beispiel durch Ersetzen einer Bibliothek oder nur einer Binärdatei oder Hinzufügen einer böswilligen Konfigurationsänderung, die der uneingeschränkte Root möglicherweise verwenden wird.

Abhängig davon, wie viel Sie Beschränkungen auferlegen würden, kann erwartet werden, dass einige Installationsskripts nicht mehr funktionieren.

Um Anwendungen und Benutzer einzuschränken, können Sie eine AppArmor- oder eine SELinux-Richtlinie schreiben. Eine solche Richtlinie, die besser unterstützt wird, hängt von Ihrer Distribution ab: Debian-basierte Distributionen unterstützen AppArmor besser, während Fedora / RHEL-basierte Distributionen standardmäßig SELinux aktivieren.

Sowohl AppArmor als auch SELinux arbeiten mit Whitelist- Richtlinien, die Regeln enthalten, um bestimmte Aktionen zuzulassen (oder abzulehnen). Richtlinien werden bei exec auf einen Prozess angewendet. Ebenso können Benutzer eingeschränkt werden, wenn eine Richtlinie bei der Anmeldung auf ihre Prozesse angewendet wird. Eine gut durchdachte Richtlinie kann nicht umgangen werden (wenn Kernel-Fehler nicht berücksichtigt werden). Eingeschränkter Prozess, der als Root (UID 0) ausgeführt wird, ist durch die konfigurierte Richtlinie eingeschränkt und kann nur geändert werden, wenn dies ausdrücklich in der Richtlinie zulässig ist.

Die AppArmor-Richtliniensprache definiert eine Verweigerungsregel , mit der eine Richtlinie für die Sperrliste erstellt werden kann . Ein guter Ort, um mit AppArmor zu beginnen, sind AppArmor- Manpages , Wiki und die Suche nach der vorhandenen Konfiguration in Ihrer Distribution /etc/apparmor.d/.

Im SELinux-Wiki finden Sie reichlich SELinux-Administrations- und Entwicklungsmaterial . Die SELinux- Referenzrichtlinie wird auf github gehostet.


7

Ich kann nicht glauben, dass niemand das passende Anheften erwähnt hat ...

Vor ein paar Jahren veröffentlichte Microsoft einen Patch, mit dem Windows 10-Computer nicht mehr mit unseren alten Samba NT4-Domänencontrollern kommunizieren konnten. Als das Problem gefunden wurde, haben wir das Samba-Paket fixiert, um auf der aktuellen Version zu bleiben, und aptes funktionierte weiterhin ordnungsgemäß.

Eine vollständige Debian-exemplarische Vorgehensweise erklärt den Prozess gut:

Fügen Sie in /etc/apt/preferences(oder in einer neuen Datei unter /etc/apt/preferences.d/) Text hinzu, um anzugeben, welches Paket und welche Version verwendet werden soll:

Package: samba
Pin: release v=3.6.6-6+deb7u7
Pin-Priority: 900

Überprüfen Sie die Dokumentation auf die genaue Syntax, aber auf diese schnelle und fehlerhafte Weise haben wir eine Paketversion gepinnt. Root könnte es umgehen, wie es Root immer tun kann, aber dies löst das Problem der Paketmanager, die versuchen, Pakete auf Ihnen automatisch zu aktualisieren.

HINWEIS: Bei dieser Antwort wird davon ausgegangen, dass Sie ein XY-Problem haben


Ich habe selbst auf askubuntu eine Reihe von XY-Problemen beantwortet. Apt ist jedoch nur ein Beispiel und hat mich zu dieser Idee geführt. Ich interessiere mich mehr für den Aspekt "Power-Corrupts-und-Absolute-Power-Corrupts-Absolute" des Ganzen. Die vollständige und absolute Macht über mein eigenes System hat mich in erster Linie zu Linux geführt. Zu erkennen, dass meine Macht nicht immer absolut über der Wurzel liegt, ist beunruhigend. die idee der absoluten macht ist verlockend.
6.

Ich denke auch, es ist ein kleines XY-Problem, aber Y hier ist "Wie verweigere ich die Erlaubnis zum root, wenn root der Superuser ist?"
6.

1
Bei @mchid geht es nicht darum, Berechtigungen für root zu verweigern, sondern einem Programm, das als root ausgeführt wird, etwas zu verweigern.
John Keates

6

Es ist eigentlich ganz einfach.

Root ist dein "Super Super User"

Erstellen Sie ein Konto mit dem Namen "admin" und geben Sie ihm alle Root-Berechtigungen, mit Ausnahme derjenigen, die Sie nicht möchten.

Dann erstelle einen Benutzer namens bob und lass ihn "admin werden". Mit su oder sogar sudo.

Jetzt haben Sie einen normalen Benutzer (Bob), einen Super-Benutzer, der Admin-Aufgaben erledigen kann (Admin), und einen Super-Super-Benutzer (Root).

Wenn Sie den Namen "root" in etwas anderes ändern möchten, können Sie dies sogar tun. Technisch ist nur die Benutzer-ID (0) von Bedeutung.


Wenn ich einen normalen Benutzer (bob), einen Superuser, der Admin-Sachen (admin) kann, und einen Super-Superuser (root) hätte, würde root nicht immer noch alle Admin-Sachen mit den Hintergrundprozessen, Cronjobs und machen andere Sachen als Benutzer-ID (0)?
6.

nicht, wenn du das nicht willst. Bei den meisten Diensten können Sie auswählen, welcher Benutzer die Arbeit erledigt. Sie können es so einrichten, dass der Administrator die Prozesse ausführt. Es gibt einige Ausnahmen, aber nicht viele.
Coteyr

Müsste ich nicht alle diese Prozesse einzeln festlegen?
6.

3
Das passiert, wenn Sie versuchen, die Standardkonventionen zu brechen. Ich denke, Sie müssen besser verstehen, wie und warum die Berechtigungssysteme in einer * nix-Umgebung funktionieren.
Shauna

2
Ich stimme Shauna zu, es scheint Ihnen ein grundlegendes Verständnis des * nix-Berechtigungssystems zu fehlen. Es ist sehr mächtig, aber es ist nichts wie Windows.
Coteyr

3

Wenn Sie lediglich verhindern möchten, dass bestimmte Dateien installiert werden, ist das Einschränken der Root-Berechtigungen nicht der richtige Weg, dies zu tun. Es ist auch erwähnenswert, dass die herkömmlichen Antworten (unveränderliche Dateien oder LSMs) für Ihren speziellen Anwendungsfall nicht funktionieren, da APT (und die meisten anderen Paketmanager) aussteigen, wenn sie keine Dateien installieren können.

Die eigentliche Frage, die Sie stellen möchten, lautet:

Gibt es eine Möglichkeit zu verhindern, dass APT bestimmte Dateien installiert?

Das ist etwas völlig anderes als das, was Sie auf mehreren Ebenen verlangen.

In Bezug auf diese Frage bin ich mir nicht 100% sicher, aber ich weiß, dass einige andere Paketmanager Optionen haben, um zu verhindern, dass bestimmte Dateien installiert werden (zum Beispiel hat Gentoos Portage-System die Option INSTALL_MASK=, die tatsächlich Shell akzeptiert -Stil passende Muster von Dingen, die nicht installiert werden sollen). Ich wäre mehr als bereit zu wetten, dass eine solche Option für APT (oder möglicherweise dpkg selbst) besteht.


Wirklich, "Gibt es eine Möglichkeit zu verhindern, dass APT bestimmte Dateien installiert?" ist nicht meine frage; Dies ist nur ein Beispiel und hat die Frage in meinen Sinn gebracht. Der neue Firefox wird mit Addons ausgeliefert und installiert diese Dateien, auch nachdem der Benutzer sie mit neuen Updates gelöscht hat. Das ist eigentlich nicht das Problem; Dadurch wurde mir klar, dass ich noch mehr Kontrolle über mein System haben möchte. Ich schätze jedoch Ihre Logik hier, da ich selbst ein paar Fragen auf diese Weise beantwortet habe, und danke für die Eingabe.
6.

dpkg- divert
mchid

1

Bewahren Sie eine Sicherungskopie an einem sicheren Ort auf. Ersetzen Sie nach jeder Installation / Aktualisierung sofort die spezifischen Dateien aus dieser Sicherung. Somit gibt es keine Fehler, die Installation zu vermasseln, aber Sie erhalten trotzdem die Datei (en) zurück, die Sie behalten möchten.


1

Arbeiten Sie von einem bereitgestellten Laufwerk aus

Beachten Sie, dass dies hauptsächlich eine konzeptionelle Antwort ist, aber ich denke, es sollte funktionieren und im Geiste dessen sein, was Sie erreichen möchten.

Lassen Sie System X Ihr Arbeitssystem sein und System Y ein anderes System, das Sie steuern

  1. Hängen Sie ein Verzeichnis von Y als Laufwerk in X ein
  2. Richten Sie die Rechte so ein, dass der Root-Benutzer von X mit wenigen Ausnahmen auf alle Rechte in diesem bereitgestellten Laufwerk zugreifen kann

Jetzt haben Sie Ihre 'funktionierende Wurzel', die fast alles kann, und Sie haben Ihre 'Super-Wurzel', das eigentliche Wurzelkonto von System Y, das wirklich alles kann.


Ich mag die Idee, obwohl ich dies auf einem laufenden System tun möchte.
6.

1

Sie könnten einen Typ-1-Hypervisor wie Xen-Hypervisor ausführen und Ihr reguläres Betriebssystem als virtualisierten Gast hosten lassen. Der Hypervisor steuert das virtuelle Gastbetriebssystem auf einer "tieferen" Ebene als Root, da er die Kontrolle über die (virtuelle) Hardware hat, auf der das Gastbetriebssystem ausgeführt wird.

Sie können den Hypervisor so programmieren, dass er das Gastbetriebssystem auf verschiedene Arten manipuliert, einschließlich Ändern von Berechtigungen, Erstellen und Anwenden von Sicherungen, Verknüpfen bestimmter Änderungen oder Anweisungen im Gastbetriebssystem, um zusätzliche Funktionen, Validierungen usw. einzufügen. Dies wäre eine gültige, potenziell nützliche Methode ein Unix-Typ-System mit einem "Benutzer" (eigentlich eine Funktion des Hypervisors) zu implementieren, um "Dinge zu tun, die selbst root nicht kann"

Ich habe das Gefühl, dass dieser Ansatz wahrscheinlich übertrieben ist


Wie verhindert ein Hypervisor, dass ein Benutzer mit Root-Berechtigung in einer Gast-VM die gewünschten Aktionen ausführt?
fpmurphy

Diese Antwort fängt in Ordnung an, geht dann aber grammatikalisch in die Irre (es handelt sich dann um eine falsche Lesart oder zumindest um Ambitionen). Ich habe einen Fehler behoben.
ctrl-alt-delor

1
@ fpmurphy1 Ein Hypervisor kann Systemaufrufe überwachen, Richtlinien anwenden usw., um willkürliche Einschränkungen für den Root-Benutzer oder einen anderen Teil des Gastbetriebssystems zu erzwingen. Vielleicht ist meine Antwort nicht gut, weil dies viel zu viel Arbeit ist, es sei denn, Sie haben einen konkreten Anwendungsfall für Unternehmen oder so ...
Nathan Smith

@ ctrl-alt-delor Danke für deine Korrektur, aber ich glaube nicht, dass Grammatik das Problem war. Ich habe klargestellt, was ich sagen wollte, und ich freue mich über die Rückmeldung, dass meine Gedanken zunächst nicht klar waren
Nathan Smith,

1
@ fpmurphy1 innerhalb des Gastes haben Sie volle Wurzel. Es ist jedoch nicht derselbe Stamm wie der Stamm auf dem Host. Daher ist es eine niedrigere Wurzel als die Wirtswurzel. Mit Docker können die Dinge besser integriert werden, aber Root bleibt weiterhin eingeschränkt.
Strg-Alt-Delor

1

Werfen Sie einen Blick auf cgroups und Linux-Namespaces als alternative Methode zur Erreichung dieses Ziels sowie auf darauf basierende Tools wie Docker und lxd .

Mit diesen Tools können Sie unter anderem einschränken, welche Teile des Dateisystems ein als "root" ausgeführter Prozess sehen kann, welche Prozesse für ihn sichtbar sind und nur bestimmte Funktionen für den "root" -Benutzer bereitstellen .


0

DEINSTALLIEREN sudo

Wie wäre es mit Deinstallation sudound Symlink /bin/suzu /bin/false? Stellen Sie sicher, dass Sie rootsich nicht über einloggen können sshund das System gesperrt ist.

Das macht rootden Super * Super User, und alle anderen sind dem untergeordnet.

Führen Sie für Dateien, die während der Aktualisierung ersetzt wurden, einfach keine Aktualisierungen durch. Realistischer, um die Berechtigungen der Dateien ändern 440oder 444so sie nicht geschrieben werden können. Oder legen Sie sie in ein Git-Repository, damit sie zurückgesetzt werden können, wenn sie überschrieben werden.


Du siehst, ich möchte immer noch Updates machen und ich möchte immer noch, dass root so ziemlich alles macht, was root normalerweise macht. Ich möchte jedoch sagen können, "Hey, mach das nicht" oder "Nein, das kannst du nicht", wie es eine elterliche Autorität einem Nachwuchs antun könnte. So wie es jetzt ist, ist Root wie die Autorität der Eltern in meinem System und alle kleinen Kinder sagen: "Mutter darf ich?" wenn sie sudo benutzen. Das ist in Ordnung. Fast jeder Mensch auf diesem Planeten ist jedoch ein Nachwuchs von jemandem. Es scheint, als wären einige Antworten hier so, als ob ein Kleinkind vor der Selbsterkenntnis stehen würde, wenn es nicht merkt
mchid

. . . dass Oma und Opa die Mütter und Väter von Mama und Papa sind. Ich möchte Opa bitten, in meinem System zu leben, weil Root gerade der Vater des Hauses ist und Opa Papa sagen kann, was zu tun ist, weil Opa Papas Vater ist :)
mchid

Es hört sich so an, als hätten Sie zu viele Leute mit Sudo-Kräften hinzugefügt. Passen Sie die sudoersDatei so an, dass nur ausgewählte Benutzer auf vorab ausgewählte Befehle zugreifen können.
user176717

Ich habe nur zwei Benutzer in der sudoers-Datei, einschließlich root. Ich habe versucht, anhand eines Gleichnisses zu erklären, warum manche Leute meine Frage nicht verstehen und was ich erreichen möchte.
9.

Es scheint, dass die Leute das Gefühl haben, dass es keinen Benutzer geben kann, der höher als root ist, so wie ein sehr junges Kind der Meinung ist, dass seine Eltern keine Eltern haben können. Auch habe ich nicht abgelehnt.
mchid
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.