Llamada del sistema ultimas en c

Llamada del sistema ultimas en c

Una de las muchas llamadas al sistema en el idioma C está "Umask"Que está especialmente construido para la configuración de la máscara de creación de documentos. Define los privilegios o derechos asignados a un archivo o directorio específico al momento de la creación. Es un control de seguridad por lenguaje C restringir otros procesos del sistema para asignar derechos adicionales a las nuevas creaciones de archivos.

La llamada del sistema de "Umask"Funciona en el patrón de dígitos dentro de la carcasa de Linux. Echemos un vistazo a ejemplos simples para demostrar el "Umask"Llamada del sistema. Comience por iniciar sesión desde el Ubuntu 20.04 sistema. Abra el terminal de shell y establezca el valor de máscara requerido para crear archivos y carpetas, digamos "0002". Esto indica que los usuarios y grupos pueden leer, escribir y ejecutar el archivo creado a partir de ahora en adelante. Aunque otros no pueden escribir como "2" es para "escribir".

Ejemplo:

Creemos un nuevo archivo de lenguaje C para explorar la llamada del sistema Umask en él. El archivo ha sido creado con el "tocar"Consulta en el caparazón. Después de eso, el editor GNU Nano se utilizó para abrir y editar el archivo recién creado "desenmascarar.C" con "nano" instrucción.

El archivo "Umask.C"Se ha abierto en el editor para su uso. Hemos agregado el código C mostrado. Este código contiene la biblioteca POSIX en la sección del archivo de encabezado. Se han incluido diferentes encabezados de transmisión de entrada-salida y encabezados de tipo de archivo para que el código funcione correctamente. Después de eso, el método principal se inicializó. Dentro del método principal, hemos definido un descriptor de archivo "fd"De tipo entero. Este código se usará para verificar la máscara antigua o reciente utilizada o asignada al archivo y las carpetas. Por lo tanto, hemos utilizado la variable de tipo "mode_t" "antigua" para obtener el valor de máscara actual. Este antiguo valor de máscara se imprimirá en el shell utilizando el "printf" declaración. El "S_irwxg"La función de argumento se ha pasado al método"Umask"Para obtener el valor actual y lo guardó en la variable" antigua "para la pantalla.

El "si"La instrucción se ha utilizado para verificar si el descriptor del archivo"fd"Se ha utilizado para crear un nuevo archivo"nuevo.TXT"Con el valor de la máscara de menos de 0 o no. Si la condición satisface, pasará por una excepción que la función de creación tenga un problema. El sistema imprimirá el valor de máscara actualmente asignado a un nuevo archivo "nuevo.TXT"Dentro de la instrucción delse utilizando el"LS -L" dominio. El descriptor del archivo se ha bloqueado y el archivo ha sido desintegrado del sistema entonces. El archivo se ha guardado usando "Ctrl+S"Y renuncia usando"CTRL+X".

Vamos a compilar primero el código C. Para la compilación, debe tener un compilador compatible instalado en su sistema Linux. Hemos instalado el compilador GCC. Entonces, use el comando GCC y el nombre de un archivo C, E.gramo., "desenmascarar.C".

Ahora el archivo debe ejecutarse después de la compilación para ver los resultados. El "a.afuera"El comando se ha ejecutado en el terminal para este propósito. La salida muestra la máscara antigua creada para los archivos y la carpeta como "2". Además, muestra los privilegios asignados al archivo "nuevo.txt ”usando esta máscara según la salida.

Cambiemos el valor de la máscara a "777"Indicando" sin derechos "a los archivos y las carpetas que se crean.

Abra el mismo archivo y edite el nombre de un archivo como "nuevo.archivo"Para crear un nuevo archivo. El código restante se deja sin cambios.

Tras la compilación del mismo archivo una vez más, tenemos el error. Esto se debe a que nuestro valor de máscara actual es "777"Lo que indica ningún derecho de lectura, escritura y ejecución a cualquier usuario, grupo u otros.

Cambiemos el valor de máscara para la creación de archivos y directorios de ahora en adelante a 0777.

Después de la configuración del valor de máscara, creemos un directorio llamado "dos". Al verificar los privilegios para el directorio "dos", Podemos ver que no contiene derechos.

Conclusión:

Este artículo contiene el funcionamiento del "Umask ()"Llamada del sistema con lenguaje C. El concepto del sistema Umask () se ha explicado en detalle. Hemos demostrado su trabajo utilizando un ejemplo de código simple para crear un archivo y compilación en el Ubuntu 20.04 Sistema Linux. Lo mismo se puede aplicar a un directorio también.