Umask System Call in c

Umask System Call in c

Una delle tante chiamate di sistema nella lingua C c'è "Umask"Che è appositamente costruito per l'impostazione della maschera di creazione di documenti. Definisce i privilegi o i diritti assegnati a un file o directory specifico al momento della creazione. È un controllo di sicurezza da parte del linguaggio C limitare altri processi di sistema per assegnare ulteriori diritti a nuove creazioni di file.

Il sistema di sistema di "Umask"Funziona sul motivo delle cifre all'interno della shell Linux. Diamo un'occhiata a semplici esempi per dimostrare il "Umask"Chiamata di sistema. Inizia accedi da Ubuntu 20.04 Sistema. Apri il terminale shell e imposta il valore della maschera richiesto per la creazione di file e cartelle, dire "0002". Ciò indica che gli utenti e i gruppi possono leggere, scrivere ed eseguire il file creato da ora in poi. Sebbene altri non possano scrivere come "2" è per "scrivere".

Esempio:

Creiamo un nuovo file di lingua C per esplorare la chiamata del sistema Umask. Il file è stato creato con "tocco"Interrogazione nel guscio. Successivamente, l'editor GNU Nano è stato utilizzato per aprire e modificare il file appena creato "smascherare.C" con "nano"Istruzioni.

Il file "Umask.C"È stato aperto nell'editore per l'uso. Abbiamo aggiunto il codice C mostrato ad esso. Questo codice contiene la libreria POSIX nella sezione file di intestazione. Sono state incluse diverse intestazioni di flusso di input-output e intestazioni di tipo file per far funzionare correttamente il codice. Successivamente, il metodo principale è stato inizializzato. All'interno del metodo principale, abbiamo definito un descrittore di file "fd"Di tipo intero. Questo codice verrà utilizzato per controllare la vecchia o recente maschera utilizzata o assegnata al file e alle cartelle. Quindi, abbiamo usato la variabile tipo "Mode_t" "vecchio" per recuperare il valore della maschera corrente. Questo vecchio valore di maschera verrà stampato nella shell usando il "printf" dichiarazione. IL "S_irwxg"La funzione dell'argomento è stata passata al metodo"Umask"Per ottenere il valore corrente e salvato nella variabile" vecchio "per il display.

IL "Se"L'istruzione è stata utilizzata per verificare se il descrittore dei file"fd"È stato usato per creare un nuovo file"nuovo.TXT"Con il valore della maschera inferiore a 0 o no. Se la condizione soddisfa, passerà attraverso un'eccezione che la funzione crea un problema. Il sistema stamperà il valore della maschera attualmente assegnato a un nuovo file "nuovo.TXT"All'interno dell'istruzione else usando il"ls -l"Comando. Il descrittore di file è stato bloccato e il file è stato non collegato dal sistema. Il file è stato salvato usando "Ctrl+s"E smette di usare"Ctrl+X".

Compiliamo prima il codice C. Per la compilazione, è necessario avere un compilatore supportato installato nel sistema Linux. Abbiamo installato il compilatore GCC. Quindi, usa il comando GCC e il nome di un file C, E.G., "smascherare.C".

Ora il file dovrebbe essere eseguito dopo la compilation per vedere i risultati. IL "UN.fuori"Il comando è stato eseguito nel terminale. L'output visualizza la vecchia maschera creata per i file e la cartella come "2". Inoltre, mostra i privilegi assegnati al file "nuovo.txt ”usando questa maschera secondo l'output.

Cambiamo il valore della maschera in "777"Indicando" nessun diritti "per la creazione di file e cartelle da creare.

Apri lo stesso file e modifica il nome di un file come "nuovo.file"Per creare un nuovo file. Il codice rimanente viene lasciato invariato.

Al momento della compilazione dello stesso file, abbiamo ricevuto l'errore. Questo perché il nostro valore di maschera attuale è "777"Il che indica diritti di lettura, scrittura e esecuzione su qualsiasi utente, gruppo o altri.

Modifichiamo il valore della maschera per la creazione di file e directory da ora in poi 0777.

Dopo la configurazione del valore della maschera, creiamo una directory denominata "due". Dopo aver verificato i privilegi per la directory "due", Possiamo vedere che non contiene diritti.

Conclusione:

Questo articolo contiene il funzionamento del "umask ()"Chiamata di sistema usando la lingua C. Il concetto del sistema Umask () è stato spiegato in dettaglio. Abbiamo dimostrato il suo lavoro utilizzando un semplice esempio di codice per creare un file e una compilation in Ubuntu 20.04 Sistema Linux. Lo stesso può essere applicato anche a una directory.