Hej alla! [Sammanfattning: jag är rädd för vissa applikationer (läs: mozilla firefox) och vill köra dessa i en mer skyddad miljö. Här beskrivs ett sätt att göra det.]
När jag som användare startar en applikation i ett UNIX-system, Debian i mitt fall, startas den med mitt användar-id. Med andra ord kan applikationen härja fritt i min hemkatalog om den vill och göra allt möjligt otyg, till exempel rm -rf /home/ska/* . Normalt är jag inte särskilt rädd för de program jag startar, men i vissa fall kan jag känna mig lite orolig. Det jag tänker på i första hand är Mozilla Firefox. Nu har jag inget emot Firefox, det är ett mycket trevligt program på alla sätt, men jag blir lite orolig över de många säkerhetsluckor som rapporteras kring det. Jag vill till exempel inte att någon crackare skulle kunna läsa och skicka vidare alla mina mejl med en firefox-exploit. Osv, osv. Idealiskt skulle jag vilja att applikationen inte skulle få öppna filer utanför vissa tillåtna kataloger utan mitt samtycke [1], och jag beskriver här ett sätt som man delvis kan lösa det på i UNIX. Kom gärna med kommentarer om varför det inte fungerar, eller i-vilket-paket-det-redan-är-implementerat (jag har inte sökt särskilt noga efter något liknande). Grundtanken är att för varje användare i systemet (jag är "ska") skapa en användare som *enbart* kör opålitliga applikationer ("untrusted"-användare, "ska-untrusted" i mitt fall). Untrusted-användaren har en egen primärgrupp, "ska-untrusted", som också är den enda grupp användaren är med i. Untrusted-användarens hemkatalog ligger under den vanliga användarens, dvs i mitt fall /home/ska/untrusted . Denna katalog är är skapad med skrivrättigheter för gruppen (chmod g+rwxs /home/ska/untrusted) så att den vanliga användaren skall kunna ändra, ta bort och skapa filer i untrusted-användarens hemkatalog. Jag antar att man kan stänga av untrusted-användaren för inloggning i PAM, men jag har inte kollat upp det. Annars är det bara att sätta lösenordet till lämplig lång slumpsträng. För att kunna köra applikationer används sudo utan lösenord och umask för läs/skrivrättigheter för gruppen, dvs i /etc/sudoers har jag Defaults>ska-untrusted umask=0017 [...] ska ALL=(ska-untrusted) NOPASSWD: ALL för att kunna köra X-program tillåter jag ska-untrusted att koppla upp mot X-servern lokalt med xhost: xhost +local:ska-untrusted och sedan har jag ett skript drop-privs [2] som kör sudo som untrusted-användaren. #!/bin/sh sudo -H -u $USER-untrusted $* sedan är det (nästan) bara att tuta och köra. Ett problem som direkt uppstod var att firefox inte ville starta på den lokala displayen (firefox-bin:26419): Gtk-WARNING **: cannot open display: men detta gick att lösa med att starta det med drop-privs mozilla-firefox --display :0.0 Ursäkta för det långa mejlet - hoppas någon är intresserad. Några frågor till er andra: 1. Finns det redan något (bättre) sätt att göra detta? 2. Någon som vet varför man måste starta firefox med --display? rxvt mfl fungerar bra utan 3. Finns det några andra fallgropar här? // Simon [1] http://lists.gnu.org/archive/html/l4-hurd/2005-10/msg00203.html [2] Jag tror det finns något liknande till Windows, jag tog namnet därifrån