Forum: PC Hard- und Software Linux: Apps wie bei Android mit anderer UID/GID ausführen?


von tux (Gast)


Lesenswert?

Hi,
wie kann man Apps, wie bei Android, mit anderer UID/GID ausführen, ohne 
das man nach einem Passwort gefragt wird?

Z.B. soll Firefox mit der UID=1100 einfach vom Desktop aus gestartet 
werden können (mit einem noch zu schreibenden Script).

von Dr. Sommer (Gast)


Lesenswert?

su, sudo, gksudo
Bei grafischen Programmen muss man darauf achten dass der andere User 
auch Zugriff auf X hat, also XAUTHORITY durchgeleitet und lesbar ist.

von setuid (Gast)


Lesenswert?

setuid bit setzen.

von Axel S. (a-za-z0-9)


Lesenswert?

tux schrieb:

> wie kann man Apps, wie bei Android, mit anderer UID/GID ausführen, ohne
> das man nach einem Passwort gefragt wird?

Linux hat keine "Apps". Um ein Programm mit einer anderen Nutzerkennung 
als der eigenen auszuführen, gibt es sudo. Und /etc/sudoers um die 
Passwort-Abfrage zu umgehen.

> Z.B. soll Firefox mit der UID=1100 einfach vom Desktop aus gestartet
> werden können (mit einem noch zu schreibenden Script).

Tatsächlich schalten viele Programme, bei denen das sinnvoll ist, auf 
einen "ungefährlichen" Nutzer. Was natürlich voraussetzt, daß das 
Programm überhaupt erst mal mit zu vielen Rechten gestartet wurde. Was 
bei einem Programm, das aus einer Nutzersession heraus gestartet wurde, 
regelmäßig nicht der Fall ist.
Speziell Firefox will/muß auf viele Files in $HOME zugreifen, weswegen 
es deutlich sinnvoller sein dürfte, komplett auf einen anderen Nutzer 
umzuschalten. Mit eigenem Home und allem.

von Rolf M. (rmagnus)


Lesenswert?

Axel S. schrieb:
>> Z.B. soll Firefox mit der UID=1100 einfach vom Desktop aus gestartet
>> werden können (mit einem noch zu schreibenden Script).
>
> Tatsächlich schalten viele Programme, bei denen das sinnvoll ist, auf
> einen "ungefährlichen" Nutzer. Was natürlich voraussetzt, daß das
> Programm überhaupt erst mal mit zu vielen Rechten gestartet wurde. Was
> bei einem Programm, das aus einer Nutzersession heraus gestartet wurde,
> regelmäßig nicht der Fall ist.

Ich kann schon den Wunsch nachvollziehen, dem Browser einen eigenen User 
zu spendieren, der nur auf genau das Zugriff hat, was er braucht. Das 
komplette Home-Verzeichnis des regulären Benutzers gehört z.B. nicht 
dazu.

> Speziell Firefox will/muß auf viele Files in $HOME zugreifen, weswegen
> es deutlich sinnvoller sein dürfte, komplett auf einen anderen Nutzer
> umzuschalten. Mit eigenem Home und allem.

Was verstehst du unter "komplett auf einen anderen Nutzer umschalten"? 
Wie schaltet man nur halb um?

von Axel S. (a-za-z0-9)


Lesenswert?

Rolf M. schrieb:
> Axel S. schrieb:
>>> Z.B. soll Firefox mit der UID=1100 einfach vom Desktop aus gestartet
>>> werden können (mit einem noch zu schreibenden Script).
>>
>> Tatsächlich schalten viele Programme, bei denen das sinnvoll ist, auf
>> einen "ungefährlichen" Nutzer. Was natürlich voraussetzt, daß das
>> Programm überhaupt erst mal mit zu vielen Rechten gestartet wurde. Was
>> bei einem Programm, das aus einer Nutzersession heraus gestartet wurde,
>> regelmäßig nicht der Fall ist.
>
> Ich kann schon den Wunsch nachvollziehen, dem Browser einen eigenen User
> zu spendieren, der nur auf genau das Zugriff hat, was er braucht. Das
> komplette Home-Verzeichnis des regulären Benutzers gehört z.B. nicht
> dazu.

Falls das die Intention des TE gewesen sein sollte, dann hat er es 
versäumt, das auch kund zu tun. In jedem Fall hilft seine "Lösung", den 
Firefox mit einer anderen UID/GID zu starten, dabei nahezu gar nicht. 
Auf das $HOME dieses anderen Nutzers hat Firefox dann genauso Zugriff 
wie auf alle für diesen Nutzer lesbaren oder gar schreibbaren Resourcen 
des Computers. Was welt-lesbare Dateien wie /etc/passwd in jedem Fall 
einschließt.

Die richtige Lösung braucht wenigstens noch eine chroot-Umgebung bzw. 
gleich einen Container. Siehe z.B. 
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux_atomic_host/7/html/container_security_guide/locked_down_secure_firefox_in_a_container 
(und sei es nur, um mal eine Liste all der Dinge zu sehen, von denen man 
einen Firefox u.U. fernhalten wollen würde)

>> Speziell Firefox will/muß auf viele Files in $HOME zugreifen, weswegen
>> es deutlich sinnvoller sein dürfte, komplett auf einen anderen Nutzer
>> umzuschalten. Mit eigenem Home und allem.
>
> Was verstehst du unter "komplett auf einen anderen Nutzer umschalten"?

Ausloggen. Neu einloggen. Das absolute Minimum besteht darin, eine 
Login-Shell für den anderen Nutzer zu starten.

> Wie schaltet man nur halb um?

So wie es der TE plant. Was meinst du, welchen Wert $HOME für den derart 
gestarteten Firefox hat und wo der dann nach seinen Bookmarks und 
sonstigen Laufzeitdaten sucht?

von DPA (Gast)


Lesenswert?

setuid schrieb:
> setuid bit setzen.

Das ist nicht ausreichend. Ein Prozess hat 3 UIDs und GIDs: real, 
effective und saved. Das Setuid bit setzt nur die effective uid, das 
Programm könnte also zum anderen Nutzer zurückwechseln.

Da bleibt eigentlich nur sudo, ist aber auch nicht ideal.

Ich habe mir mal Überlegungen dazu gemacht, was noch fehlen würde, um 
Programme schön voneinander zu trennen: 
https://github.com/Daniel-Abrecht/Discretionary-Program-Access-Control/blob/proposal/Discretionary%20Program%20Access%20Control.md

Irgendwann will ich das mal als LSM implementieren, ich bin aber noch 
nicht dazu gekommen.

von Lukas Straub (Gast)


Lesenswert?

In dem Fall würde ich firejail mit der --private option empfehlen. Das 
hat auch vordefinierte Profile für viele Programme um zsätzlich syscalls 
und Co einzuschränken.

von Rolf M. (rmagnus)


Lesenswert?

Axel S. schrieb:
>> Wie schaltet man nur halb um?
>
> So wie es der TE plant. Was meinst du, welchen Wert $HOME für den derart
> gestarteten Firefox hat und wo der dann nach seinen Bookmarks und
> sonstigen Laufzeitdaten sucht?

Das kommt darauf an, wie man ihn startet. Siehe "man sudo", insbeondere 
der Parameter -i.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.