Hvad betyder GID egentlig?
Jeg har googlet det, og dette er hvad linux.about.com sagde:
Gruppeidentifikationsnummer til processen. Gyldige gruppenumre er angivet i
/etc/group
og i GID-feltet i/etc/passwd
-filen. Når en proces startes, indstilles dens GID til GID for dens overordnede proces.
- Men hvad betyder det?
De tilladelser, jeg har til min mappe, er i øjeblikket på 0755
Jeg forstår, at hvis jeg indstiller UID for ejeren, vil det være 4755
Og hvis jeg indstiller GID for gruppen, vil det være 2755
Hvis Jeg indstiller Sticky Bit for andre, det bliver 1755
- Er det endda vigtigt at indstille disse tilladelser?
Svar
Hver proces i et UNIX-lignende system, ligesom alle filer, har en ejer (brugeren, enten rigtig eller et system “pseudo -bruger “, såsom daemon
, bin
, man
osv.) og en gruppe ejer. Gruppeejeren for en brugers filer er typisk den brugers primære gruppe, og på lignende måde ejes alle processer, du starter, typisk af dit bruger-id og af dit primære gruppe-id.
Nogle gange Det er dog nødvendigt at have forhøjede privilegier til at køre bestemte kommandoer, men det er ikke ønskeligt at give fulde administrative rettigheder. For eksempel har kommandoen passwd
adgang til systemets skyggeadgangskodefil, så den kan opdatere din adgangskode. Det er klart, at du ikke vil give hver bruger rodrettigheder, bare så de kan nulstille deres adgangskode – det vil utvivlsomt føre til kaos! I stedet skal der være en anden måde at midlertidigt tildele brugere forhøjede privilegier til at udføre bestemte opgaver. Det er hvad SETUID- og SETGID-bitene er beregnet til. Det er en måde at fortælle kernen om midlertidigt at hæve brugerens privilegier, så længe den markerede kommando udføres. En SETUID-binær vil blive udført med rettighederne til ejeren af den eksekverbare fil (normalt root
), og en SETGID-binær vil blive udført med gruppeprivilegierne for gruppeejeren af den eksekverbare fil. I tilfælde af kommandoen passwd
, der tilhører root
og er SETUID, giver det normale brugere mulighed for direkte at påvirke indholdet af adgangskoden fil på en kontrolleret og forudsigelig måde ved at udføre med root-rettigheder. Der er mange andre SETUID
kommandoer på UNIX-lignende systemer (chsh
, screen
, ping
, su
osv.), som alle kræver forhøjede rettigheder for at fungere korrekt. Der er også et par SETGID
programmer, hvor kernen midlertidigt ændrer procesens GID for at give adgang til logfiler osv. sendmail
er sådan et værktøj.
sticky bit
tjener et lidt andet formål. Dens mest almindelige anvendelse er at sikre, at kun den brugerkonto, der oprettede en fil, kan slette den. Tænk på /tmp
-mappen. Det har meget liberale tilladelser, som gør det muligt for enhver at oprette filer der. Dette er godt og giver brugerne “processer til at oprette midlertidige filer (screen
, ssh
osv., Hold statusoplysninger i /tmp
). For at beskytte en brugers midlertidige filer har /tmp
det klæbende bit sæt, så kun jeg kan slette mine filer, og kun du kan slet din. Selvfølgelig kan root gøre alt, men vi må håbe, at sysadmin ikke forstyrres!
For normale filer (det vil sige for ikke-eksekverbare filer) er der kun lidt mening med at indstille SETUID / SETGID-bits. SETGID på telefonbøger på nogle systemer styrer standardgruppeejeren for nye filer, der er oprettet i det bibliotek.
Kommentarer
- Ah fantastisk, tak for det. Så derfor er Sticky Bit som en personlig (bruger) tilladelse? Svaret var godt formuleret og forståeligt.
- Tak! Den sticky bit giver lidt beskyttelse af filer i en mappe med liberale tilladelser. Det ‘ er ikke rigtig specifikt for en given bruger, da alle filer får samme beskyttelsesniveau, uanset hvem ejeren er. Det ‘ en måde at tillade nogen at oprette filer og sikre, at kun ejeren kan ødelægge dem.
- +1, D_bye, kan du venligst dele et eksempel på setgid-bit indstillet i biblioteket.Tak
- @Ankit Under Solaris (og næsten helt sikkert andre – jeg bruger dog kun * BSD og Solaris), hvis setgid-bit er indstillet i en mappe, vil alle nye filer, der oprettes under denne mappe, have den samme gruppeejer som selve biblioteket og arver ikke den primære gruppe af (brugeren, der kører) oprettelsesprocessen.
Svar
Jeg tror du mener” SGID “bit af en fil, som ikke er den samme som dens GID.
Her er en typisk fil på min computer (output af ls -l):
-rw-r----- 1 bristol users 16 2012-07-23 11:36 file.txt abbbcccddd <-- See explanation below.
Hvis du ser på de første 10 symboler,
(a) -: Dette er bare en almindelig gammel fil (i modsætning til til et bibliotek, symlink, rør osv. …)
(b) rw-: Ejeren kan læse og skrive denne fil, men ikke udføre den. Ejeren er “bristol” som du kan se senere på linjen.
(c) r–: Medlemmer af gruppen, som denne fil tilhører (“brugere” i eksemplet), bortset fra ejeren, kan læse, men ikke skrive eller udføre denne fil.
(d) —: A ingen andre kan slet ikke få adgang til denne fil (undtagen selvfølgelig root).
Feltet GID er det, der fortæller dig, hvilken gruppe denne fil tilhører – i dette tilfælde “brugere”.
Det felt, du sandsynligvis mente, baseret på din beskrivelse, er SGID-biten, og her “er en bedre forklaring, end jeg kunne komme med:
http://www.codecoffee.com/tipsforlinux/articles/028.html
Den korte version er: hvis en eksekverbar fil har SGID-bit-sæt, så er enhver, der ikke er i gruppen, men kan udføre denne fil får midlertidigt rettighederne til denne gruppe, mens programmet udføres.
For eksempel, hvis du har en gruppe “spool”, der kan læse og skrive filer i udskriftsspooler-biblioteket, gør du ikke ” t vil bare have nogen til at rode med denne mappe, men du vil have dem til at være i stand til at udskrive filer, du kan lave noget udskrivningsprogram eller script med gruppe “spool” og indstille SGID-bit, og når nogen starter dette program, kan programmet nu skriv til spooler-biblioteket uden at personen kører det får fuld adgang.
Kommentarer
- Det er godt, tak for det. Jeg forstår tilladelsesdelen (abbbcccddd-delen) – men thatnk dig 🙂
- Jeg har lige set mine tilladelser til tmp-mappen er
drwxrwxrwt .... 2 sys .... sys .... 1024 Jul 24 15:17 tmp
. Hvad betyderabbbcccddt
(bogstav ‘ t ‘)? – Jeg forstår, at ” d = katalog “, ” rwx = read, skriv, udfør “; men jeg har aldrig set ‘ t ‘ i slutningen før. Er den særlige tilladelse til tmp-mappen? - Lille t er ” eksekverbar (x) og sticky bit-sæt “. Se ovenfor for en forklaring på, hvorfor dette er normalt på / tmp.
Svar
GID er, som du har fundet, gruppens ID-nummer. Det er simpelthen en overbevisende måde for OS at udtrykke den (bruger) gruppe, der er knyttet til noget (en proces, en fil osv.); i stedet for en potentielt lang strengidentifikator kan den udtrykkes som et fast størrelsesnummer.
I en filtilladelsesværdi på fire oktale cifre (for eksempel 0755) angiver det tredje ciffer gruppens tilladelser til filen. Hvis du udelader det første ciffer, er det det andet ciffer, der specificerer gruppens tilladelser. Bemærk, at filer og mapper behandles ens i denne henseende, men at den nøjagtige betydning af hver tilladelsesbit er noget ikke -intuitivt i tilfælde af kataloger.
De to begreber er relaterede, men tjener meget forskellige formål.
Hvad angår dit spørgsmål “er det endda vigtigt at indstille disse tilladelser?”; de er altid indstillet til noget , men da det oprindelige ciffer i de fleste tilfælde er 0 (“intet specielt”), er det en tendens til, at det udelades for kortfattethed. Om du har brug for at angive en anden værdi, afhænger helt af brugsmønsteret for den pågældende fil eller bibliotek.