staging.inyokaproject.org

Für diese Funktion musst du eingeloggt sein.

Programm unter anderem Benutzer ausführen?

Status: Ungelöst | Ubuntu-Version: Xubuntu 20.04 (Focal Fossa)
Antworten |

Udalrich

Avatar von Udalrich

Anmeldungsdatum:
15. Mai 2019

Beiträge: Zähle...

Laut Wiki sollte es so gehen:

~$ sudo -H -u BENUTZERNAME PROGRAMM
=
~$ sudo --set-home --user=BENUTZERNAME PROGRAMM

Die Option -H bewirkt, dass dann auch die Umgebungsvariabele $HOME auf das Home-Verzeichnis von BENUTZERNAME mit umzieht, was beim Starten von grafische Programme wichtig ist.

Als Programm diene beispielhaft der „gnome-calulcator“, welchen ich, unter meinem eigenen Benutzer „meinname“ angemeldet, unter dem anderen Benutzer „benutzer“ ausführen will. Leider kommt dabei ein Fehler, welcher nicht im Wiki abgedeckt ist:

meinname@rechner:~$ sudo --set-home --user=benutzer gnome-calculator
No protocol specified
Unable to init server: Verbindung ist gescheitert: Verbindungsaufbau abgelehnt

Was fehlt da bitte noch? Dies könnten wir dann auch im Wiki ergänzen.


P.S: Mit ssh ginge es, aber man sieht dann einen gemächlicheren Fensteraufbau, weil ja alles über ssh getunnelt wird, was vom und zum eigenen Rechner nach Wasserkopf aussieht.

meinname@rechner:~$ ssh -X benutzer@rechner gnome-calculator

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 10978

Bei graphischen Programmen hast du das Problem, dass der X-Server aus sicherheitsgründen standardmäßig so konfiguriert ist, dass andere Benutzer keinen Zugriff auf deine Session haben (denn sie könnten deine Tastendrücke mitschneiden, an den Inhalt der Zwischenablage kommen uvm.).

Mit ssh -X hast du grundsätzlich das selbe Problem, daher sollte man das nur machen, wenn man allen Beteiligten (eigener, fremder Rechner und ausgeführtes Programm) vertraut.

Man kann mit Hilfe von xhosts genauer kontrollieren, wer auf den X-Server zugreifen darf - vgl. z.B. https://possiblelossofprecision.net/?p=896. Daneben gibt es aber noch weitere Dienste, die von Programmen benötigt werden und die im Rahmen der Session bzw. wenigstens beschränkt auf einen Benutzer laufen (z.B. Soundausgabe über pulseaudio, das normalerweise ebenfalls einen Prozess pro Benutzer hat, der DBus-Session Daemon usw.).

Generell würde ich davon Absehen GUI-Programme unter einem anderen Nutzer laufen zu lassen - bei Programmen, die als Dienste laufen macht man das normalerweise eher, um die Berechtigungen gezielt einzuschränken.

sh4711

Anmeldungsdatum:
13. Februar 2011

Beiträge: 655

Udalrich schrieb:

Laut Wiki sollte es so gehen: ...

Im Wiki heißt es:

...
= Programme im Kontext anderer Benutzer ausführen =
Programme können auch unter dem Namen eines anderen 'regulären' Benutzers gestartet werden. 

[[Anker(Terminal-sudo)]]
== Terminalprogramme und Shellkommandos ==
Im Terminal kann ein Benutzerwechsel z.B. nützlich sein, um ein Skript in einer anderen Umgebung zu testen.

=== Terminal - Ausführung durch Benutzer mit Erlaubnis in /etc/sudoers ===
`sudo` fragt immer nach dem Passwort des aufrufenden Benutzers. Ein Benutzerwechs
...

Terminalprogramme und Shellkommandos ist Überschrift 2
Terminal - Ausführung durch Benutzer mit Erlaubnis in /etc/sudoers ist Überschrift 3

Das heißt es bezieht sich ausschließlich auf Terminalprogramme und Shellkommandos.

Zum Beispiel folgendes funktioniert:

sudo --set-home --user=testuser lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 20.04.3 LTS
Release:	20.04
Codename:	focal

Udalrich

(Themenstarter)
Avatar von Udalrich

Anmeldungsdatum:
15. Mai 2019

Beiträge: 472

Danke Seahawk für die Erklärung, und Sh4711 für die Hinweise. Wußte nicht, daß das so kompliziert ist und auch nicht empfohlen wird.

sh4711 schrieb:

Im Wiki heißt es: […] Das heißt es bezieht sich ausschließlich auf Terminalprogramme und Shellkommandos.

Es heißt aber auch im Wiki: „Die Option -H bewirkt, dass dann auch die Umgebungsvariabele $HOME auf das Home-Verzeichnis von BENUTZERNAME mit umzieht, was beim Starten von grafische[n] Programme[n] wichtig ist.“

Wenn das Starten von graphischen Programmen per anderem Benutzer sowieso nicht empfehlenswert ist, sollten wir dann das Wiki korrigieren und die von mir fett markierte Stelle überarbeiten (streichen) ?

