Göm menyn

C5. Inställningar och rättigheter

I det sista kapitlet i den här avdelningen samlar vi ihop lite smått och gott som är bra att veta om våra Linux-system.

1. Punktfiler

De flesta program låter dig ändra inställningarna via grafiska gränssnitt, t.ex. inställningarna i fönstersystemet. Ibland måste man dock ändra direkt i de filer där inställningarna lagras, särskilt om man vill anpassa systeminställningarna. Inställningar lagras ofta i textfiler som brukar kallas punktfiler. Detta är helt enkelt filer vars namn börjar med en punkt och som man vanligtvis inte ser när man listar filer med ls. Om du istället skriver ls -a listar du även punktfiler. En sådan lista skulle kunna se ut så här (där vi använt ls -al för att få en mer detaljerad utskrift):

drwx--x--x  35 turte123 student     2048 jun 28 11:13 .
dr-xr-xr-x  25 root     root          25 jun 28 11:10 ..
-rw-r--r--   1 turte123 student     1900 sep 13  1999 .acrorc
-rw-r--r--   1 turte123 student      632 aug 27  1999 .addressbook
-rw-r--r--   1 turte123 student     1094 jan 28  1999 .cshrc
-rw-r--r--   1 turte123 student     1031 maj  2  1998 .desksetdefaults
drwxr-xr-x  15 turte123 student      512 maj 23 10:02 .dt
-rwxr-xr-x   1 turte123 student     5398 sep 10  1997 .dtprofile
-rw-r--r--   1 turte123 student      913 apr 23  1999 .emacs
drwx--l---   2 turte123 student      512 maj  7  1998 .fm
-rw-r--r--   1 turte123 student      268 maj 12  1999 .gv
-rw-r--r--   1 turte123 student     1550 apr  3 15:39 .login
-rw-r--r--   1 turte123 student      567 sep 26  1995 .mailrc
drwxr-sr-x   6 turte123 student     1024 jun  6 08:44 .netscape
-rw-r--r--   1 turte123 student    14174 jun  8 15:49 .pinerc
-rw-r--r--   1 turte123 student        0 mar  3  1999 .signature
drwxr-sr-x   2 turte123 student      512 apr 26  1997 .ssh
drwx--s---   2 turte123 student      512 maj  2  1998 .wastebasket
-rw-------   1 turte123 student    20376 jun 28 10:33 .Xauthority
-rw-r--r--   1 turte123 student      324 mar 23 19:27 .xpul
-rw-r--r--   1 turte123 student       18 apr  3 16:22 .xpul.friends

Ju fler programvaror man har använt, desto fler punktfiler tenderar man att ha. En del punktfiler är i själva verket kataloger. Två viktiga filer när du kör på våra Linux-system är .bashrc och .bash_profile. Den första körs varje gång du öppnar ett terminalfönster och den andra körs varje gång du startar ett login-skal, i praktiken alltså varje gång du loggar in. I dessa filer kan du lagra personliga inställnignar för skalet, men observera att de inte finns när du får ditt konto. Om du vill ha personliga skalinställningar måste du alltså först skapa dem. Det gör du genom att helt enkelt skapa en fil med filnamnet .bashrc eller .bash_profile och lägga den i din hemkatalog.

Övning
Kontrollera vilka punktfiler du har genom att i din hemkatalog skriva ls -al. Titta på innehållet i någon av dem t.ex. med kommandot cat.

Det är sällan man behöver ändra i sina punktfiler, men det kan vara bra att känna till att de finns. Om man inte här helt säker på var man gör bör man inte heller ge sig på att ändra i .bashrc eller .bash_profile. Båda dessa filer är i praktiken så kallade skript och hur man konstruerar sådana finns beskrivet i ett annat avsnitt. Och om du använder ett annat skal är det andra punktfiler som gäller.

Vi ska nu visa tre exempel på enkla saker att lägga in i .bashrc för att anpassa skalet.

Alias

Du kan skapa kortkommandon i skalet om det finns långa och komplicerade kommandon som du vill utföra ofta. Detta kallas alias. Nedan följer ett exempel på vad man kan lägga in i filen .bashrc:

alias ls='ls -l'

Detta innebär att varje gång du skriver ls i skalfönstret så kommer ls att köras med flaggan -l som gör att du får en detaljerad fillista.

Du kan se en lista över alla alias som finns genom att bara skriva kommandot alias.

Övning
Öppna .bashrc i valfri textredigerare och lägg till ett alias. Spara filen och öppna sedan ett nytt skalfönster och testa ditt nya alias. Du kan enkelt ta bort det efteråt genom att bara radera textraden i filen.

Variabler

