Hva betyr GID egentlig?

Jeg har googlet det og dette er det linux.about.com sa:

Gruppeidentifikasjonsnummer for prosessen. Gyldige gruppenumre er gitt i /etc/group, og i GID-feltet i /etc/passwd -filen. Når en prosess startes, blir GID-en satt til GID-en for den overordnede prosessen.

  • Men hva betyr det?

Tillatelsene jeg har for mappen min er for øyeblikket 0755

Jeg forstår at hvis jeg setter UID for eieren, vil det være 4755

Og hvis jeg angir GID for gruppen, blir det 2755

Hvis Jeg setter Sticky Bit for Other, det blir 1755

  • Er det enda viktig å sette disse tillatelsene?

Svar

Hver prosess i et UNIX-lignende system, akkurat som alle filer, har en eier (brukeren, enten ekte eller et system «pseudo -bruker «, for eksempel daemon, bin, man osv.) og en gruppe Eieren. Gruppeeieren for en brukers filer er vanligvis den brukerens primære gruppe, og på lignende måte eies alle prosesser du starter vanligvis av bruker-ID-en din og av din primære gruppe-ID.

Noen ganger Det er imidlertid nødvendig å ha forhøyede privilegier for å kjøre visse kommandoer, men det er ikke ønskelig å gi full administrative rettigheter. For eksempel trenger passwd -kommandoen tilgang til systemets skyggepassordfil, slik at den kan oppdatere passordet ditt. Åpenbart vil du ikke gi hver bruker rotrettigheter, bare slik at de kan tilbakestille passordet sitt – det vil utvilsomt føre til kaos! I stedet må det være en annen måte å midlertidig gi forhøyede privilegier til brukere for å utføre bestemte oppgaver. Det er hva SETUID- og SETGID-bitene er for. Det er en måte å fortelle kjernen å midlertidig øke brukerens rettigheter, så lenge den merkede kommandoen kjøres. En SETUID-binær vil bli utført med privilegiene til eieren av den kjørbare filen (vanligvis root), og en SETGID-binær vil bli utført med gruppeprivilegiene til gruppeeieren av den kjørbare fil. Når det gjelder kommandoen passwd, som tilhører root og er SETUID, tillater det normale brukere å direkte påvirke innholdet i passordet fil, på en kontrollert og forutsigbar måte, ved å utføre med root-privilegier. Det er mange andre SETUID kommandoer på UNIX-lignende systemer (chsh, screen, ping, su, etc), som alle krever forhøyede rettigheter for å fungere riktig. Det er også noen få SETGID programmer, der kjernen midlertidig endrer GID for prosessen, for å gi tilgang til loggfiler osv. sendmail er et slikt verktøy.

sticky bit tjener et litt annet formål. Den vanligste bruken er å sikre at bare brukerkontoen som opprettet en fil kan slette den. Tenk på katalogen /tmp. Den har veldig liberale tillatelser, som gjør at alle kan lage filer der. Dette er bra, og lar brukerne «prosesser lage midlertidige filer (screen, ssh osv., Hold tilstandsinformasjon i /tmp). For å beskytte brukerens midlertidige filer, har /tmp det klebrig bit-settet, slik at bare jeg kan slette filene mine, og bare du kan slett din. Selvfølgelig kan root gjøre hva som helst, men vi må håpe at sysadmin ikke er forstyrret!

For normale filer (det vil si for filer som ikke kan kjøres), er det lite poeng å sette inn SETUID / SETGID-biter. SETGID på kataloger på noen systemer styrer standard gruppeeier for nye filer som er opprettet i den katalogen.

Kommentarer

  • Ah fantastisk, takk for det. Så derfor er Sticky Bit som en personlig (bruker) tillatelse? Svaret var godt formulert og forståelig.
  • Takk! Den klebrige biten gir litt beskyttelse for filer i en katalog med liberale tillatelser. Det ‘ er egentlig ikke spesifikt for en gitt bruker, ettersom alle filene har samme beskyttelsesnivå, uansett hvem eieren er. Det ‘ en måte å tillate hvem som helst å lage filer, og for å sikre at bare eieren kan ødelegge dem.
  • +1, D_bye, kan du dele et eksempel for setgid bit sett i katalogen.Takk
  • @Ankit Under Solaris (og nesten helt sikkert andre – jeg bruker bare * BSD og Solaris, skjønt), hvis setgid-biten er satt i en katalog, vil alle nye filer som er opprettet under den katalogen ha det samme gruppeeier som selve katalogen, og vil ikke arve den primære gruppen til (brukeren som kjører) opprettelsesprosessen.