fleet_street

Top-Wikiautor
Avatar von fleet_street

Anmeldungsdatum:
30. August 2016

Beiträge: 1901

Ja, Nee! 😀 In gewisser Weise hast du Recht. Aber manchmal ist es für einen „Mausschubser“ wichtig, dass er den Dateimanager als Systemverwalter starten kann. Damit er aber nicht damit sein eigenes Benutzerprofil verhunzt, sollte dies mit sudo -H DATEIMANAGER erfolgen. Dafür ist die Nennung im Wiki wichtig.

Du möchtest jedoch ein grafisches Programm als ein anderer, eingeschränkter Benutzer starten (Der Taschenrechner war bestimmt nur als Beispiel gedacht). Beschreibe doch dein eigentliches Ziel – Vielleicht gibt es ja eine andere als die von dir angedachte Lösung.

sh4711

Anmeldungsdatum:
13. Februar 2011

Beiträge: 655

Udalrich schrieb:

... sh4711 schrieb:

Im Wiki heißt es: […] Das heißt es bezieht sich ausschließlich auf Terminalprogramme und Shellkommandos.

Es heißt aber auch im Wiki: „Die Option -H bewirkt, dass dann auch die Umgebungsvariabele $HOME auf das Home-Verzeichnis von BENUTZERNAME mit umzieht, was beim Starten von grafische[n] Programme[n] wichtig ist.“ ...

😬 da habe ich schon wieder etwas überlesen.

Wenn man sich die aktuelle Zusammenfassung und eine ältere Zusammenfassung anschaut, dann liegt die Vermutung nahe, dass die von dir erwähnte Passage bei einer Überarbeitung des Wiki-Artikels vergessen wurde zu überarbeiten. Denn in der aktuellen Zusammenfassung wurden alle Zeilen, welche bei der Verwendung von grafischen Programmen interessant sind bzw. diese thematisieren, gelöscht.

... Wenn das Starten von graphischen Programmen per anderem Benutzer sowieso nicht empfehlenswert ist, sollten wir dann das Wiki korrigieren und die von mir fett markierte Stelle überarbeiten (streichen) ?

Es sieht ganz so aus, als ob du das machen kannst unter Berücksichtigung dessen was fleet_street schrieb. Es betrifft anscheinend nicht privilegierte Nutzer. Stell es doch einfach hier nochmal zur Diskussion.

Udalrich

(Themenstarter)
Avatar von Udalrich

Anmeldungsdatum:
15. Mai 2019

Beiträge: 472

Gut, wie Sh477 vorschlug, stelle ich dieses Thema nochmal im Sudo-Wiki-Artikel zur Diskussion: Diskussion um Beitrag sudo

apt-ghetto

Anmeldungsdatum:
3. Juni 2014

Beiträge: 2943

fleet_street schrieb:

Aber manchmal ist es für einen „Mausschubser“ wichtig, dass er den Dateimanager als Systemverwalter starten kann.

In den allermeisten Fällen ist dies nicht nötig, weil das Problem anderswo liegt. Die Systemdateien werden normalerweise über die Paketverwaltung verwaltet und die meisten haben die Leseberechtigung gesetzt. Mit dem Dateimanager kann man also problemlos dahin navigieren.

Um Systemdateien zu bearbeiten, braucht nicht der Dateimanager erhöhte Berechtigungen, sondern der Texteditor für den Schreibvorgang. Entweder nimmt man dann sinnvollerweise sudoedit oder etwas wie das gvfs admin Backend.

Und falls man Nutzerdaten nicht bearbeiten kann, dann sind die Datei-Berechtigungen falsch gesetzt. Da nützt es niemanden, wenn man dann auch weiterhin falsch arbeitet und den Dateimanager mit erhöhten Berechtigungen startet.

Du möchtest jedoch ein grafisches Programm als ein anderer, eingeschränkter Benutzer starten (Der Taschenrechner war bestimmt nur als Beispiel gedacht). Beschreibe doch dein eigentliches Ziel – Vielleicht gibt es ja eine andere als die von dir angedachte Lösung.

Das kann sinnvoll sein, wenn eine graphische Applikation als root gestartet wurde (beispielsweise ein Installationsassistent wie Calamares) und man klickt auf einen Link, der Firefox öffnen würde. Das geht aber nicht, da Firefox aus guten Gründen nicht mit uid = 0 startet. Mit einem solchen Fall sollte ein normaler Nutzer im Alltag aber nie konfrontiert sein.

Andersherum könnte ich mir aber vorstellen (habe es nicht ausprobiert), dass man einen Benutzer admin hat, der in der sudo-Gruppe ist und einen normalen Benutzer benutzer, der nicht in der sudo-Gruppe ist. Die graphische Sitzung läuft als benutzer und man möchte das System mit einem graphischen Tool aktualisieren:

1
2
3
4
5
6
su - admin
muon
exit

# oder direkt mit sudo
sudo -H -u admin muon
Antworten |