I tidigare kapitel har vi ändrat på variabler i en skalprocess, men varje gång vi stänger skalet så kommer de ändringar som vi har gjort försvinna. Vi kan använda .bashrc för att sätta och ändra skalvariabler direkt när vi startar ett skalfönster.

Vi har i ett tidigare exempel satt skalvariabeln MINVARIABEL till "Det svarta guldet" med kommandot export. Man kan lägga in samma kommando i .bashrc för att se till att MINVARIABEL får bestående värde "Det svarta guldet". I filen lägger man alltså till raden

export MINVARIABEL="Det svarta guldet"

När man sedan startar om skalet så kommer MINVARIABEL vara satt till "Det svarta guldet".

turte123@li10-3:-$ echo $MINVARIABEL
Det svarta guldet

Ett mer användbart exempel på variabler som kan sättas i .bashrc är uppdatering av sökvägar. Om du enkelt vill kunna köra program som finns i aktuell katalog kan du lägga till . (alltså bara en punkt) som en sökväg. Vi såg hur man kan utöka sökvägen i föregående kapitel, men bara för den aktuela skalsessionen. För att se till att utökningen alltid finns med kan vi lägga in den i .bashrc.

Övning
Utöka sökvägen med aktuell katalog med tekniken från föregående kapitel. Lägg in detta i .bashrc.

Prompten

I .bashrc kan man även ändra utseendet på hur skalfönstret ska se ut samt hur prompten ska bete sig. Detta gör att man kan få en lite personligare miljö att arbeta i. En del vill se vilken katalog man befinner sig i eller vilken dator de är inloggade på. Man kan ställa in en hel del saker angående skalet. Allt som vi går igenom här behandlar skalet bash eftersom det är standardskalet som alla använder till en början. Det rekommenderas att man inte byter skal om man inte vet precis vad man håller på med. I övrigt hänvisas till kommandot info bash för fler alternativ som man kan använda sig av.

Du kan ändra prompten i ditt skalfönster så att den visar annan information. Det normala utseendet är att den visar ditt användarnamn, vilken dator du är inloggad på samt aktuell katalog. Om du hellre vill se annan information går det att anpassa genom att ändra värdet på systemvariabeln PS1. Detta gör du genom att skriva t.ex. så här:

PS1='\u@\h:\W\$ '

Denna rad kan du antingen skriva in vid prompten direkt, för att testa, eller lägga in i filen .bashrc. Ovanstående exempel visar koden för den normala prompten. Ett annat exempel är:

PS1='[\t] \w <\!> '

Detta visar aktuellt klockslag inom hakparenteser, aktuell katalog samt numret på det aktuella kommandot inom vinkelparenteser. Det finns ett flertal olika koder av typen \x som man kan använda för att få prompten att se annorlunda ut. Här är några exempel:

Kod Beskrivning
\W Visar den aktuella katalogen. Hemkatalogen visas med ett ~.
\w Visar hela sökvägen till den aktuella katalogen.
\! Visar antalet kommandon som man har skrivit in.
\h Skriver ut datorns värdnamn. Skriver bara ut namnet innan första punkten.
\H Skriver ut datorns värdnamn. Skriver hela värdnamnet.
\u Skriver ut användarnamnet.
\t Skriver ut vad klockan är i 24h-format. \T gör samma sak fast skriver i 12h-format.
\d Skriver ut dagens datum.
\n Skriver ut en ny rad.

2. Utskrifter från terminalen

Du kan enkelt skriva ut textfiler från kommandoraden med kommandot lp. Skrivarsystemet klarar även av att hantera PDF-, och PostScript-filer som skrivs ut direkt från kommandoraden.

turte123@li10-3:-$  lp uppgift4.c
ID för begäran är eduPrint-LiU-807 (1 fil(er))
turte123@li10-3:-$  lp Konferensprogram.pdf
ID för begäran är eduPrint-LiU-808 (1 fil(er))
turte123@li10-3:-$ 

3. Utrymme i hemkatalogen

Som nämnts tidigare heter din hemkatalog /home/användarnamn och kan förkortas med tecknet ~ (tilde). Hemkatalogen är det enda ställe där du kan lagra dina egna filer. Utrymmet är dock begränsat och om dina filer tar upp för mycket utrymme kan du få problem med att logga in och starta vissa programvaror. Läs mer om hur och var du kan lagra filer på intranätet för studenter.

Ett sätt att ta reda på exakt vilka kataloger det är som tar upp utrymme är att använda kommandot du (förkortning för eng. disk usage). Det finns många sätt att modifiera du med olika flaggor, men nedanstående exempel kan vara användbart om du kör det i din hemkatalog:

turte123@li10-3:-$  du -ks *
93561   Bilder
70  demo
18  Desktop
97  Documents
18  Downloads
44  Favorites
1   Hämtningar
641282  lab
92  Searches
449 SettingsPackages
1   Skrivbord
210 tmp
1   Video
turte123@li10-3:-$

Det som visas här är alla kataloger (och filer) som finns direkt under din hemkatalog och siffran till vänster anger hur många kB respektive katalog tar upp.

4. Filattribut

Filer och kataloger i Linux har tre attribut som kallas read, write och execute. Dessa tre attribut bestämmer vad man får göra med filen eller katalogen. Förutom denna uppdelning av rättigheter delas dessutom alla användare upp i tre områden kallade user, group och other. User är den som skapade filen, group består av de användare som tillhör samma användarkategori som user och other är de som blir över. För var och en av dessa grupper kan rättigheterna för en fil eller katalog sättas separat så att man kan begränsa vad varje grupp av användare får göra. Det kan ju till exempel hända att man är några stycken som jobbar på ett projekt och vill använda filer gemensamt samtidigt som man skyddar dem från andra. Vi förklarar med ett litet exempel. Nedan ser vi en del av innehållet i en katalog.

turte123@li10-3:-$  ls -al
drwx--x--x  34 turte123 student     2048 jul 18 16:10 .
dr-xr-xr-x  25 root     root          25 jul 18 16:10 ..
-rw-r--r--   1 turte123 student     1094 jan 28  1999 .cshrc
-rw-r--r--   1 turte123 student     1550 apr  3 15:39 .login
-rw-r--r--   1 turte123 student    17887 jul 18 15:25 labbrapport.txt
drwx------   2 turte123 student      512 jan 23  1999 Mail
drwxr-xr-x   3 turte123 student     1024 apr 22 22:26 www-pub

Filens eller katalogens attribut står i kolumnen längst till vänster. Den första bokstaven anger vilken typ av fil det är. Ett streck - anger att det är en vanlig fil, bokstaven d anger att det är en katalog och bokstaven l anger att det är en länk.

Därefter följer nio tecken som anger rättigheterna för i tur och ordning user, group och other. Katalogen Mail har rättigheterna rwx------ vilket alltså innebär att bara du själv kan komma åt katalogen. Katalogen www-pub har rättigheterna rwxr-xr-x vilket innebär att du själv kan läsa och skriva, medan alla övriga bara kan läsa filer.

Rättigheten execute som betecknas med x har en speciell betydelse. För vanliga filer innebär den att man har rätt att köra filen, d.v.s. rättigheten ska endast ges till program och inte till datafiler.

Rättigheter för kataloger fungerar på ungefär samma sätt som för filer. Om katalogen har läsrättigheter kan du lista filerna i katalogen. Om den har skrivrättigheter får du skapa nya filer eller flytta existerande. Rättigheten execute innebär att du har rätt att gå till katalogen med cd.

I de övriga kolumnerna finns information om hur många länkar som finns till filen, vem som äger filen, vilken grupp ägaren är med i, hur stor filen är, när filen senast ändrades samt naturligtvis vad filen heter. De två speciella katalogerna . och .. refererar till den aktuella katalogen respektive katalogen ett steg uppåt i filsystemet. De finns i alla underkataloger, men syns normalt inte förrän du listar filer med kommandot ls -a.

Övning
Kontrollera vilka rättigheter som gäller för filerna i din hemkatalog.

Ändra filattribut

För att ändra rättigheterna till en fil använder vi oss av kommandot chmod. Syntaxen för kommandot är:

chmod kategori operator rättigheter filnamn

De olika parametrarna förklaras i följande tabeller:

Kategori Förklaring
u user
g group
o other
a all
Operator Förklaring
+ Lägg till rättighet
- Ta bort rättighet
Rättigheter Förklaring
r read ger rättighet att läsa från filen
w write ger rättighet att skriva till filen
x execute ger rättighet att köra filen

Om du t.ex. vill hålla en fil hemlig för alla utom dig själv kan du göra som i exemplet nedan:

turte123@li10-3:-$ ls -l hemlig.txt
-rw-rw-rw-   1 turte123 student    12892 jul 14 12:23 hemlig.txt
turte123@li10-3:-$ chmod go-rw hemlig.txt
turte123@li10-3:-$ ls -l hemlig.txt
-rw-------   1 turte123 student    12892 jul 14 12:23 hemlig.txt

5. Processer

