SUID
Den sticky bit , der anvendes på eksekverbare programmer, der markerer systemet for at holde et billede af programmet i hukommelsen, efter at programmet er kørt.
Men jeg ved ikke, hvad det er gemt i hukommelsen. Og hvordan kan jeg se dem, i dette tilfælde.?
Kommentarer
- Her er en god tutorial med udarbejdede eksempler og forklaringer. Nøglen til at forstå dette er det involverede oktale system. Linux Sticky Bits-tutorial med arbejdede eksempler .
Svar
Dette er sandsynligvis en af mine mest irriterende ting, som folk ødelægger hele tiden. SUID / GUID bit og sticky-bit er 2 helt forskellige ting.
Hvis du laver en man chmod
, kan du læse om SUID og sticky-bits. man-siden er også tilgængelig her .
baggrund
uddrag
Bogstaverne rwxXst vælg filtilstandsbits til berørte brugere: læs (r), skriv (w), udfør (eller søg efter mapper) (x), udfør / søg kun, hvis filen er en mappe eller allerede har udførelsestilladelse for en bruger (X), indstil bruger- eller gruppe-id ved udførelse (r) , begrænset sletningsflag eller sticky bit ( t) .
SUID / GUID
Hvad ovenstående mandside er forsøger at sige er, at den position, som x-bit indtager i rwxrwxrwx for brugerens oktale (1. gruppe af rwx) og gruppen oktal (2. gruppe af rwx) kan tage en yderligere tilstand, hvor x bliver et s. Når dette sker, kører denne fil, når den udføres (hvis den er et program og ikke kun et shell-script) med tilladelser fra ejeren eller gruppen af filen.
Så hvis filen ejes af root og SUID-bit er tændt, kører programmet som root. Selvom du udfører det som en almindelig bruger. Det samme gælder for GUID-bit.
uddrag
SETUID OG SETGID BITS
chmod rydder sæt-gruppe-ID bit i en almindelig fil, hvis filens gruppe-ID gør matcher ikke brugerens effektive gruppe-id eller et af brugerens supplerende gruppe-ider, medmindre brugeren har passende privilegier. Yderligere begrænsninger kan medføre, at sæt-bruger-ID og sæt-gruppe-ID-bits i MODE eller RFILE ignoreres. Denne adfærd afhænger af politikken og funktionaliteten i det underliggende chmod-systemopkald. Hvis du er i tvivl, skal du kontrollere den underliggende systemadfærd.
chmod bevarer en mappes sæt-bruger-id og sæt-gruppe-id-bits, medmindre du udtrykkeligt angiver andet. Du kan indstille eller rydde bitene med symbolsk tilstande som u + s og gs, og du kan indstille (men ikke rydde) bitene med en numerisk tilstand.
Eksempler på SUID / GUID
ingen suid / guid – bare bitene rwxr-xr-x er indstillet .
$ ls -lt b.pl -rwxr-xr-x 1 root root 179 Jan 9 01:01 b.pl
suid & brugerens eksekverbare bit aktiveret (små bogstaver s) – bitene rwsr-xrx er indstillet.
$ chmod u+s b.pl $ ls -lt b.pl -rwsr-xr-x 1 root root 179 Jan 9 01:01 b.pl
suid aktiveret & eksekverbar bit deaktiveret (store bogstaver S) – bitene rwSr-xr-x er indstillet.
$ chmod u-x b.pl $ ls -lt b.pl -rwSr-xr-x 1 root root 179 Jan 9 01:01 b.pl
guid & gruppe “s eksekverbar bit aktiveret (små bogstaver s) – bitene rwxr-sr-x er indstillet.
$ chmod g+s b.pl $ ls -lt b.pl -rwxr-sr-x 1 root root 179 Jan 9 01:01 b.pl
guid aktiveret & eksekverbar bit deaktiveret (store bogstaver S) – bitene rwxr-Sr-x er indstillet.
$ chmod g-x b.pl $ ls -lt b.pl -rwxr-Sr-x 1 root root 179 Jan 9 01:01 b.pl
sticky bit
Den sticky bit på anden hånd betegnes som t
, såsom med /tmp
-mappen:
$ ls -l /|grep tmp drwxrwxrwt. 168 root root 28672 Jun 14 08:36 tmp
Denne bit burde altid have været kaldt “begrænset sletningsbit” i betragtning af, at det er hvad det virkelig betyder. Når denne tilstandsbit er aktiveret, opretter den en mappe sådan, at brugerne kun kan slette filer & mapper inden i den, som de er ejer af.
uddrag
RESTRIKTERET SLETNINGSFLAG ELLER STICKY BIT
Det begrænsede sletningsflag eller den sticky bit er en enkelt bit, hvis fortolkning afhænger af filtypen. For mapper forhindrer det ikke privilegerede brugere i at fjerne eller omdøbe en fil i biblioteket, medmindre de ejer filen eller biblioteket; dette kaldes det begrænsede sletningsflag for biblioteket og findes almindeligvis i verdensskrivbare mapper som / tmp.For almindelige filer på nogle ældre systemer gemmer biten programmets tekstbillede på swap-enheden, så den indlæses hurtigere, når den køres. Dette kaldes den sticky bit.
Kommentarer
- Faktisk kunne sticky-biten tidligere anvendes på eksekverbare filer, hvilket fik dem til at forblive i swap, efter at de først blev indlæst. Dette kunne spare masser af unødvendigt disk / netværk (NFS) og CPU-brug til programmer, der blev brugt meget. Dog hverken Linux eller de fleste (alle?) Unix-systemer understøtter dette længere (det blev fjernet fra kernen). Det ' s " klæbrig ", fordi den eksekverbare sidder fast i swap. Derudover blev den brugt til mapper som du beskriver.
- Faktisk ville " meget brugt eller meget stor " være en bedre beskrivelse. Husk, at mit college havde Netscape-webbrowseren som " klæbrig " på deres HP-UX-computer tilbage i 1995. Så små programmer, der meget ofte blev brugt (f.eks. systemkommandoer kørte ofte af cron) og store programmer (f.eks. Netscape) var hovedkandidater, der skulle gøres " klæbrig ". I begge tilfælde ville det være spildende at genindlæse dem konstant fra disk / NFS.
- Sticky-bit-programmer var beregnet til at forblive hjemmehørende i RAM, ikke i swap (indlæsning af et billede fra en swap-fil er ikke ' t det meget hurtigere end at indlæse det fra en filsystemdisk). Det var beregnet til vigtige OS-kommandoer som
ls
. Det er klart, at kun superbrugeren kunne indstille den klæbende bit på en fil. Det blev mindre vigtigt, efter at virtuel hukommelse og delte biblioteker blev introduceret, og især da personsøgere blev smartere og dynamisk kan beslutte, hvilke sider der skal forblive hjemmehørende. - Og da den klæbrige egenskab ikke gav mening for en mappe, var det samme bit af tilladelsesmasken blev senere fortolket for at ændre den traditionelle filoprettelsessemantik til mapper.
- @alexis: Oprindeligt blev sticky bit-programmer opbevaret i swap-rum. Dette var meget hurtigere end læsning fra filsystemet, fordi læsning af swap-filbilleder var sammenhængende sektorer og kunne derfor læses mest asynkront. Med de tidlige filsystemer var der ingen sektor " kørelængder " og de fleste tidlige filsystemdrivere læser en sektor ad gangen, selvom sektorerne tilfældigvis efter hinanden. Resultatet på en PDP-40 var, at klæbende programmer syntes at indlæses med det samme, mens ikke-klæbende programmer tog det sædvanlige sekund eller to. Jeg tror, vi havde kun
ed
klæbrig.
Svar
“Den klæbende bit, der anvendes på eksekverbare programmer, der markerer systemet for at holde et billede af programmet i hukommelsen, efter at programmet er kørt.”
Jeg synes, at “det er ret forældet info, i dag ignorerer de fleste moderne Unixes det. I Linux er den sticky bit kun relevant for mapper. Se her og den ganske informative Wikipedia-artikel .
Under alle omstændigheder, i den gamle opførsel, billedet (kun “koden”, ikke dataene) blev kun gemt i virtuel hukommelse -byttet normalt, ikke i ægte hukommelse, for at køre det hurtigere næste gang.
Svar
Hvad er sticky bits?
En sticky bit er en tilladelsesbit, der er indstillet i et bibliotek, der kun tillader ejeren af filen inden for t hat-katalog eller rodbrugeren for at slette eller omdøbe filen. Ingen andre brugere har de nødvendige rettigheder til at slette den fil, der er oprettet af en anden bruger.
Dette er en sikkerhedsforanstaltning for at undgå sletning af kritiske mapper og deres indhold (underkataloger og filer), selvom andre brugere har fulde tilladelser.
Kommentarer
- At ' ikke er korrekt: da.wikipedia.org/wiki/Sticky_bit
- @AB Det virker ret nøjagtigt for mig næsten til det punkt at omskrive begyndelsen af den Wikpedia-artikel, du citerer. Hvad ' er galt med det?
- Jeg vil sige, at svaret er ufuldstændigt. " Sticky " angiver også, at den eksekverbare fil holdes i swap-rummet for at få den til at køre hurtigere. Dette er gammel historie, men i ældre filsystemer plejede drivere at læse en sektor ad gangen, selvom sektorerne tilfældigvis var fortløbende. Dette gjorde, at ikke-klæbrige eksekverbare filer var langsomme, klæbrighed gav meget mening på det tidspunkt.