The UNIX and Linux Forums  

Go Back   UNIX och Linux Forum > Upp Forum > UNIX for Dummies Frågor & Svar > Svar på vanliga frågor > Tips och Tutorials
.
google unix.com



Tips och Tutorials Nyttiga artiklar från våra användare.

Mer UNIX och Linux Forum Ämnen Du kan hitta Helpful
Tråd Thread Starter Forum Svar Senaste Inlägg
Att ge "unzip" permissions & "skapa" filbehörigheter Mike1234 HP-UX 3 03-02-2008 05:34
Unix-tillstånd mobershaw Sun Solaris 0 01-24-2006 06:06
UNIX filbehörigheter jerardfjay UNIX för avancerade & Expertanvändare 3 03-15-2005 12:25
Unix-tillstånd moukoko UNIX for Dummies Frågor & Svar 2 03-11-2004 08:12

 
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Sök i denna tråd Omdöme: Thread Rating: 6 votes, 4.83 average. Visningslägen
  #1 (permalänk)  
Old 05-28-2005
Perderabo's Avatar
Perderabo Perderabo is offline Forum Staff  
Unix Daemon
  
 

Join Date: Aug 2001
Ort: Ashburn, Virginia
Inlägg: 9.131
Unix filbehörigheter

Inledning

Jag har sett en del desinformation om Unix filbehörigheter. Jag skall försöka att ställa in post rak. Ta en titt på detta exempel av en del produktion från LS:

Kod:
$ ls -ld /usr/bin /usr/bin/cat
drwxrwxr-x   3 root     bin         8704 Sep 23  2004 /usr/bin
-r-xr-xr-x   1 bin      bin         9388 Jul 16  1997 /usr/bin/cat
$

På första raden som "root" säger att katalogen ägs av användaren som kallas "root". Och att "bin" är den grupp av katalogen. Du måste förstå användare och grupper och jag antar att det du gör. Mitt mål är att förklara att "drwxrwxr-x" och "-r-xr-xr-x" saker. Detta område är en kombination av filtypen och tillgång tillstånd. Sammantaget har denna information kallas ibland fil-läge. Och ibland är det som kallas behörigheter. Ett bra ställe att börja är genom att ta en snabb titt på hur denna information faktiskt lagras på disk. Sättet att lagras påverkar en rad beslut som har gjorts under årens lopp.

Hur "File Mode" lagras.

På disken, information om en fil lagras i struktur som kallas en "inode". Varje fil har det egna inode. En datapost i en inode kallas för "mode" och det ser ut så här:

Kod:
 |------file mode------|
 |                     |
 |
 |       |----full-----|
         |
 |-type| |   |--basic--|
 |     | |   |         |
 oo0 000 000 000 000 000
 ... ... ... ... ... ...
    |     |   |   |   |
    |     |   |   |   |---- rwx for other
    |     |   |   |
    |     |   |   |-------- rwx for group
    |     |   |
    |     |   |------------ rwx for user
    |     |
    |     |---------------- set uid, set gid, sticky bit
    |
    |---------------------- file type: regular (-)
                                       directory (d)
                                       character special (c)
                                       block special (b)
                                       fifo (p)
                                       symbolic link (l)
                                       socket (s)

Jag tror att "mode" egentligen betyder bara tillstånd och att filtypen var shoved i att spara utrymme. Men författaren till ls Programmet behandlar läge som en enda punkt. Därför filtypen är den första bokstaven i tillstånd string i "ls-l" output. Filtypen vanligen ett av de sju typer som jag visar ovan. Vissa versioner av Unix kommer att lägga till några fler. Den enda sak att notera från de uppgifter layout är att det inte finns utrymme att lägga till fler tillstånd bitar.

Representerar dessa behörigheter i oktalt

Den ls Programmet kan visa, säger "rwxrwxrwx" för behörigheterna för en fil. Det är också mycket vanligt att använda ett oktalt tal till uttrycker behörigheter för en fil. Och som ni ser ovan, detta är hur de lagras. Du kan höra någon säga att vissa har 777 tillstånd. Detta är samma som "rwxrwxrwx" och mycket lättare att uttala. Så du behöver veta om hur du konverterar dem. Tre binära siffror eller bitar motsvarar en oktal siffra:


Kod:
  421
  rwx

Så "läsa lite är värt 4, skriva lite är värt 2 och köra lite är värt 1. Du behöver bara lägga till dessa för att få en oktal siffran. Så"-rwxrwxrwx "är 777. Och"-rwxr-x -- - "är 750. Om du fortfarande inte kan se hur man tar sig från" rx "till 5, kanske denna tabell kommer att bidra till:


Kod:
--- = 0
--x = 1
-w- = 2
-wx = 3
r-- = 4
r-x = 5
rw- = 6
rwx = 7

Observera att vi behöver 4 oktal siffror uttrycka alla tillstånd bitar. De första tre bitar är speciella och ofta noll. Och du nästan alltid lära sig om avslutande 9 bitar först. Vissa människor slutar där, och aldrig lära sig de första tre bitar. Men det finns 12 tillstånd bitar, inte bara 9. Med detta sagt, låt oss nu ta en titt på den avslutande 9 bitar.

Grundläggande Tillstånd bitar

Vi har 3 Tripplar: en trippel för användaren, en trippel för gruppen, och en trippel för andra. Ibland är "användare" heter ägaren. Och ibland "andra" kallas "världen". Jag kommer att använda "användare" och "andra" eftersom chmod kommandot använder bokstäverna ug och o att hänvisa till dessa Tripplar.

Vilka bitar gäller dig?

När Unix beslutar vad du kan göra, det använder inte alla 9 bitar. Unix plockar de första tre som gäller för dig. Betänk detta:
Kod:
----rwxrwx   1 joe        users           29 Mar 22 19:39 somefile

Även om Joe äger den här bilden, han kan inte komma åt den. (Eftersom joe äger filen, kunde han ge sig till. Mer om det senare.) Även root är speciell. root beviljas rwx till alla kataloger och rw till alla filer. På en fil, om någon av de 3 x bitar fastställs som root har verkställa tillstånd. Detta särskilt tillstånd är ofta handikappade på nätet monterade filsystem.

Vad gör rw och x verkligen betyder för en fil?

För en fil, "läsa" och "skriva" är ganska intuitivt. De x för "avrätta" betyder att kärnan kanske försöker köra filen. För att arbeta, filen måste vara en körbar (output från en kompilator) eller ett shell script med ett "#!" första raden. För en katalog, det är lite mer komplicerad. Med en katalog, "skriva" tillstånd innebär att du kan skapa nya filer i katalogen eller ta bort gamla filer. Ibland förvånar människor som du kan ta bort en fil som du inte kan läsa. UNIX rm kommandot test för detta och utfärda en varning, men du kan undertrycka denna varning med-f. Och varning eller nej, om du vill ta bort en oläsbar fil från en skrivbar katalog kan du. Och rmdir kommer inte bry sig om att kontrollera alls.

Vad gör rw och x verkligen betyder för en katalog?

En katalog är en fil också, och "läsa" tillstånd innebär att du kan läsa det. Men du kan verkligen inte göra särskilt mycket utan x tillstånd också. Med abonnentförteckningar du har oftast både läsa och exekvera tillåtelse eller inte. På en katalog, att x är officiellt kallas "sök tillstånd". Du behöver x för att använda en katalog i en sökväg. Så om du försöker "cat / etc / passwd", kommer du att behöva x på / och / etc. Du behöver också x att gå in i en katalog. Tänk dig att du har läst men inte sök (x) tillstånd på en katalog. Vad kan du göra? Inte mycket. Du kan använda "ls" för att visa filnamnen. Även "ls-l" kommer inte att fungera. Läs utan att söka tillstånd är inte särskilt användbar. Återstår som är bättre än att bara skriva behörighet på en katalog ... som är fullständigt värdelös. Jag har inte sett någon annan dokumentation som anger detta uttryckligen, så låt mig upprepa det: skriva, men inte verkställa tillstånd på en katalog bidrag ingenting all.Suppose du har sök (x) tillstånd men inte läsa tillstånd för en katalog. Nu kan du öppna filer i katalogen om du råkar veta filens namn. Du kan gå in i katalogen. Och det är det. Du kan inte ens skapa en ny fil. Lägga skrivbehörighet kan du skapa filer. Och du kan ta bort filer om du råkar veta deras namn.

Symboliska länkarna Special

Det tillstånd som på en symbolisk länk är lite speciell också. De är helt ignoreras. Många versioner av Unix har inget sätt att ändra dem.

Den setuid och Setgid bitar

Ta en titt på denna:
Kod:
$ ls -l /etc/passwd /etc/shadow /usr/bin/passwd
-r--r--r--   1 root     sys        14006 Jan 14 11:17 /etc/passwd
-r--------   1 root     sys         8281 Jan 14 11:18 /etc/shadow
-r-sr-sr-x   3 root     sys        96244 Sep  5  2001 /usr/bin/passwd

Den passwd filen är skrivbar bara av root (Kom ihåg, root är speciell. Det kan skriva en fil som saknar skrivbehörighet set). Skuggan fil, där lösenord lagras, inte ens kan läsas av vanliga användare. Men Joe vill ändra sitt lösenord. Han kan göra det genom att köra / usr / bin / passwd. Tillkännagivande de rs behörigheter. Den passwd program har suid och sgid bits set. Detta förvandlar X i S. I oktal skulle det vara 6555. Den passwd program ägs av root. När Joe kör det, det går inte som "Joe". I stället, det går som det ägaren som är roten. Så passwd program kan ändra joe lösenord för honom. Den sgid bitars fungerar på samma sätt, förutom det orsakar passwd program för att köra med gruppen sys i stället för Joe's grupp. Den suid och sgid inte får sin egen position i ls. När suid biten har angetts, ls visas som i stället ax för ägaren verkställa tillstånd. Vad händer om suid biten har angetts, men ägaren verkställa bitars är avstängd? ls kommer att visa ett kapital S i fallet. Den sgid bitars visas på ett liknande sätt, förutom att det interagerar med gruppen verkställa tillstånd. (Uppsättningen uid koncept uppfanns av Dennis Ritchie som han utveckla Unix.)

Att expandera på saker och ting lite, medan Joe kör suid-to-root passwd program, "Joe" är den verkliga uid och "root" är en effektiv uid. Den passwd program kan få båda dessa id's om man vill. Detta är hur passwd program vet att möjliggöra joe att ändra bara joe lösenord.

Den Sticky Bit

Den Posix standarden säger att om den klibbiga bitar är inställd på en katalog, bara skrivbehörighet på katalogen räcker inte längre att låta filerna tas bort. Du måste dessutom egna filen eller egna katalogen. root fortsätter att ta bort från någon katalog oavsett tillstånd. Tidigare denna bit serveras ett annat syfte. På vissa OS är det fortfarande. Jag kommer att utarbeta en bilaga nedan. Den klibbiga bitar drabbar "andra" verkställa bit i ls visa. Förutom att den använder t och T snarare än s och S. Till exempel:
Kod:
drwxrwxrwt   5 root       root          1024 Feb 11 20:43 /tmp

I detta / tmp katalog över, vem som helst kan skapa nya filer. Men på grund av den klibbiga bitar, en användare kan inte ta bort någon annan användares filer.

Begränsning filbehörigheter med umask

När filer skapas programmet som skapar kan ange den ursprungliga tillstånd inställningen. Du kan åsidosätta detta med umask. Den umask är en uppsättning som förbjuder bitar. Det finns en umask kommando som gör att du kan visa och ändra umask. Till exempel "umask 022" förbjuds grupp skriva och skriva om nyskapade filer. Eller "umask 027" förbjuds grupp skriva och det skulle vara förbjudet andra läsa, skriva eller exekvera. Du kan göra en "umask 0" för att låta programmet göra vad den vill, eftersom det skapar program. Men du kan inte gå längre. Du kan inte tvinga ett program att sätta en bit på. Den umask inställningen påverkar filer, kataloger, namngivna rör (alias fifos), och särskilda filer. Det kan eller inte kan påverka symboliska länkar. Det påverkar också Somes former av Inter Process meddelande men det är utanför denna artikel. Och tro det eller ej, uppkallad uttag befriade från umask. Detta undantag nödvändig vid Posix.

Ändra filrättigheter med chmod

Endast ägaren till en fil eller root kan ändra behörigheter för en fil. Denna verksamhet är inte påverkas alls av umask inställningen. Om du ändrar behörigheter för en symbolisk länk, en länk kommer att följas och du kommer att förändra målfilen. Det är möjligt att endast root ska ha befogenhet att fastställa en filens klibbiga bitar. Som ett exempel, "chmod 700 somefile" wil låta ägaren läsa, skriva och köra filen, medan underkänna alla tillgång till alla andra användare.

Använda Symbolisk läge med chmod och umask

