Ummask -Systemaufruf in c

Ummask -Systemaufruf in c

Einer der vielen Systemaufrufe in der C -Sprache, die dort ist “Ummask”Das ist speziell für die Einrichtung der Dokumentenerstellungsmaske aufgebaut. Es definiert die Berechtigungen oder Rechte, die zum Zeitpunkt der Erstellung einer bestimmten Datei oder einem bestimmten Verzeichnis zugewiesen wurden. Es handelt sich um eine Sicherheitskontrolle der C -Sprache, um andere Systemprozesse einzuschränken, um neue Rechte an neue Dateikreationen zuzuweisen.

Der Systemanruf von “UmmaskFunktioniert auf dem Ziffernmuster in der Linux -Shell. Schauen wir uns einfache Beispiele an, um das zu demonstrieren "Ummask”Systemanruf. Melden Sie sich mit dem Ubuntu 20 an.04 System. Öffnen Sie das Shell -Terminal und setzen Sie den erforderlichen Maskenwert für das Erstellen von Dateien und Ordnern fest. "0002". Dies zeigt an, dass Benutzer und Gruppen die von nun an erstellte Datei lesen, schreiben und ausführen können. Obwohl andere nicht als "schreiben können" können2" ist für "schreiben”.

Beispiel:

Lassen Sie uns eine neue C -Sprachdatei erstellen, um den in Ummask -System aufgerufenen Aufruf zu untersuchen. Die Datei wurde mit der "erstellt"berührenAbfrage in der Schale. Danach wurde der Gnu Nano -Editor verwendet, um die neu erstellte Datei zu öffnen und zu bearbeitenentlarven.C" mit "Nano" Anweisung.

Die Datei "Ummask.CWurde im Herausgeber zur Verwendung geöffnet. Wir haben den angezeigten C -Code hinzugefügt. Dieser Code enthält die POSIX -Bibliothek im Abschnitt Header -Datei. Es wurden verschiedene Stream-Header und Dateityp-Header aufgenommen, um den Code richtig zu gestalten. Danach wurde die Hauptmethode initialisiert. In der Hauptmethode haben wir einen Dateideskriptor definiert “fdGanzzahl vom Typ. Dieser Code wird verwendet, um die alte oder die aktuelle Maske zu überprüfen, die der Datei und Ordner verwendet oder zugewiesen ist. Wir haben also die Variable "modus_t" verwendet "alt", um den aktuellen Maskenwert zu holen. Dieser alte Maskenwert wird in der Schale mit dem "ausgedruckt"printf" Stellungnahme. Der "S_irwxg"Argumentfunktion wurde an die Methode übergeben"Ummask”Um den aktuellen Wert zu erhalten und ihn in die Variable„ alt “für die Anzeige zu speichern.

Der "Wenn"Anweisung wurde verwendet, um zu überprüfen, ob der Dateideskriptor"fd"Wurde verwendet, um eine neue Datei zu erstellen"neu.txt”Mit dem Maskenwert von weniger als 0 oder nicht. Wenn sich die Bedingung erfüllt, wird eine Ausnahme durchliegen, dass die Erstellungsfunktion ein Problem hat. Das System druckt den derzeit einer neuen Datei zugewiesenen Maskenwert “aus“neu.txt”Innerhalb der elendlichen Anweisung mit der“ls -l" Befehl. Der Dateideskriptor wurde gesperrt und die Datei wurde dann aus dem System entnommen. Die Datei wurde mit "mit" gespeichert "gespeichertStrg+s"Und gibt mit" mit "mit" beendet "Strg+x”.

Lassen Sie uns zuerst den C -Code kompilieren. Für die Zusammenstellung müssen Sie einen unterstützten Compiler in Ihrem Linux -System installieren lassen. Wir haben den GCC -Compiler installiert. Verwenden Sie also den Befehl gcc und den Namen einer C -Datei, e.G., “entlarven.C”.

Jetzt sollte die Datei nach der Zusammenstellung ausgeführt werden, um die Ergebnisse zu sehen. Der "A.ausDer Befehl ”wurde zu diesem Zweck im Terminal ausgeführt. Die Ausgabe zeigt die alte Maske an, die für die Dateien und den Ordner erstellt wurde, als „2”. Außerdem werden die Berechtigungen angezeigt, die der Datei zugeordnet sind. „Neu.txt ”Verwenden dieser Maske gemäß der Ausgabe.

Lassen Sie uns den Maskenwert auf "ändern"777"Angeben Sie" keine Rechte "für die Erstellung von Dateien und Ordnern.

Öffnen Sie dieselbe Datei und bearbeiten Sie den Namen einer Datei als "neu.Datei”Um eine neue Datei zu erstellen. Der verbleibende Code bleibt unverändert.

Nach der Zusammenstellung derselben Datei haben wir den Fehler erhalten. Dies liegt daran, dass unser aktueller Maskenwert lautet “777”Das zeigt keine Rechte von Lesen, Schreiben und Ausführungen an Benutzer, Gruppen oder andere an.

Ändern wir den Maskenwert für die Erstellung von Dateien und Verzeichnissen von nun an auf die Erstellung von Dateien und Verzeichnissen 0777.

Lassen Sie uns nach dem Mask -Wert ein Verzeichnis namens erstellen. “zwei”. Bei Überprüfung der Privilegien für das Verzeichnis “zweiWir können sehen, dass es keine Rechte enthält.

Abschluss:

Dieser Artikel enthält die Arbeit der “Ummask ()”Systemanruf mit C -Sprache. Das Konzept des Ummask () -Systems wurde ausführlich erklärt. Wir haben seine Arbeit mit einem einfachen Code -Beispiel demonstriert, um eine Datei zu erstellen und im Ubuntu 20 zu kompilieren.04 Linux -System. Gleiches kann auch auf ein Verzeichnis angewendet werden.