Svar

Jeg tror du mener» SGID «-biten i en fil, som ikke er den samme som GID.

Her er det en typisk fil på datamaskinen min (utdata fra ls -l):

-rw-r----- 1 bristol users 16 2012-07-23 11:36 file.txt abbbcccddd <-- See explanation below. 

Hvis du ser på de ti første symbolene,

(a) -: Dette er bare en ren gammel fil (i motsetning til til en katalog, symlink, rør etc. …)

(b) rw-: Eieren kan lese og skrive denne filen, men ikke utføre den. Eieren er «bristol» som du kan se senere på linjen.

(c) r–: Medlemmer av gruppen denne filen tilhører («brukere» i eksemplet) andre enn eieren kan lese, men ikke skrive eller utføre denne filen.

(d) —: A ingen andre kan ikke få tilgang til denne filen i det hele tatt (unntatt roten selvfølgelig).

GID-feltet er det som forteller deg hvilken gruppe denne filen tilhører – i dette tilfellet «brukere».

Feltet du sannsynligvis mente, basert på beskrivelsen din, er SGID-biten, og her er en bedre forklaring enn jeg kunne komme med:

http://www.codecoffee.com/tipsforlinux/articles/028.html

Den korte versjonen er: Hvis en kjørbar fil har SGID-bit satt, så er alle som ikke er i gruppen, men kan kjøre denne filen får midlertidig rettighetene til denne gruppen mens programmet kjøres.

Hvis du for eksempel har en gruppe «spool» som kan lese og skrive filer i utskriftskøen katalogen, gjør du ikke » t vil at hvem som helst skal rote med denne katalogen, men du vil at de skal kunne skrive ut filer, kan du lage noe utskriftsprogram eller skript som har gruppen «spool» og angi SGID-biten, og når noen starter dette programmet, kan programmet nå skriv til spooler-katalogen uten at personen løper det får full tilgang.

Kommentarer

  • Det er bra, takk for det. Jeg forstår tillatelsesdelen, (abbbcccddd-delen) – men det er ikke du 🙂
  • Jeg har nettopp sett tillatelsene mine i tmp-mappen er drwxrwxrwt .... 2 sys .... sys .... 1024 Jul 24 15:17 tmp. Hva betyr abbbcccddt (bokstav ‘ t ‘)? – Jeg forstår at » d = katalog «, » rwx = read, skriv, kjør «; men jeg har aldri sett ‘ t ‘ på slutten før. Er det spesiell tillatelse for tmp-mappen?
  • Small t er » kjørbar (x) og klebrig bit sett «. Se ovenfor for en forklaring på hvorfor dette er vanlig på / tmp.

Svar

GID er, som du har funnet, ID-nummeret til en gruppe. Det er rett og slett en behagelig måte for operativsystemet å uttrykke (bruker) -gruppen som er knyttet til noe (en prosess, en fil osv.); i stedet for en potensielt lang strengidentifikator, kan den uttrykkes som et fast størrelsesnummer.

I en filtillatelsesverdi på fire oktale sifre (for eksempel 0755), angir det tredje sifferet gruppens tillatelser til filen. Hvis du utelater det første sifferet, er det det andre sifferet som spesifiserer gruppens tillatelser. Merk at filer og kataloger behandles likt i denne forbindelse, men at den nøyaktige betydningen av hver tillatelsesbit er noe ikke -intuitivt når det gjelder kataloger.

De to begrepene er relatert, men tjener veldig forskjellige formål.

Når det gjelder spørsmålet ditt «er det til og med viktig å sette disse tillatelsene?»; de er alltid satt til noe , men siden det første sifferet i de fleste tilfeller er 0 («ingenting spesielt»), har det en tendens til å bli utelatt for kortfattethet. Om du trenger å spesifisere noen annen verdi, avhenger helt av bruksmønsteret for den aktuelle filen eller katalogen.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *