Wie können Sicherheitsüberprüfungen vorübergehend ausgesetzt oder Root-Zugriff vorübergehend gewährt werden?

472
h.d. kohen

Hinweis: Sie können die Frage gerne bearbeiten - es fällt mir schwer, sie auszudrücken!

Frage:

Wie kann man sich als normaler Benutzer ausgeben und dabei die Administrator- / Root-Rechte beibehalten, um einen Befehl für diesen Zielbenutzer auszuführen?

Ein Mechanismus für:

  1. Ermöglicht dem kompletten root / admin-Zugriff, einen beliebigen Befehl auszuführen.
  2. Hier können Sie einige "Zielgruppen" angeben.
  3. Hier können Sie einige "Zielbenutzer" angeben.
  4. Und stellt sicher, dass alle Befehle, Skripts usw. im Namen dieses Benutzers / dieser Gruppe ausgeführt werden - "Zielbenutzer" und "Zielgruppe" werden als Eigentümer festgelegt.

Diese Beispiele zeigen, wie pkexecund / oder sudomuss für jeden einzelnen Befehl angegeben werden - was ich zu vermeiden versuche:

pkexec:

FAIL: Erfordert, dass der Administrator mit sudound vorangestellt wird pkexec.

  1. sudo pkexec -u TestUser mkdir /home/TestUser/NewFolder

    • Erfolg: Erstellt einen Ordner und weist die richtigen Berechtigungen zu
  2. sudo pkexec -u btsync mkdir /opt/btsync

    • FAIL: Funktioniert nicht für Dienstkonten ohne Basisordner:Error changing to home directory /home/btsync: No such file or directory

Sudo:

FAIL: Erfordert dem Administrator ein Präfix sudo.

1 sudo pkexec -u btsync mkdir /opt/btsync

  • FAIL: macht Ordner - ordnet aber den Stammbesitzer zu.
  • FAIL: Erfordert nachträglich Korrekturberechtigungen, wodurch die von x3 eingegebenen Befehle manchmal erhöht werden.

Funktionell unter Verwendung von BTSync als Beispiel gewünscht:

  • root@localhost > enterElevatedShell -u btsync
  • btsync@localhost > nano /etc/asound.conf
  • Viele Befehle wurden manuell eingegeben.
  • btsync@localhost > exit
  • root@localhost >

oder:

  • root@localhost > stopauthorizationModules
  • root@localhost > sudo -i btsync
  • btsync@localhost > nano /etc/asound.conf
  • Viele Befehle wurden manuell eingegeben.
  • btsync@localhost > exit
  • root@localhost >

oder:

  • root@localhost > sudo --setUmask=0222 --setTargetUser=btsync
  • root@localhost > sudo -E mkdir /opt/btsync

Häufige Szenarien:

Hinweis: Dies ist im Zusammenhang mit der manuellen Systemverwaltung.

Mit Root-Zugriff:

  1. Erstellen Sie / home / [Benutzername] / Unterordner | mit [Benutzername] als Besitzer
  2. Erstellen Sie / opt / [serviceAccount] Service | mit [serviceAccount] als Benutzer
  3. Erstellen / Ändern Sie / etc / service / [someconfig] | mit [serviceAccount] als Besitzer

Im Allgemeinen führe ich viele, viele Befehle aus, und das Zurückblättern von Berechtigungsbits ist langweilig, nicht konsistent und eine Sicherheitsanfälligkeit, die auf das Vergessen der Administratoren oder auf Typ-OS zurückzuführen ist.

-1
Welches Dienstkonto haben Sie im Sinn? Einige von ihnen benötigen bestimmte Selinux-Kontexte für ihre Dateien, weshalb der Fehler nicht zulässig ist. unter root `sudo -u user mkdir folder` sollte für normale Benutzer funktionieren. Azad vor 9 Jahren 0
@ Azad Danke Azad. Zum Beispiel möchte ich ein btsync-Dienstkonto erstellen und dann manuell eine Reihe von Ordnern, Konfigurationsdateien erstellen, die ausführbare Datei verschieben usw. - und das alles, während Sie die entsprechenden Berechtigungen zuweisen, ohne explizit zurückgehen zu müssen. h.d. kohen vor 9 Jahren 0

1 Antwort auf die Frage

0
Bram

So erstellen Sie ein Verzeichnis und legen den Besitzer sofort fest:

sudo install -d -o owner -g group -m 755 /path/to/dir 

Sie müssen dazu die Installation verwenden, wenn das übergeordnete Verzeichnis nicht von "owner" beschrieben werden kann /home.

Um Dateien zu erstellen, benutzen Sie einfach sudo

sudo -u owner touch /path/to/file 

Oder vi oder was auch immer.

Wenn Sie eine Datei haben, die Sie kopieren möchten, und den Besitzer festlegen, können Sie die Installation erneut verwenden. Es funktioniert wie cp mit zusätzlichen Optionen

sudo install -o owner -g group -m 640 file /path/to/file 

Wenn Sie eine große Anzahl von Dateien, Benutzern, Verzeichnissen usw. erstellen müssen und Sie sich um die Konsistenz sorgen, müssen Sie sich auch ein Konfigurations-Management-System wie Puppet, Chef, Ansible oder ähnliches ansehen. Das Einrichten erfordert etwas mehr Arbeit, hat aber den Vorteil, dass es wiederverwendet werden kann.

Bram, danke. Dies funktioniert zwar, aber selbst wenn - sollte es sehr mühsam sein, viele Ordner manuell zu erstellen, Dateien zu kopieren usw. für allgemeine Konfigurationsaufgaben. `sudo -u btsync mkdir btsync` führt dazu, dass das Verzeichnis 'btsync' nicht erstellt werden kann: Die Berechtigung wurde verweigert. h.d. kohen vor 9 Jahren 0
Ich habe meine Antwort aktualisiert, um dies zu beheben. Mkdir erfordert Schreibzugriff auf das übergeordnete Verzeichnis. Bram vor 9 Jahren 0
- Bram Danke noch einmal. Für sudo pkexec -u TestUser mkdir / home / TestUser / NewFolder muss der übergeordnete Ordner nicht schreibgeschützt sein. - Aber das löst das Problem immer noch nicht, sodass für jeden Befehl "sudo" oder "pkexec" eingegeben werden muss. h.d. kohen vor 9 Jahren 0