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).
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.
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.
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?
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?
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.