Appel du système umask en c

Appel du système umask en c

L'un des nombreux appels système dans la langue C est «umask"Qui est spécialement construit pour la configuration du masque de création de documents. Il définit les privilèges ou les droits attribués à un fichier ou un répertoire spécifique au moment de la création. Il s'agit d'un contrôle de sécurité par la langue C pour restreindre d'autres processus système pour attribuer des droits supplémentaires aux nouveaux fichiers.

L'appel du système de «umask»Fonctionne sur le motif de chiffre dans la coque Linux. Jetons un coup d'œil à des exemples simples pour démontrer le «umask”Appel système. Commencez par vous connecter à partir de l'Ubuntu 20.04 Système. Ouvrez le terminal de la coquille et définissez la valeur du masque requise pour créer des fichiers et des dossiers, disons «0002». Cela indique que les utilisateurs et les groupes peuvent lire, écrire et exécuter le fichier créé à partir de maintenant. Bien que d'autres ne puissent pas écrire comme «2" est pour "écrire".

Exemple:

Créons un nouveau fichier de langue C pour explorer l'appel du système umask. Le fichier a été créé avec le «touche»Requête dans la coquille. Après cela, l'éditeur GNU Nano a été utilisé pour ouvrir et modifier le fichier nouvellement créé "démasquer.c" avec "nano" instruction.

Le fichier "umask.c"A été ouvert dans l'éditeur pour une utilisation. Nous avons ajouté le code C affiché. Ce code contient la bibliothèque POSIX dans la section Fichier d'en-tête. Différents en-têtes de flux d'entrée et en en-têtes de type de fichier ont été inclus pour que le code fonctionne correctement. Après cela, la méthode principale a été initialisée. Dans la méthode principale, nous avons défini un descripteur de fichiers "FD”De type entier. Ce code sera utilisé pour vérifier le masque ancien ou récent utilisé ou affecté au fichier et aux dossiers. Donc, nous avons utilisé la variable «Mode_T» «Old» pour récupérer la valeur actuelle du masque. Cette ancienne valeur de masque sera imprimée dans le shell en utilisant le «printf" déclaration. Le "S_irwxg"La fonction d'argument a été transmise à la méthode"umask«Pour obtenir la valeur actuelle et l'enregistrer dans la variable« Old »pour l'affichage.

Le "si"L'instruction a été utilisée pour vérifier si le descripteur de fichier"FD"A été utilisé pour créer un nouveau fichier"nouveau.SMS”Avec la valeur du masque inférieure à 0 ou non. Si la condition satisfait, elle passera par une exception que la fonction de création a obtenu un problème. Le système imprimera la valeur de masque actuellement attribuée à un nouveau fichier "nouveau.SMS"Dans l'instruction ELSE en utilisant le"ls -l" commande. Le descripteur de fichier a été verrouillé, et le fichier a ensuite été lié au système. Le fichier a été enregistré en utilisant "Ctrl + s"Et quitte en utilisant"Ctrl + x".

Compilons d'abord le code C. Pour la compilation, vous devez avoir un compilateur pris en charge installé dans votre système Linux. Nous avons installé le compilateur GCC. Alors, utilisez la commande gcc et le nom d'un fichier C, e.g., "démasquer.c".

Maintenant, le fichier doit être exécuté après compilation pour voir les résultats. Le "un.dehors»La commande a été exécutée dans le terminal à cet effet. La sortie affiche l'ancien masque créé pour les fichiers et le dossier comme «2". Il affiche également les privilèges attribués au fichier «Nouveau.txt ”en utilisant ce masque selon la sortie.

Changeons la valeur du masque en «777«Indiquant« aucun droit »à la création et aux dossiers à créer.

Ouvrez le même fichier et modifiez le nom d'un fichier comme «nouveau.déposer"Pour créer un nouveau fichier. Le code restant est resté inchangé.

Lors de la compilation du même fichier une fois de plus, nous avons eu l'erreur. C'est parce que notre valeur de masque actuelle est «777"Ce qui n'indique pas de lecture, d'écriture et de droits d'exécution à tout utilisateur, groupe ou autres.

Modifions la valeur du masque pour la création de fichiers et de répertoires à partir de maintenant 0777.

Après la configuration de la valeur du masque, créons un répertoire nommé «deux". En vérifiant les privilèges du répertoire «deux», Nous pouvons voir qu'il ne contient aucun droit.

Conclusion:

Cet article contient le fonctionnement du «umask ()”Appel système utilisant la langue C. Le concept du système umask () a été expliqué en détail. Nous avons démontré son travail en utilisant un exemple de code simple pour créer un fichier et une compilation dans l'Ubuntu 20.04 Système Linux. La même chose peut également être appliquée à un répertoire.