lördag 13 september 2008

Sudo och gksudo

Sudo är ett terminal program designat för att tillåta systemadministratören att ge begränsade root rättigheter till användare och logga root aktiviteterna.
Grundfilosofin är att ge så få privilegier som möjligt men ändå göra det möjligt för användarna att utföra sitt jobb.

När man skriver sudo kommando i en terminal så ombeds man att skriva in lösenordet i terminalen. Det syns inte att man skriver in det utan man får skriva det och sen trycka på Enter utan att se stjärnor för respektive tecken.

För att användaren ska kunna installera eller avinstallera program eller ta bort/lägga till/ändra filer i mappar som är viktiga för systemet så måste användaren utföra kommandot med sudo kommando så man kan skriva in sitt användarlösen för att få de rättigheterna som krävs för att utföra den uppgiften. Detta är en säkerhetsåtgärd för att minska risken att man själv tar bort/ändrar viktiga filer och för att minska risken att nån annan är inne och ändrar viktiga saker.

Sen finns också gksudo som gör samma sak som sudo med den skillnaden att när man skriver gksudo så poppar det upp ett fönster där man skriver in lösenordet till skillnad från om man använder sudo då man måste mata in lösenordet i terminalen. Som regel använder man gksudo för att utföra alla uppgifter som kräver att fönster öppnas alltså ett grafiskt gränssnitt för sudo (graphical frontend to sudo) Detta program körs automatiskt till exempel när du startar Pakethanteraren Synaptik eller andra program som kräver administrativa rättigheter.
Gksudo är framföralt praktisk att använda när man startar program som Nautilus eller gedit med admin.rättigheter. Då startar man programmet genom att trycka Alt + F2 och skriver in gksudo nautilus eller gedit. Hade man i det läget istället skrivit sudo nautilus så hade man inte haft nån möjlighet att skriva in sitt lösenord eftersom sudo kräver en terminal för att skriva in det.

gksudo är också den enda möjligheten som ger en alternativet att skriva in sitt lösen för att få admin.rättigheter om man startar ett program via en ikon eller en tangentbordsgenväg.

Det finns även en till anledning till att använda sudo respektive gksudo dock går det väldigt vilda diskuterad om den är så viktig, jag anser att det är viktigt.

Jag har testat det som jag skriver nedan med det resultat att jag fick installera om firefox för att få tillbaka mina bokmärken och det utseende jag hade på den tidigare. Det gick inte att komma åt dem via Ordna bokmärken och importera och säkerhetskopiera inte heller genom att synkronisera mot Foxmark där jag har mina bokmärken. Vet inte varför men det sket sig bigtime och firefox såg inte bra ut alls... Jag kan inte garantera att det var på grund av det jag höll på med eller om det bara var en slump. Men med mina bleka kunskaper om GNU/Linux så fick jag lov att ominstallera Firefox för att få till det. Det är möjligt att en mer erfaren användare hade löst det på ett smidigare sätt :) OBS! Man ska aldrig starta/köra Firefox med rooträttigheter. Jag gjorde det bara som ett test.

När man startar ett program med sudo så använder den användarens konfigurationsfiler i stället för root konfigurationsfiler. Man kan tydligt se detta genom att starta firefox med sudo då ser man att teman och allt sån hänger kvar medan startar man med gksudo så är det originaltemat den som kommer med installationen som används eftersom gksudo inte använder användarens konfigurationsfil utan roots konfiguration som det ska vara. Ni kan se skillnaden på Firefox med Sudo och gksudo så slipper ni gör det här själv... Kanske att det hade gått bra för er fast varför chansa...

I värsta tänkbara scenario så skulle man kunna öppna ett grafiskt program med sudo som då använder användarens configurationsfiler och ändrar rättigheterna och ägare på ~/.ICEauthority till root så att när användaren sen ska logga in så går det inte. Man måste då ändra så att ägaren av ~/.ICEauthority blir den användare som inte kan logga in och den användaren ska ha läs och skriv rättigheter. Dennes grupp och andra användare ska inte ha några rättigheter alls till filen alternativt kan man ta bort filen helt då återskapas den som den ska vara när användaren loggar in nästa gång (gör backup för säkerhetsskull innan ni tar bort den). Man kan göra det genom att startar datorn i Recovery mode "felsäkert läge" och sen när det efter ett tag kommer en meny så väljer man Drop to root shell promt eller så väljer man att göra det via Live CD.

Det är alltså inte bara grafiska program som kan ställa till problem när man använder sudo utan ALLA program som skriver config filer till användamappen. Detta eftersom sudo ALLTID använder hemmappen och bara ändrar användaren till root till skillnad mot gksudo som både ändrar användare och hemmapp till root. Alltså använder man sudo när man startar ett program som skapar configfiler så skapas de filerna med root rättigheter i användarens hemma mapp vilket gör att de filerna inte kan användas av användaren själv. Startar man samma program med gksudo så sparas de config filerna i roots hemma mapp.
Om man vill i från terminalen starta ett program med rooträtigheter som man vet kommer att skapa en configfil så kan man starta det med sudo -H kommando. Detta gör att användaren byts till att vara root och hemma mappen ändras också till att vara roots hemma mapp. Då blir det inga problem med rättigheter när man sedan startar programmet med vanliga användaren.

I slutändan så kör jag personligen gksudo för alla grafiska program och sudo för terminalprogram. Sen kan man ha i åtanke att om man kör ett terminalprogram som man vet ska ändra configfiler så kan man köra kommandot sudo -H. Sen om det har skitigt sig och man får felmeddelanden när man ska starta nåt som man har kört med sudo ja då har man lite mer fakta att gå efter när man ska söka var felet ligger...

Här är ett ett exempel där det förmodligen har hänt (2008) det händer dock inte alls ofta nu mer:
Kan inte logga in

Tidigare var det oftast de som försökte starta grafiska kde program från gnome med sudo som fick det problemet men det verkar vara löst nu.
(2006)
KDE och GNOME problem
(2003)
http://www.linuxquestions.org/questions/linux-software-2/just-what-is-going-on-with-.iceauthority-ownership-325611/

Jag har tagit mycke info från denna sida:
http://www.psychocats.net/ubuntu/graphicalsudo
Lite härifrån:
http://bbs.archlinux.org/viewtopic.php?id=47414
och lite härifrån:
http://ubuntuforums.org/archive/index.php/t-119408.html
Samt från sådant som jag har läst lite här och var :)

Inga kommentarer: