Linux: Apps wie bei Android mit anderer UID/GID ausführen?

#5534521
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.
#5534602
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?
#5536761
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?
Gast #5536802
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren