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.Antworten:
So erstellen Sie ein Verzeichnis und legen den Eigentümer sofort fest:
Sie müssen hierfür install verwenden, wenn das übergeordnete Verzeichnis nicht wie für "owner" beschrieben werden kann
/home
.Zum Erstellen von Dateien verwenden Sie einfach sudo
Oder vi oder was auch immer.
Wenn Sie eine Datei haben, die Sie kopieren und den Eigentümer festlegen möchten, können Sie install erneut verwenden. Es funktioniert wie CP mit zusätzlichen Optionen
Wenn Sie eine große Anzahl von Dateien, Benutzern und Verzeichnissen usw. erstellen müssen und sich Gedanken über die Konsistenz machen, sollten Sie sich auch ein Konfigurationsmanagementsystem wie Puppet, Chef, Ansible oder ähnliches ansehen. Das Einrichten ist etwas aufwändiger, hat aber den Vorteil, dass es wiederverwendet werden kann.
quelle
sudo -u btsync mkdir btsync
Ergebnisse in „nicht erstellen Verzeichnis‚btsync‘: Erlaubnis verweigert.sudo pkexec -u TestUser mkdir /home/TestUser/NewFolder
erfordert keinen Schreibzugriff auf den übergeordneten Ordner. - Damit ist das Problem immer noch nicht gelöst, und Sie müssen nicht mehr für jeden Befehl "sudo" oder "pkexec" eingeben.