Hinweis: Bitte zögern Sie nicht, die Frage zu bearbeiten - es fällt mir schwer, sie auszudrücken!
Frage:
Wie kann man sich als normaler Benutzer ausgeben und gleichzeitig die Administrator- / Root-Rechte behalten, um einen Befehl für diesen Zielbenutzer auszuführen?
Ein Mechanismus, um:
- Ermöglicht dem vollständigen Root- / Administrator-Zugriff die Ausführung von Befehlen.
- Ermöglicht die Angabe einiger "Zielgruppen";
- Ermöglicht die Angabe eines bestimmten "Zielbenutzers".
- Und stellt sicher, dass alle Befehle, Skripte usw. im Namen dieses Benutzers / dieser Gruppe ausgeführt werden - wobei "Zielbenutzer" und "Zielgruppe" als Eigentümer festgelegt werden ...
Diese Beispiele zeigen, wie pkexec
und / oder sudo
müssen für jeden einzelnen Befehl angegeben werden - das ist, was ich zu vermeiden versuche, zu tun:
pkexec:
FAIL: Der Administrator muss ein Präfix mit sudo
und setzen pkexec
.
sudo pkexec -u TestUser mkdir /home/TestUser/NewFolder
- Erfolg: Erstellt einen Ordner und weist die richtigen Berechtigungen zu
sudo pkexec -u btsync mkdir /opt/btsync
- FEHLER: Funktioniert nicht für Dienstkonten ohne Basisordner:
Error changing to home directory /home/btsync: No such file or directory
- FEHLER: Funktioniert nicht für Dienstkonten ohne Basisordner:
sudo:
FAIL: Erfordert, dass der Administrator das Präfix "" verwendet sudo
.
1 sudo pkexec -u btsync mkdir /opt/btsync
- FEHLER: Ordner wird erstellt, aber der Stammbesitzer wird zugewiesen.
- FEHLER: Erfordert später das Korrigieren von Berechtigungen, wobei die Anzahl der manchmal um x3 eingegebenen Befehle erhöht wird.
Gewünschte Funktionalität am Beispiel von BTSync:
root@localhost > enterElevatedShell -u btsync
btsync@localhost > nano /etc/asound.conf
- viele Befehle manuell eingegeben.
btsync@localhost > exit
root@localhost >
oder:
root@localhost > stopauthorizationModules
root@localhost > sudo -i btsync
btsync@localhost > nano /etc/asound.conf
- viele Befehle 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 erfolgt im Rahmen der manuellen Systemadministration.
Mit Root-Zugriff:
- Erstellen Sie / home / [Benutzername] / Unterordner | w / [Benutzername] als Eigentümer
- Create / opt / [serviceAccount] Service | w / [serviceAccount] als Eigentümer
- Erstellen / Ändern / etc / service / [someconfig] | w / [serviceAccount] als Eigentümer
Im Allgemeinen führe ich viele, viele Befehle aus, und es ist mühsam, nicht konsistent und eine Sicherheitsanfälligkeit, die durch Administratorvergesslichkeit oder Typ-OS entsteht, zurück zu kehren.
sudo -u user mkdir folder
sollte für normale Benutzer funktionieren.