Posix infört en ny syntax för chmod kommandot. Tanken var att den nya syntaxen kommer att ersätta användningen av ett oktalt konstant med chmod kommandot. Den oktal konstant är fortfarande tillåtet, och jag tror det är här för att stanna. Men de nya symboliska syntax kan du ändra några bitar utan att veta vad andra är. Låt oss exempelvis säga att jag vill göra en fil oåtkomlig för andra, men jag inte vad jag ska ändra acess till användare eller grupp. Jag skulle behöva göra:
ls-l fil
Titta på filen och ta reda på de aktuella inställningarna.
chmod 750 fil
Jag var tvungen att fastställa att de två första siffrorna är strömmar 7 och 5 innan jag kunde göra mitt chmod kommandot. Med den nya syntax kan jag helt enkelt:
chmod o \u003d fil
att stänga av de 3 sista bitar. Som ett annat exempel, "chmod u + x fil" gör det möjligt för användaren att köra filen. Å andra sidan är dessa två kommandon är likvärdiga:
chmod 750 fil
chmod u \u003d rwx, g \u003d rx, o \u003d fil
och jag föredrar den första syntax.

Den symboliska funktionen kan vara en kommaseparerad lista av specifikationer. Varje specifikation har tre komponenter: <who> <operation> <bitlist>
Kod:
The who part can be:
u  (user)
g  (group)
o  (other)
a  (all)
   (whatever is allowed by umask (subset of all))

