Rättigheter
Slackware.SE Wiki
[redigera] 9.2 Rättigheter
Rättigheter är den andra viktiga delen i multianvändandet av filsystemet. Med dessa kan du ändra vem som får läsa, skriva och köra filer.
Rättighetsinformationen är lagrad som fyra oktala värden, varje specifierar olika samlingar av rättigheter. Det finns ägarrättigheter, grupprättigheter och världsrättigheter. De fjärde oktala värdet är använt för att lagra specialinformation så som satta användare, grupp-ID och den luriga biten. Det oktala värdet som tilldelar rättighetsmodeller är (dom har också bokstäver associerade till sig som visas med program som ls och kan användas av chmod):
Bild 9-1. Oktala värden för rättigheter
Permission Type Octal Value Letter Value “sticky” bit 1 t set user ID 4 s set group ID 2 s read 4 r write 2 w execute 1 x
Du lägger till oktala värden för varje rättighetsgrupp. Till exempel, om du vill att grupprättigheter ska vara "read" and "write" (läs & skrivrättigheter), så ska du använda "6" i gruppdelen av rättighetsinformationen.
bash's standardrättigheter är:
% ls -l /bin/bash -rwxr-xr-x 1 root bin 477692 Mar 21 19:57 /bin/bash
Det första bindestrecket skulle bli ersatt med ett "d" om det var en katalog. De tre rättighetsgrupperna (owner, group, world) visas senare. Vi ser att ägare har läs, skriv och köra rättigheter (rwx). Gruppen har endast läsa och köra (r-x) och alla andra har läsa och kör (r-x).
Hur skulle vi sätta rättigheter på en annan fil för att likna bash´s? men först ett exempel:
% touch /tmp/example % ls -l /tmp/example -rw-rw-r--- 1 david users 0 Apr 19 11:21 /tmp/example
Vi använder chmod(1) för att sätta rättigheterna i exempelfilen. Lägg till den oktala siffran för rättigheten du vill ha. För att ägaren ska ha läs, skriva och kör så skulle vi sätta värdet till 7, läsa och köra skulle ha 5. Kör dessa tillsammans och anpassa dem till chmod så här:
% chmod 755 /tmp/example % ls -l /tmp/example -rwxr-xr-x 1 david users 0 Apr 19 11:21 /tmp/example
Nu kanske du tänker, "varför skapade vi inte bara filen med dessa rättigheterna från första början?" Svaret är enkelt. I bash finns det en finurlig inbyggd grej som kallas umask. Den finns också i de flesta Unix skal, och kontrollerar vilka filrättigheter som är satta på nyskapade filer. Vi diskuterade bash inbyggda grejjor i tidigare 8.3.1 sektionen. umask fungerar ungefär som chmod fast bakvänt. Du specifierar de oktala värden du vill ha på nyskapade filer. umask standardvärde är 0022.
% umask 0022 % umask 0077 % touch tempfile % ls -l tempfile -rw-------- 1 david users 0 Apr 19 11:21 tempfile
För mera information se mansidan för bash.
För att sätta specialrättigheter med chmod, lägg då ihop numren och placera dem i den första kolumnen. Till exempel, för att göra det sätt användar-ID och grupp-ID, vi använder 6 som den första kolumnen:
% chmod 6755 /tmp/example % ls -l /tmp/example -rwsr-sr-x 1 david users 0 Apr 19 11:21 /tmp/example
Om de oktala värdena förvirrar dig så kan du använda bokstäver med chmod. Rättighetsgrupperna är representerade så här:
Owner u (ägare) Group g (grupp) World o (alla andra) All of the above a (samtliga)
För att genomföra ovanstående skulle vi behöva använda flera kommandorader:
% chmod a+rx /tmp/example % chmod u+w /tmp/example % chmod ug+s /tmp/example
Somliga föredrar bokstäver före siffror. De får samma resultat så använd det du föredrar.
Det oktala formatet är oftast snabbast, och är oftast det du ser användas i shell script. Ibland är bokstäver mera kraftfullt. Till exempel, så finns det ingen lätt väg att ändra en grupp av rättigheter, när man förbereder andra grupper på filer och kataloger med hjälp av oktala format. Det är trivialt med bokstäver.
% ls -l /tmp/ -rwxr-xr-x 1 alan users 0 Apr 19 11:21 /tmp/example0 -rwxr-x--- 1 alan users 0 Apr 19 11:21 /tmp/example1 ----r-xr-x 1 alan users 0 Apr 19 11:21 /tmp/example2 % chmod g-rwx /tmp/example? -rwx---r-x 1 alan users 0 Apr 19 11:21 /tmp/example0 -rwx------ 1 alan users 0 Apr 19 11:21 /tmp/example1 -------r-x 1 alan users 0 Apr 19 11:21 /tmp/example2
Vi angav att sätta rättigheter på användar-ID och grupp-ID, på flera ställen här ovan. Du kanske funderar vad det är?. Normalt när du kör ett program så opererar det under ditt användarkonto. Vilket menas att det har alla rättigheter du har som användare. Det är samma för gruppen. När du kör ett program, så körs det under din nuvarande grupp. Med sätt rättigheter för användar-ID, så kan du tvinga programmet att alltid köras som programägare (såsom root). Sätt grupp-ID är samma sak fast för gruppen.
Var försöktig med detta, sätta användar-ID och sätta grupp-ID program kan öppna stora säkerhetshål på ditt system. Om du frekvent sätter användar-ID progam som ägs av root, så tillåter du alla att köra programmet, och köra det som root. Eftersom root inte har några som helst restriktioner på systemet, så kanske du själv kan se säkerhetsproblemet. på kort sikt är det inte så tokigt att använda set user-ID och set group-ID rättigheter, men använd det med sunt förnuft.
Klart..
--Dartanjang 14 juli 2006 kl.16.00 (CEST)
