Umask System Ring In C

Umask System Ring In C

En av de mange systemanropene på C -språket der er "Umask”Som er spesielt bygd opp for oppsett av dokumentopprettelsesmaske. Den definerer privilegiene eller rettighetene som er tilordnet en spesifikk fil eller katalog på opprettelsestidspunktet. Det er en sikkerhetskontroll av C -språk å begrense andre systemprosesser for å tildele ekstra rettigheter til nye filkreasjoner.

Systemanropet til “Umask”Fungerer på siffermønsteret i Linux -skallet. La oss se på enkle eksempler for å demonstrere “Umask”Systemanrop. Start med å logge inn fra Ubuntu 20.04 System. Åpne skallterminalen og sett den nødvendige maskeverdien for å lage filer og mapper, si “0002”. Dette indikerer at brukere og grupper kan lese, skrive og utføre filen som er opprettet fra nå av. Selv om andre ikke kan skrive som “2" er for "skrive”.

Eksempel:

La oss opprette en ny C -språkfil for å utforske UMask -systemets samtale inn. Filen er opprettet med "ta på”Spørring i skallet. Etter det ble GNU Nano -redaktøren brukt til å åpne og redigere den nyopprettede filen "Unmask.c”Med“Nano" instruksjon.

Filen "Umask.c”Har blitt åpnet i redaktøren for bruk. Vi har lagt til den viste C -koden til den. Denne koden inneholder POSIX -biblioteket i seksjonen. Ulike input-output streamoverskrifter og filtypeoverskrifter er inkludert for å få koden til å fungere ordentlig. Etter det ble hovedmetoden initialisert. Innenfor hovedmetoden har vi definert en filbeskrivelse “fd”Av type heltall. Denne koden vil bli brukt til å sjekke den gamle eller nylige masken som brukes eller tilordnes filen og mappene. Så vi har brukt "Mode_t" -typen "gammel" for å hente gjeldende maskeverdi. Denne gamle maskeverdien vil bli skrevet ut i skallet ved å bruke “printf”Uttalelse. “S_IRWXG”Argumentfunksjon er gitt til metoden”Umask”For å få gjeldende verdi og lagret den i variabelen“ gamle ”for visning.

hvis”Uttalelse har blitt brukt for å sjekke om filbeskrivelsen”fd”Har blitt brukt til å opprette en ny fil”ny.tekst”Med maskeverdien mindre enn 0 eller ikke. Hvis tilstanden tilfredsstiller, vil den gå gjennom et unntak at CREATE -funksjonen fikk et problem. Systemet vil skrive ut maskeverdien som for øyeblikket er tilordnet en ny fil "ny.tekst”Innenfor andre uttalelser ved å bruke“ls -l”Kommando. Filbeskrivelsen er låst, og filen har blitt koblet fra systemet da. Filen er lagret ved hjelp av "Ctrl+s”Og slutter å bruke“Ctrl+x”.

La oss først sammenstille C -koden. For kompilering må du ha en støttet kompilator installert i Linux -systemet ditt. Vi har installert GCC -kompilatoren. Så bruk GCC -kommandoen og navnet på en C -fil, e.g., “Unmask.c”.

Nå skal filen utføres etter sammenstilling for å se resultatene. “en.ute”Kommando er utført i terminalen for dette formålet. Utgangen viser den gamle masken som er opprettet for filene og mappen som "2”. Det viser også privilegiene som er tilordnet filen “Ny.txt ”ved hjelp av denne masken i henhold til utgangen.

La oss endre maskeverdien til “777”Som indikerer“ ingen rettigheter ”til fil og mapper som skal opprettes.

Åpne den samme filen og rediger navnet på en fil som "ny.fil”For å opprette en ny fil. Den gjenværende koden blir uendret.

Etter samlingen av den samme filen igjen, har vi feil. Dette er fordi vår nåværende maskeverdi er "777”Som indikerer ingen lese, skrive og utførelsesrettigheter til enhver bruker, gruppe eller andre.

La oss endre maskeverdien for oppretting av filer og kataloger fra nå av til 0777.

Etter oppsett av maskeverdi, la oss opprette en katalog som heter “to”. Når du sjekker privilegiene for katalog “to”, Kan vi se at det ikke inneholder noen rettigheter.

Konklusjon:

Denne artikkelen inneholder arbeidet med "Umask ()”Systemanrop ved hjelp av C -språk. Konseptet med Umask () -systemet er blitt forklart i detalj. Vi har demonstrert arbeidet sitt ved å bruke et enkelt kodeeksempel for å lage en fil og sammenstilling i Ubuntu 20.04 Linux -system. Det samme kan også brukes på en katalog.