Contenido   Archivos   Índice   Bugs   Ejemplos  

Nuevas funciones auxiliares
[Todas las funciones auxiliares del núcleo involucradas en Lisex 0.0]


Funciones

int may_open (struct inode *inode, int perms)
 Determina si un archivo puede ser abierto por un sujeto o no. Usa permission() y mac_permission().

int acl_chmod_ok (struct inode *inode, int mode)
 Calcula si se puede o no realizar sys_chmod() sobre un inodo.

int is_open (struct inode *inode)
 Determina si un archivo está o no abierto en el sistema.

int mac_permission (struct inode *inode, int mode)
 Determina si se tiene permiso para acceder a inode según la clase de acceso. Implementa seguridad MAC y MLS.

int cp_aclstat (struct inode *inode, struct acl_entry *acl_statbuf, int len)
 Carga en una estructura los datos de la ACL de un inodo.

int logged (uid_t uid)
 Determina si un sujeto está corriendo algún proceso en el sistema.


Documentación de las funciones

int may_open struct inode *    inode,
int    perms
 

Determina si un archivo puede ser abierto por un sujeto o no. Usa permission() y mac_permission().

Parámetros:
inode Puntero al inodo del archivo que se quiere abrir.
perms Entero que guarda el modo en que se quiere abrir el archivo (lectura y/o escritura).
Devuelve:
  • 0 Si el usuario que realiza la operación puede abrir el archivo.
  • ERROR Si el usuario que realiza la operación NO puede abrir el archivo.

int acl_chmod_ok struct inode *    inode,
int    mode
 

Calcula si se puede o no realizar sys_chmod() sobre un inodo.

sys_chmod() podrá ejecutarse sobre un inodo si la ACL de este soporta los cambios en los modos del usuario dueño, grupo primario y el grupo ALLGRP.

Parámetros:
inode inodo sobre el cual se quiere ejecutar sys_chmod().
mode Nuevo modo que se intenta establecer para el usuario dueño, grupo primario y grupo ALLGRP.
Devuelve:
  • 1 Si es posible realizar la operación sys_chmod() con el modo mode sobre el inodo inode.
  • 0 Si no es posible realizar sys_chmod() con el modo mode sobre inode.

int is_open struct inode *    inode
 

Determina si un archivo está o no abierto en el sistema.

Parámetros:
inode Puntero a un inodo del VFS, se recorrerán todos los archivos abiertos del sistema para determinar si inodo es o no alguno de ellos.
Devuelve:
  • 0 Si inode no es el inodo de alguno de los archivos abiertos del sistema.
  • 1 Si inode es el inodo de un archivo abierto del sistema.

int mac_permission struct inode *    inode,
int    mode
 

Determina si se tiene permiso para acceder a inode según la clase de acceso. Implementa seguridad MAC y MLS.

Bug:
Hay que bloquear subjectsc

Mal programada, mal indentada, mal concevida. MAL!

Parámetros:
inode Objeto al cual se quiere acceder
mode Los permisos que se requieren
Devuelve:
  • 0 Si el usuario que realiza la operación verifica seguridad simple y el proceso verifica confinamiento para el mode solicitado y sobre el inodo inode.
  • 1 En caso contrario.

int cp_aclstat struct inode *    inode,
struct acl_entry   acl_statbuf,
int    len
[static]
 

Carga en una estructura los datos de la ACL de un inodo.

Carga en una estructura los datos de la ACL de un inodo que se pasa como parámetro.

Esta función es utilizada por las llamadas sys_aclstat() y sys_aclfstat().

Parámetros:
inode Inodo del cual se quiere obtener la ACL.
acl_statbuf Estructura donde se cargan los resultados
len Cantidad de entradas de la ACL que se piden obtener como resultado.
Devuelve:
  • -ENVAL Si len es < 0 o si len es menor que la cantidad de entradas válidas que se encuentran en la ACL de inode.
  • n Donde n es la cantidad de entradas válidas que hay en la ACL del inodo inode, si len es 0.
  • -EFAULF Si no se pudo realizar la carga de la ACL en statbuf.
  • m Si la operación se realizó con éxito. m es la cantidad de entradas validas que se cargaron en statbuf.
Ejemplos:
iterador_acl_entry.c.

int logged uid_t    uid
 

Determina si un sujeto está corriendo algún proceso en el sistema.

Determina si un usario está logueado (corriendo algún proceso) o no en el sistema.

Parámetros:
uid Usuario sobre el cual se realiza la operación.
Devuelve:
  • 0 Si el usuario con identificación uid no está corriendo ningún proceso en el sistema.
  • 1 Si el usuario está corriendo al menos un proceso en el sistema.


Generado el Fri Jan 10 09:11:43 2003 para Lisex por doxygen1.3-rc2