The operator can be  = or - or +
= (set bits to bitlist)
- (subtract bitlist from current bit
+ (add bitllist to current bits)

The bitlist can be one of the following letters:
r (read permission)
w (write permission)
x (execute permision)
X (conditional execute permision)
u (current permissions for user)
g (current permissions for group)
o (current permissions for others)
s (set uid or set gid)
t (sticky bit)

X är detsamma som x såvida inte filen är en nondirectory och har för närvarande ingen x bits set. Det är (som uid eller serie GID) endast kan anges för användare eller grupp behörigheter. Den inte bara kan anges för användaren behörigheter. Några exempel med hjälp. Framförallt såg vi / usr / bin / passwd var 6555 (-r-sr-sr-x ls). Här är några sätt som skulle kunna uppnås:
chmod 6555 / usr / bin / passwd
chmod u \u003d RXS, g \u003d RXS, o \u003d rx / usr / bin / passwd
chmod ug \u003d RXS, o \u003d rx / usr / bin / passwd
chmod a \u003d rx, ug + s / usr / bin / passwd
Och det finns många andra sätt att göra detta.

Till största delen chmod är immun mot umask i att vilken bit man vill ange inte får modifieras genom umask. Men på ett villkor, att chmod kommandot kommer att granska den aktuella inställningen för umask att avgöra vilka bitar man vill ställa. Detta sker när du lämnar "som" fältet tomt. Så här:
chmod \u003d w somefile
Skillnaden mellan "a \u003d w" och "\u003d w" är hårfin. Här är ett exempel som kan hjälpa. Många program försöker skapa filen med 666 (-rw-rw-rw-) behörigheter. Men detta får modifieras genom umask. Antag att du vill ställa in en fil till 666 men modifierats av nuvarande umask. Vi skulle kunna stänga av alla bitar och sedan sätta på läsa och skriva bitar som är tillåtet enligt gällande umask:

chmod a \u003d \u003d rw somefile

Och på tal om umask kan du använda symboliska argument med umask kommando också. Men, PosixI sin vishet beslutat att i detta fall att logiken skulle vändas. Så om användning umask med ett oktalt argument du anger bitarna att vara förbjudet. Men om du använder umask med ett symboliskt argument du anger bitar att tillåta. Så dessa är likvärdiga:
umask 022
umask u \u003d rwx, gå \u003d rx

Sammanfattning

Vid det här tillfället du har tillräckligt med information till främst förstå dessa 12 tillstånd bitar. Det finns flera mycket speciella fall som jag har ignorerat eller förtigs. I separata inlägg nedan kommer jag att ta upp dessa. Informationen i det här första inlägget är ganska allmän. En Posix kompatibel OS måste stödja det här. Det omfattar nästan alla versioner av Unix släppts under de senaste 10 åren. Följande artiklar diskutera funktioner som kanske inte är universella.
  #2 (permalänk)  
Old 05-30-2005
Perderabo's Avatar
Perderabo Perderabo is offline Forum Staff  
Unix Daemon
  
 

Join Date: Aug 2001
Ort: Ashburn, Virginia
Inlägg: 9.131
Den Sticky Bit

Jag tidigare har nämnt att när en katalog har klibbiga bit set, ett ärende kan tas bort endast genom att ägaren till filen eller ägare till katalogen. Detta anges av Posix och är nu ganska allmän. Men det var inte det ursprungliga syftet med klistriga bit. Jag ser att Posix definition av ls-kommandot faktiskt kallar klibbiga bitar "selektivt strykningen flagg". Den konstanta i C-header-filer för denna bit är S_ISVTX. Den svtx står för spara text och detta visar att det ursprungliga syftet med bitar.

Den ursprungliga idén var att om den klibbiga bitar sattes, texten del av en process skulle stanna i växlingspartitionen område. Detta gör att den skulle kunna läsas in i minnet med en enda skiva läsa. Ursprungligen Unix används ett filsystem med en block storlek 512 och block tenderade att scatter. Så det skulle ta tid att samla in texten segment och sedan läsa in den i minnet. Till en början fanns det ingen personsökning, bara att byta. Och för att köra ett program som skulle behöva vara helt läsas in i minnet. Nu sida strikt ett program i minnet. Sidorna laddas när de behövs. Så är den ursprungliga användningen av klibbiga bitar död? Well, no. Det beror på OS.

Med HP-UX, denna användning fortfarande lever och är dokumenterade på HP-UX chmod (2) manualsidan. Vad är detta? Från HP-UX Kernel Tuning and Performance Guide via HP-UX Faq:
"När ansökningar finns fjärrsystem in" sticky bit "på ansökningarna binärfiler, med chmod + t kommando. Detta talar om för systemet att sidan texten till den lokala disken. Annars är det" hämtas "i nätverket. Av Naturligtvis skulle detta endast gälla när det finns faktiska personsökning inträffar. På senare tid finns det en kärna parameter page_text_to_local, som då satt till 1, kommer att tala om kärnan sidan alla NFS körbara textsidor till lokala växlingsutrymme. "

Med Solaris, det finns inga tecken på att den ursprungliga användningen av klibbiga bitar, dock enligt den Solaris chmod (2) manualsidan:
"Om en vanlig fil är inte körbar och har S_ISVTX set, filen antas vara en swap-fil. I detta fall systemets sida cache inte kommer att användas för att hålla filens data. Om S_ISVTX bit är inställt på något annat fil, resultaten är ospecificerade. "

Så du kommer att behöva kontrollera chmod (2) manualsidan för ditt OS för att se vilken effekt, om någon, klibbiga bit har en fil. Också vara medvetna om att när en effekt existerar, OS kan begränsa inställningen en klibbig bit till roten. Till exempel, med HP-UX, en angripare skulle kunna ställa mycket klibbiga bitar och kör systemet ur växlingsutrymme.

HP-UX faktiskt även några symboliska länkar som har klibbiga bit satt. Jag kommer att behandla detta nedan.

Senast redigerad av Perderabo; 06-04-2005 vid 04:09..
  #3 (permalänk)  
Old 06-03-2005
Perderabo's Avatar
Perderabo Perderabo is offline Forum Staff  
Unix Daemon
  
 

Join Date: Aug 2001
Ort: Ashburn, Virginia
Inlägg: 9.131
Ställ GID Bit för Kataloger

Vi kort nämnas att filer har ett användar-och grupp associerade med dem. Ursprungligen var det bara de användare och grupper av den som skapade dem. Men ursprungligen, kan en användare i endast en grupp i taget. BSD infört begreppet att en användare kan vara i flera grupper simutaneously. Så i BSD, som gruppen har använts? BSD beslutat att använda den grupp av katalogen som innehöll de nyskapade filen.

Många moderna versioner av UNIX försöka få bådadera. Ett nybildat filen blir den grupp av användaren, om inte katalogen har setgid bit. I så fall skall den nyskapade filen blir den grupp av katalogen.

Och det finns ett undantag från denna! Byte av ägare eller grupp av ett ärende har säkerhetsproblem. Av den anledningen att vissa versioner av UNIX kommer eventuellt förbjuda en användare än root byter ägare till en fil. Dessutom kan en användare är förbjudet att byta grupp av ett ärende om han inte är medlem i den nya gruppen. Denna begränsning kommer att åsidosätta den setgid bit på en katalog om det behövs.
  #4 (permalänk)  
Old 06-03-2005
Perderabo's Avatar
Perderabo Perderabo is offline Forum Staff  
Unix Daemon
  
 

Join Date: Aug 2001
Ort: Ashburn, Virginia
Inlägg: 9.131
Verkställighet Mode fillåsning / Manditory fillåsning

Vi är inte färdiga med det som gid bitars ännu ... Unix har begreppet fillåsning. Fillåsning ligger utanför denna tråden. Men du måste veta att fillåsning finns i två varianter: rådgivande och manditory. Vilken smak är tillämplig på en viss fil beroende på inställningar. Om gruppen verkställa bitars är avstängd men setgid bitar är på något ärende lås på filen manditory.

Useless Bit Kombination?

Varje hänvisning till att jag har sett säger att setgid på / grupp verkställa off är en annars meningslös kombination. Även Richard Stevens (i Avancerad programmering i Unix-miljö) Säger "Sedan set-group-ID bit är meningslöst när gruppnivå verkställa bit är avstängd, formgivarna av SVR3 valde detta sätt att specificera att låsa efter en fil ska maditory låsning och inte rådgivande låsning."

Tja betrakta detta fall: Fred kör Personalavdelningen. Fred och hans grupp som ofta behöver lookup de semesterdagar för anställda. Fred beslutar att skriva ett program så kan de anställda lookup egna semesterdagar används. Av säkerhetsskäl, Fred gör det här programmet göra en hel del avverkning. Fred beslutar att han inte vill att hans grupp att använda det här programmet. De har andra verktyg som inte skräp han log. Så Fred gör:
chown fred: hr vdays
chmod 2701 vdays
Nu vdays program kan inte köras av medlemmar i hr (utom Fred). Men det kan köras av alla andra. Och det kommer att ha samma GID av hr när det körs. Jag har skrivit ett testprogram, som det så här, och köra det på både Solaris och HP-UX. Det funkar.

Påverkan på ls produktion

Även om denna bit kombination kan vara användbart finns vissa begränsade fall, på gott och ont, det kommer att få två effekter. Den vdays programmet fungerar, men om ett lås är försök på filen kommer det att bli manditory. Som en praktisk fråga, skulle effekten bara ett enstaka program som en debugger. Men ls maj behandla denna bit kombination annorlunda. Jag har sett båda dessa ...
Kod:
chown fred:hr vdays
chmod 2701 vdays
-rwx--S--x   1 fred     hr          9938 Jul 16  2004 vdays
-rwx--l--x   1 fred     hr          9938 Jul 16  2004 vdays

  #5 (permalänk)  
Old 06-04-2005
Perderabo's Avatar
Perderabo Perderabo is offline Forum Staff  
Unix Daemon
  
 

Join Date: Aug 2001
Ort: Ashburn, Virginia
Inlägg: 9.131
En närmare titt på Permission bitar om symboliska länkar

Symboliska länkar har utvecklats under åren. Först en symbolisk länk följdes bara när du öppnar en fil. Så:
touch datafile
ln-s datafile smyga
chmod 700 slinka
inte skydda fil som heter "datafile". Detta var en säkerhetsrisk. Dag att "chmod 700 smyga" kommer att ändra behörigheter för datafile. "chown fred datafile" kommer också att ändra datafile och lämna smyga ensam.

Symbolisk Länkar Måste ha en Ägare

Det är ett sätt att byta ägare till en symbolisk länk. Det är "chown-h smyga". Detta kommer att förändras smyga och lämna datafile ensam. Den ursprungliga anledningen till att symboliska länkar behöver en ägare är en funktion som kallas "kvoter". Kvotering ger systemadministration att begränsa diskutrymmet som används av en användare. En symbolisk länk förbrukar en liten mängd disk resurser så det måste tas upp i lämpliga användaren. Vi har nu en andra skäl: klibbiga kataloger. Vi måste veta vem som kan ta bort en symbolisk länk från en klibbig katalog.

Förutom en ägare, Posix kräver att symbolisk länk har en storlek. Det är allt som du kan lita på. Symboliska länkar kanske inte ens har något tillstånd bitar.

Tillstånd bitar krävs Posix som ska ignoreras

På Solaris och Linux, nybildade symboliska länkarna 777 och detta påverkas inte av umask. Jag kan inte inte hitta något sätt att vända bitar av. På HP-UX, symboliska länkar är också skapad med 777, men umask påverkar detta. Så:
umask 777
ln-s datafile smyga
skapar en symbolisk länk med alla dessa bitar slocknar. Detta hade ingen effekt alls på vad jag skulle göra med datafile. Och symbolisk länk (med ett läge 0) till abonnentförteckningar också fungerat bra.

BSD Har ett sätt att ändra den Tillstånd bitar på en symbolisk länk

De olika BSD distros har alla en "chmod-h" som är som det krävs "chown-h". Med detta kommando jag testade symboliska länkar på FreeBSD och fann att de ignorerar tillstånd bitar också. Den "chmod-h" kommandot har genomförts med hjälp av en lchmod () system samtal. (BSD även har en lutimes () för samtal och en "touch-h" för att åberopa den.) Så långt är allt bra. Ingenting är kränks Posix standard.

NetBSD Får kränks Posix Standard

Enligt de NetBSD symboliska länken manualsidan: "De readlink (2) system samtal kräver läsbehörighet på den symboliska länken." readlink () är ett system samtal som används av ls för att visa att målet på en symbolisk länk. Så med ungefär så här:
Kod:
lrwxrwxrwx   1 fred       users            8 May 24 11:15 slink -> datafile

det där datafile erhölls med readlink (). Jag har inte tillgång till en NetBSD systemet för att testa så jag kunde inte verifiera detta.

HP-UX Övergångsordning Länkar

När HP rewrote HP-UX överensstämma med System V Release 4, platsen för många filer som ändrats. Som ett exempel, min favorit skal flyttas från / bin / ksh till / usr / bin / ksh. Vissa människor fortfarande använda / bin / ksh och som fungerar (för tillfället) på grund av en symbolisk länk:

Kod:
$ ls -lds /bin
   0 lr-xr-xr-t   1 root       sys              8 Oct  1  2003 /bin -> /usr/bin

Hur är HP vrida på den klibbiga bitar? Den lchmod () system samtalet har lånats från BSD. Detta är en odokumenterad funktion för HP-UX. HP: s idé är att de kan vara säkra på att en klibbig symlink inte har skapats av någon användare eftersom användarna inte känner lchmod. Använda lchmod () för att sätta på sticky bit inte ändrar egenskaperna hos den symboliska länken på något sätt. Den enda skillnaden är att HP: s TL kommer vara villiga att verka på den symboliska länken.

Men här är vad HP-UX faq har att säga: "Transition länkar är lite snabbare, eftersom de är kopplade till filnamnet lagras i inode själv, istället för att använda en fördelning per enhet för att spara länken. "Även om detta uttalande är inte direkt felaktig, det är fruktansvärt missvisande. HP-UX bara stöder snabb symlinks. Om refererade filnamn är kort nog är det lagras direkt i inode. Övergången länkar råkar vara kort nog. Jag har sett en del människor använder lchmod () för att sätta på klibbiga lite symboliska länken i ett försök att snabba upp saker och ting. Det fungerar inte så.

Övergångsbestämmelser länkar börjar försvinna. Människor som inte har bytt från / bin / ksh till / usr / bin / ksh en dag kan få en oförskämd överraskning. Nedan finns några länkar till HP: s webbplats.

Underhålla Övergångsordning Länkar
Övergångsbestämmelser Länkar Kommandon (Avvisad)
Övergångsbestämmelser Länkar (Avvisad)

Senast redigerad av Perderabo; 06-04-2005 vid 04:43..
  #6 (permalänk)  
Old 09-25-2007
Perderabo's Avatar
Perderabo Perderabo is offline Forum Staff  
Unix Daemon
  
 

Join Date: Aug 2001
Ort: Ashburn, Virginia
Inlägg: 9.131
Ändra Inode av en fil

Vi har diskuterat hur skrivbehörighet kontroller möjlighet att ändra data i en fil. Men vad sägs om att ändra tillstånd bitar, ägaren, gruppen och även tidstämplar? Ingen kan ändra något på en CD och en NFS Servern kan underlåta en NFS klienten. I den följande diskussionen kommer jag att anta en lokal läsa-skriva-filsystem och att användaren kallas "root" har lämpliga särskilda administrativa privilegier för filen i fråga.

chmod - Ändra filbehörigheter

Om du vill ändra filbehörigheter alls, du måste vara ägaren till filen eller du måste vara root-användaren. Root-användaren kan ändra alla tillstånd bit. Detta kan inte vara sant för ägaren. I en bit att ägaren inte kan slå på är SGID bit.

För att slå på den lite, måste ägaren vara medlem i den grupp som filen är i. Om denna begränsning inte var på plats, en användare kan också skapa en SGID program för att ge sig tillgång till filer som kontrolleras av andra grupper än de som som han tillhör. Kom ihåg att, som vi nämnde ovan, SGID bit har ofta överbelastad i också används för fillåsning. En version av Unix kan eller inte kan tillåta att en fil ägaren för att slå på SGID bit av en fil i en annan grupp om ingen verkställa bit är inställd.

Att bara sätta på en verkställa bitars kan resultera i SUID och SGID bits avslutas (inte ens för root). Detta är en säkerhetsfunktion för att säkerställa att användaren tänker för SUID och SGID bitar som skall fastställas. Användaren kan växla tillbaka dem på uttryckligen. Eller kan användaren enkelt uttryckligen ange alla bitar på en gång. Också vara medvetna om att skriva till en fil kan på vissa versioner av Unix, rensa SUID och SGID bitar. Se nedan för effekten av att byta ägare eller grupp av en fil.

chown - ändra filen Ägare

Ursprungligen Unix får en fil ägaren att ge bort en fil. En fil ägare kan byta ägare till någon annan. Det fanns ingen möjlighet för en icke-root-användare att ångra den här åtgärden. När Unix uppdelad i en Berkeley / AT & T versionerna skall USG (Unix-gruppen, en del av AT & T) versioner av Unix tenderat att ärva problemet. Under tiden BSD (Berkeley Software Distribution, en del av University of California, Berkeley) borttaget chown från icke-root-användare. BSD hade genomfört diskkvoter som kan begränsa hur mycket diskutrymme som en användare kan ha i ett filsystem. Naughty användare kunde ge bort stora filer till Sneek tidigare kvoterna.

Idag är det inte lätt att säga om en icke-root kan chown en fil. Många versioner av Unix tillåta båda beteenden. HP-UX har en setprivgroup anläggning som kan kontrollera huruvida medlemmarna i en viss grupp kan åberopa chown. Solaris har en global parameter rstchown som kan ställas in så att den globala chown. Ställ in den här parametern också inaktiverar en förändring-grupp begränsning som beskrivs nedan (utan att påverka SGID begränsningar som beskrivits ovan). Senaste Linux-versionen har en CAP_CHOWN förmåga att kontrollera den här funktionen. Du måste kontakta din dokumentation för andra versioner av Unix. Och du kommer att behöva kontakta din systemadministratör för att se hur ditt system är konfigurerat.

Grundinställningen med flest OS's är för chown att vara begränsat till roten bara. Och det finns en enighet om att det borde stanna här sättet för säkerheten. Om en icke-root-användare inte byta ägare på en fil och eventuella verkställa bitars är på den SUID och SGID bitar måste klarläggas. Denna kan även hända med roten.

chown, chgrp - ändra filen gruppen

Den chown kommandot kan (med en modern, Posix kompatibel version av Unix) också försöker en grupp förändring. Och det finns en chgrp kommandot. Båda dessa åberopa chown () för samtal för att ändra en grupp. Det faktum att ett gemensamt system samtalet inblandade hjälper till att förklara varför vissa OS versioner gemensamt genomföra eller slappna av begränsningar för icke-root-användare för både ägare och grupp förändringar.

En icke-root-användare kan ändra grupp av ärende han äger till en grupp som han är medlem. Posix förbjuder en icke-root-användare från att ändra en filer grupp till en grupp som han inte är medlem. Men vissa OS har lyft denna begränsning om begränsning av möjligheten att ändra en fil ägare har hävts.

Om gruppen har förändrats genom en icke-root-användare och en eller verkställa bitar är inställd, SUID och SGID bitar raderas.

touch - ändra filen tidstämplar

När kontakten kommando används för att ändra tidstämplar av en befintlig fil, det åberopar antingen den gamla utime () eller den nya utimes () system samtal. Om du vill ändra tidsstämpel på en befintlig fil måste du egna filen eller root. Dessutom måste du ha skrivbehörighet på filen eller root.
 

Komihåglista

Taggar
chmod, filbehörigheter, Linux-kommandon, klibbiga bitar, suid, umask

Thread Tools Sök i denna tråd
Sök i denna tråd:

Avancerad sökning
Visningslägen Betygsätt denna tråd
Betygsätt denna tråd:

Utstationering Regler
Du får inte efter nya trådar
Du får inte efter svar
Du får inte skicka bilagor
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG] kod
HTML-koden är Av
Trackback är
Pingbacks är
Refbacks är




Alla tider är GMT -4. Klockan är nu 02:07.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Översättningar Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX och Linux Forum Innehållet upphovsrättsskyddat © 1993-2009. All Rights Reserved.Ad förvaltning RedTyger

Content Relevant webbadresser från vBSEO 3.2.0