Varje enskilt program som körs är en egen process. Varje skalfönster är därmed också en egen process. I skalfönstret kan man starta nya processer, vilka kontrolleras från processen som skalfönstret utgör. Varje ny process är dock skild från alla övriga och kan inte påverka andra programs exekvering. Dock har föräldraprocessen (skalfönstret) fortfarande kontroll över de processer som den startat (barnprocesser). Om man till exempel avslutar ett skalfönsters process så avslutas också alla processer som skalfönstret kontrollerar. Därför är det viktigt att kunna kontrollera processer från skalfönstret.

Starta en process

Rent definitionsmässigt så har vi redan sett vissa processer exekveras. Alla kommandon som vi har anropat är exempel på processer. De kommandon som vi har använt är dock kortlivade. cd, ls och chmod utför sina uppgifter snabbt och är sedan klara och avslutar sig själva. Det är dock möjligt att starta godtycklig process från skalet, så länge man vet var binärfilen finns i systemet.

Om vi tittar på innehållet i PATH-variabeln så kan vi hitta var vissa kommandon finns. Skriver man in echo $PATH ser vi t.ex. att /usr/bin finns i vår PATH-variabel. Denna mapp innehåller väldigt många binärfiler som du som användare av systemet har tillgång till i alfabetisk ordning. T.ex. så finns binärfilen för webbläsaren Firefox i denna mapp. Binärfilen heter firefox, så för att starta processen Firefox så skriver man in firefox i skalet.

Skriver du bara in firefox så kör du Firefox i förgrunden i skalet. Detta innebär att du inte kan använda skalet förrän processen har kört klart och du stänger ner Firefox. Om du istället skriver firefox & så kör du processen i bakgrunden. Då kan du fortsätta använda skalet medan Firefox kör. Det här har vi tagit upp tidigare, men nu kan vi förklarar varför det är på det sättet - eftersom allt är processer.

Kommandot ps

Med kommandot ps så får vi reda på vilka processer som körs på den dator som vi för närvarande är inloggade på. Utdata från ps kan typiskt se ut så här:

turte123@li10-3:-$ ps
PID TTY      TIME CMD
3057 pts/5    0:01 tcsh
4019 pts/5   20:16 xemacs-2
4978 pts/5    7:16 emacs

Informationen i de olika kolumnerna förklaras i nedanstående tabell:

Kolumn Förklaring
PID (process identifier) Det unika nummer som används för att identifiera en process.
TTY (teletypewriter) Varifrån processen styrs, vanligtvis ett tangentbord anslutet till datorn.
TIME Hur många timmar och minuter som processen har varit igång (effektiv tid).
CMD (command) Det kommando som startade processen eller det program som processen är en instans av.

Om man anger flaggan -a får man en längre lista med processer och med flaggan -A listas samtliga processer. För att visa processer med ett visst namn kan du använda kommandot pgrep. Studera manualsidorna för dessa kommandon för ytterligare information.

Kommandot kill

Kommandot kill låter kanske lite brutalt. Det används oftast för att avsluta, eller "döda", en process, men kan också användas för att skicka andra signaler till processer. För att avsluta en process skickar man signal 9 till den med hjälp av flaggan -9.

turte123@li10-3:-$ kill -9 9126

I exemplet ovan är 9126 processens PID som vi identifierade med hjälp av kommandot ps.

Program som startats via ett fönstersystem kan vara svåra att identifiera. Man kan avsluta sådana processer lite lättare med kommandot xkill. Man kör kommandot utan några argument och får sedan klicka på det fönster vars process ska avslutas.

Du kan också styra processer via kommandot top. Studera manualsidorna för vidare information.

Övning
Starta Emacs från ett skalfönster. Skapa en ny frame med alternativet New Frame i menyn File. Kör nu xkill och klicka i din nyskapade frame.

Sammanfattning

  • En punktfil är en fil som börjar med en punkt. Dessa är vanligtvis gömda för användaren och innehåller ofta inställningar till program.
  • .bashrc körs varje gång du öppnar ett terminalfönster.
  • Du kan skapa kortkommandon i skalet om det finns långa och komplicerade kommandon som du vill utföra ofta genom att använda ett alias.
  • I .bashrc kan du bl.a. skapa alias, variabler och skräddarsy prompten.
  • Kommandot lp kan användas för att skriva ut en fil.
  • Utrymmet i din hemkatalog är begränsat och kan kontrolleras med kommandot du.
  • Filrättigheter anges med read, write och execute för de tre områdena user, group och others.
  • Filrättigheter kan ändras med chmod.
  • Processer kan undersökas med ps och avslutas med kill eller xkill.

Diagnos
När du har förstått de begrepp som vi har gått igenom i det här kapitlet är det dags att göra diagnos C5.


Sidansvarig: Peter Dalenius
Senast uppdaterad: 2025-06-30