Contenido   Archivos   Índice   Bugs   Ejemplos  

Referencia del Archivo fs.h

Definiciones, estructuras y prototipos de funciones que manejan el VFS. En particular se encuentra la estructura inode donde se realizaron los cambios. Más...

#include <linux/config.h>
#include <linux/linkage.h>
#include <linux/limits.h>
#include <linux/wait.h>
#include <linux/types.h>
#include <linux/vfs.h>
#include <linux/net.h>
#include <linux/kdev_t.h>
#include <linux/ioctl.h>
#include <linux/list.h>
#include <linux/dcache.h>
#include <linux/stat.h>
#include <linux/cache.h>
#include <linux/stddef.h>
#include <linux/string.h>
#include <asm/atomic.h>
#include <asm/bitops.h>
#include <linux/fs_acl.h>
#include <linux/sc.h>
#include <asm/semaphore.h>
#include <asm/byteorder.h>
#include <linux/pipe_fs_i.h>
#include <linux/minix_fs_i.h>
#include <linux/ext2_fs_i.h>
#include <linux/hpfs_fs_i.h>
#include <linux/ntfs_fs_i.h>
#include <linux/msdos_fs_i.h>
#include <linux/umsdos_fs_i.h>
#include <linux/iso_fs_i.h>
#include <linux/nfs_fs_i.h>
#include <linux/sysv_fs_i.h>
#include <linux/affs_fs_i.h>
#include <linux/ufs_fs_i.h>
#include <linux/efs_fs_i.h>
#include <linux/coda_fs_i.h>
#include <linux/romfs_fs_i.h>
#include <linux/shmem_fs.h>
#include <linux/smb_fs_i.h>
#include <linux/hfs_fs_i.h>
#include <linux/adfs_fs_i.h>
#include <linux/qnx4_fs_i.h>
#include <linux/reiserfs_fs_i.h>
#include <linux/bfs_fs_i.h>
#include <linux/udf_fs_i.h>
#include <linux/ncp_fs_i.h>
#include <linux/proc_fs_i.h>
#include <linux/usbdev_fs_i.h>
#include <linux/jffs2_fs_i.h>
#include <linux/cramfs_fs_sb.h>
#include <linux/quota.h>
#include <linux/mount.h>
#include <linux/fcntl.h>
#include <linux/minix_fs_sb.h>
#include <linux/ext2_fs_sb.h>
#include <linux/hpfs_fs_sb.h>
#include <linux/ntfs_fs_sb.h>
#include <linux/msdos_fs_sb.h>
#include <linux/iso_fs_sb.h>
#include <linux/nfs_fs_sb.h>
#include <linux/sysv_fs_sb.h>
#include <linux/affs_fs_sb.h>
#include <linux/ufs_fs_sb.h>
#include <linux/efs_fs_sb.h>
#include <linux/romfs_fs_sb.h>
#include <linux/smb_fs_sb.h>
#include <linux/hfs_fs_sb.h>
#include <linux/adfs_fs_sb.h>
#include <linux/qnx4_fs_sb.h>
#include <linux/reiserfs_fs_sb.h>
#include <linux/bfs_fs_sb.h>
#include <linux/udf_fs_sb.h>
#include <linux/ncp_fs_sb.h>
#include <linux/usbdev_fs_sb.h>
#include <linux/jffs2_fs_sb.h>

Funciones

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.

asmlinkage long sys_oscstat (char *filename, int *level, int *categories, int len)
 Llamada al sistema oscstat. Retorna la clase de acceso de un archivo.

asmlinkage long sys_chobjsc (char *filename, int level, int *categories, int size)
 Llamada al sistema chobjsc. Cambia la SC de un archivo.

asmlinkage long sys_open (const char *, int, int)
 Llamada al sistema open. No fue modificada pero usa (indirectamente) may_open().

asmlinkage long sys_close (unsigned int)
 Esta llamada no fue modificada. Se la incluye por completitud. Está especificada en el modelo.

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

int permission (struct inode *, int)
 Es sinónimo de vfs_permission().

int vfs_permission (struct inode *, int)
 Consulta permisos.

file * open_exec (const char *)
 No fue modificada pero usa permission().

void clear_inode (struct inode *)
 Limpia un inodo.

int inode_change_ok (struct inode *, struct iattr *)
 Función indirectamente usada por sys_fchmod(), sys_truncate() y sys_truncate64().

int inode_setattr (struct inode *, struct iattr *)
 Función indirectamente usada por sys_fchmod(), sys_truncate() y sys_truncate64().


Descripción detallada

Definiciones, estructuras y prototipos de funciones que manejan el VFS. En particular se encuentra la estructura inode donde se realizaron los cambios.


Documentación de las definiciones

#define MS_RMT_MASK
 

Valor:

(MS_RDONLY|MS_SYNCHRONOUS|MS_MANDLOCK|MS_NOATIME|\
             MS_NODIRATIME)

#define DECLARE_FSTYPE var,
type,
read,
flags   
 

Valor:

struct file_system_type var = { \
    name:       type, \
    read_super: read, \
    fs_flags:   flags, \
    owner:      THIS_MODULE, \
}

#define fops_get fops   
 

Valor:

(((fops) && (fops)->owner)  \
        ? ( try_inc_mod_count((fops)->owner) ? (fops) : NULL ) \
        : (fops))

#define fops_put fops   
 

Valor:

do {    \
    if ((fops) && (fops)->owner) \
        __MOD_DEC_USE_COUNT((fops)->owner); \
} while(0)


Documentación de las funciones

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.

asmlinkage long sys_oscstat char *    filename,
int *    level,
int *    categories,
int    size
 

Llamada al sistema oscstat. Retorna la clase de acceso de un archivo.

Precondición:
  • La clase de acceso del usuario que realiza la operacion domina a la clase de seguridad del archivo.
  • size debe ser el tamaño reservado en el buffer categories y debe ser al menos la cantidad de entradas válidas que hay en la clase de acceso de filename.
Parámetros:
filename Archivo que contiene la clase de seguridad que se utilizará para cargar los datos.
level Donde se cargará el nivel de la clase de acceso de filename.
categories Donde se cargarán las categorías de la clase de acceso de filename.
size Cantidad de categorías que pide cargar en categories.
Postcondición:
  • En el párametro level está el nivel de la clase de seguridad de filename.
  • En el párametro categories están las categorías de la clase de seguridad de filename.
Devuelve:
  • Un número distinto de cero si filename no es un nombre válido.
  • -EACCES Si no se cumple la precondición.
  • n Donde n es la cantidad de entradas válidas que hay en la clase de acceso de filename, si len es 0.
  • -EINVAL Si size es menor que la cantidad de entradas válidas que hay en la clase de acceso de filename.
  • m Si la operación se realizó con éxito. m es la cantidad de entradas válidas que se cargaron en categories.

asmlinkage long sys_chobjsc char *    filename,
int    level,
int *    categories,
int    size
 

Llamada al sistema chobjsc. Cambia la SC de un archivo.

Cambia la SC de un archivo, con los datos que recibe como parámetro.

Precondición:
El usuario que realiza la operacin debe ser un administrador MAC. El archivo no debe estar abierto en el sistema.
Parámetros:
filename Archivo al cual se le cambia la SC.
level Nivel que se cargará en la SC del archivo filename.
categories Conjunto de categorías que se cargarán en la SC del archivo filename.
size Cantidad de categorías que cargarán en la SC del archivo filename.
Devuelve:
  • Un número distinto de cero si filename no es un nombre válido.
  • -EROFS Si el archivo filename es read-only
  • -EPERM Si el archivo filename es inmutable o append.????
  • -EACCES Si el usuario que realiza la operación no es un administrador MAC.
  • -EBUSY Si el archivo filename está abierto en el sistema.
  • 0 Si la operación se realizó con éxito.

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 vfs_permission struct inode *    inode,
int    mask
 

Consulta permisos.

Determina si los permisos que se encuentran en una máscara que se pasa como párametro se encuentran en la ACL de un inodo.

Parámetros:
inode Puntero al inodo al cual se le quieren consultar los permisos.
mask Permisos que se van a comparar con los permisos resultantes de la ACL de inode. Estos pueden ser:
y combinaciones. Se ha cambiado la utilización de permissions() para que se usen los nuevos parámetros.

Devuelve:
  • -EROFS Si mask contiene permiso de escritura e inode está en un sistema de archivos de sólo lectura, y el modo UNIX de inode indica que: o es un registro, o un directorio o un link.
  • -EACCES Si mask contiene permiso de escritura e inode es inmutable.
  • 0 Si todos los permisos que contiene mask se encuentran en la ACL de inode. En caso de que inode sea un inodo de un directorio no se tienen en cuenta los permisos de ejecutabilidad.

void clear_inode struct inode *    inode
 

Limpia un inodo.

Es llamada por el sistema de archivos para indicar que el inodo ya no es útil.

Parámetros:
inode inodo a limpiar


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