Contenido   Archivos   Índice   Bugs   Ejemplos  

Llamadas al sistema existentes que se modificaron
[Todas las llamadas al sistema involucradas en Lisex 0.0]


Funciones

asmlinkage long sys_uselib (const char *library)
 Llamada al sistema uselib. No fue modificada pero usa may_open() y permission().

int do_execve (char *filename, char **argv, char **envp, struct pt_regs *regs)
 Llamada al sistema execve. No fue modificada pero usa, prepare_binprm() y open_exec() la que a su vez usa permission().

asmlinkage long sys_mknod (const char *filename, int mode, dev_t dev)
 Llamada al sistema mknod. No fue modificada pero usa vfs_mknod() la cual usa may_create().

asmlinkage long sys_mkdir (const char *pathname, int mode)
 Llamada al sistema mkdir. No fue modificada pero usa vfs_mkdir() la cual usa may_create().

asmlinkage long sys_rmdir (const char *pathname)
 Llamada al sistema rmdir. No fue modificada pero usa funciones que usan may_delete()).

asmlinkage long sys_unlink (const char *pathname)
 Llamada al sistema unlink. No fue modificada pero usa funciones que usan may_delete().

asmlinkage long sys_symlink (const char *oldname, const char *newname)
 Llamada al sistema symlink. No fue modificada pero usa funciones que usan may_create().

asmlinkage long sys_link (const char *oldname, const char *newname)
 Llamada al systema link. No fue modificada pero usa vfs_link() que a su vez usa may_create().

asmlinkage long sys_rename (const char *oldname, const char *newname)
 Llamada al sistema rename. No fue modificada pero usa otras funciones que usan may_create() y may_delete().

asmlinkage long sys_truncate (const char *path, unsigned long length)
 Llamada al sistema truncate. No fue modificada pero usa permission().

asmlinkage long sys_truncate64 (const char *path, loff_t length)
 Llamada al sistema truncate64. No fue modificada pero usa permission().

asmlinkage long sys_access (const char *filename, int mode)
 Llamada al sistema access. Esta función no fue modificada, sin embargo usa permission().

asmlinkage long sys_chdir (const char *filename)
 Llamada al sistema chdir.

asmlinkage long sys_fchdir (unsigned int fd)
 Llamada al systema fchdir. No fue modificada pero usa permission().

asmlinkage long sys_chroot (const char *filename)
 Llamada al sistema chroot. No fue modificada pero usa permission().

asmlinkage long sys_fchmod (unsigned int fd, mode_t mode)
 Llamada al sistema fchmod.

asmlinkage long sys_chmod (const char *filename, mode_t mode)
 Llamada al sistema chmod.

asmlinkage long sys_chown (const char *filename, uid_t user, gid_t group)
 Llamada al sistema chown.

asmlinkage long sys_lchown (const char *filename, uid_t user, gid_t group)
 Llamada al sistema lchown.

asmlinkage long sys_fchown (unsigned int fd, uid_t user, gid_t group)
 Llamada al sistema fchown.

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

asmlinkage long sys_creat (const char *pathname, int mode)
 Llamada al sistema creat. No fue modificada pero usa sys_open().

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

asmlinkage long sys_stat (char *filename, struct __old_kernel_stat *statbuf)
 Llamada al sistema stat.

asmlinkage long sys_newstat (char *filename, struct stat *statbuf)
 Llamada al sistema newstat. Ídem sys_stat() con la diferencia que esta llamada utiliza la función cp_new_stat().

asmlinkage long sys_lstat (char *filename, struct __old_kernel_stat *statbuf)
 Llamada al sistema lstat.

asmlinkage long sys_newlstat (char *filename, struct stat *statbuf)
 Llamada al sistema newlstat. Ídem sys_lstat() con la diferencia que esta llamada utiliza la función cp_new_stat().

asmlinkage long sys_fstat (unsigned int fd, struct __old_kernel_stat *statbuf)
 Llamada al sistema fstat.

asmlinkage long sys_newfstat (unsigned int fd, struct stat *statbuf)
 Llamada al sistema newfstat. Ídem sys_fstat() con la diferencia que esta llamada utiliza la función cp_new_stat().

asmlinkage long sys_stat64 (char *filename, struct stat64 *statbuf, long flags)
 Llamada al sistema stat64. Ídem sys_stat() pero para los sistemas de archivos de 64 bits.

asmlinkage long sys_lstat64 (char *filename, struct stat64 *statbuf, long flags)
 Llamada al sistema lstat64. Ídem sys_lstat() pero para los fileystems de 64 bits.

asmlinkage long sys_fstat64 (unsigned long fd, struct stat64 *statbuf, long flags)
 Llamada al sistema fstat64. Ídem sys_fstat() pero para los sistemas de archivos de 64 bits.

asmlinkage long sys_setuid (uid_t uid)
 Cambia el uid sólo si los archivos abiertos verifican seguridad simple, confinamiento y DAC para el nuevo usuario.


Documentación de las funciones

asmlinkage long sys_chdir const char *    filename
 

Llamada al sistema chdir.

Se modificó la semántica de esta llamada en cuanto a los permisos que se necesitan para ejecutarla. Usa permission().

asmlinkage long sys_fchmod unsigned int    fd,
mode_t    mode
 

Llamada al sistema fchmod.

El código de esta llamada se comentó completamente ya que no cumple con la precondición de la operación del modelo chmod.

fchmod ejecutaba el mismo código que sys_chmod() pero sobre un archivo abierto.

Ahora devuelve siempre -EPERM (operación no permitida).

asmlinkage long sys_chmod const char *    filename,
mode_t    mode
 

Llamada al sistema chmod.

Cambia los permisos del grupo ALLGRP y del usuario y grupo dueño tradicional, en la ACL de un archivo.

Parámetros:
filename Archivo sobre el cual se realizará la operación.
mode Permisos en formato tradicional que serán agregados a la ACL del archivo filename.
Postcondición:
En la ACL del archivo filename se cambian los permisos correspondientes al usuario dueño tradicional y al grupo primario de filename y también los del grupo ALLGRP por nuevos permisos, que dependenden del valor de mode.
Devuelve:
  • Un número distinto de cero si filename no es un nombre valido.
  • -EROFS Si filename es un archivo de solo lectura.
  • -EPERM Si filename es inmutable o append???
  • -EACCES Si el usuario que realiza la operación no es dueño del archivo.
  • -EBUSY Si filename esta abierto en el sistema.
  • 0 En caso de que la operación termine con éxito.

Bug:
Si no hay espacio en la ACL para todos los cambios, no se realiza ninguno.

asmlinkage long sys_chown const char *    filename,
uid_t    user,
gid_t    group
 

Llamada al sistema chown.

Cambia el usuario dueño tradicional y grupo primario tradicional de un archivo. Esta llamada utiliza la funcion chown_common() la cual fue modificada para cumplir con la nueva especificación.

Parámetros:
filename Archivo al cual se le realizará la operación.
user Nuevo usuario dueno tradicional.
group Nuevo grupo primario tradicional.
Postcondición:
Cambia el usuario dueño tradicional y grupo primario tradicional del archivo filename, por user y group respectivamente. Se agregan a la ACL del archivo filename permisos para user y para group. Estos permisos son los mismos que tenían los antiguos usuario dueño y grupo primario. Estos últimos son eliminados de la ACL del archivo filename.
Devuelve:
  • Un número distinto de cero si filename no es un nombre valido.
  • -EACCES Si el usuario que realiza la operación no es el dueño del archivo.
  • -EBUSY Si el filename esta abierto en el sistema.
  • Lo que devuelva chown_common() en cualquier otro caso.

asmlinkage long sys_lchown const char *    filename,
uid_t    user,
gid_t    group
 

Llamada al sistema lchown.

Cambia el usuario dueño tradicional y grupo primario tradicional a un enlace. Esta llamada utiliza la función chown_common() la cual fue modificada para cumplir con la nueva especificación.

Parámetros:
filename Enlace en el cual se le realiza la operación.
user Nuevo usuario dueño tradicional.
group Nuevo grupo primario tradicional.
Postcondición:
Cambia el usuario dueño tradicional y grupo primario tradicional del enlace al archivo filename, por user y group respectivamente.
Devuelve:
  • Un número distinto de cero si filename no es un nombre valido.
  • -EACCES Si el usuario que realiza la operación no es el dueño del archivo.
  • -EBUSY Si el enlace esta abierto en el sistema.????????
  • Lo que devuelva chown_common() en cualquier otro caso.

asmlinkage long sys_fchown unsigned int    fd,
uid_t    user,
gid_t    group
 

Llamada al sistema fchown.

El código de esta llamada se comentó completamente ya que no cumple con la precondición de la operación del modelo chown.

fchown ejecutaba el mismo código que sys_chown() pero sobre un archivo abierto.

Ahora devuelve siempre -EPERM (operación no permitida).

asmlinkage long sys_stat char *    filename,
struct __old_kernel_stat *    statbuf
 

Llamada al sistema stat.

Devuelve información de estado de un archivo. Esta llamada utiliza la función cp_old_stat() la cual fue modificada para cumplir con la nueva especificación.

Parámetros:
filename Archivo del cual se piede la información.
statbuf Apunta a una estructura donde se devuelven los resultados de la llamada.
Postcondición:
En el párametro statbuf queda cargada información sore filename, dentro de la cual se encuentran los permisos del usuario dueño tradicional, el grupo primario tradicional y los permisos del grupo ALLGRP.
Devuelve:
  • Un número distinto de cero si filename no es un nombre válido.???
  • -EACCES Si el usuario que realiza la operación no tiene permiso de lectura sobre filename.
  • Lo que devuelva cp_old_stat() en cualquier otro caso.

asmlinkage long sys_lstat char *    filename,
struct __old_kernel_stat *    statbuf
 

Llamada al sistema lstat.

Devuelve información del enlace que se obtiene al seguir los enlaces del path que se pasa como parámetro. Esta llamada utiliza la función cp_old_stat() la cual fue modificada para cumplir con la nueva especificación.

Parámetros:
filename Enlace del cual se piede la información.
statbuf Apunta a una estructura donde se devuelven los resultados de lstat.
Postcondición:
Ídem sys_stat().
Devuelve:
Ídem sys_stat().

asmlinkage long sys_fstat unsigned int    fd,
struct __old_kernel_stat *    statbuf
 

Llamada al sistema fstat.

Devuelve información del inodo al que apunta el descripor de archivo que se pasa como parámetro.

Esta llamada utiliza la función cp_old_stat() la cual fue modificada para cumplir con la nueva especificación.

Parámetros:
fd Descriptor de archivo que apunta al inodo del cual se piede información.
statbuf Apunta a una estructura donde se devuelven los resultados de la llamada.
Postcondición:
En el parámetro statbuf queda cargada información sore el archivo al que apunta fd, dentro de la cual se encuentran los permisos del usuario dueno tradicional, el grupo primario tradicional y los permisos del grupo ALLGRP.
Devuelve:
  • -EBADF Si fd no apunta a un inodo válido. ???
  • -EACCES Si el usuario que realiza la operación no tiene permiso de lectura sobre el archivo al que apunta fd.
  • Lo que devuelva cp_old_stat() en cualquier otro caso.

asmlinkage long sys_setuid uid_t    uid
 

Cambia el uid sólo si los archivos abiertos verifican seguridad simple, confinamiento y DAC para el nuevo usuario.

Este cambio se incluyó debido a que era posible que un usuario se logueara en una terminal con clase de acceso superior a la de aquel (en general debido a que es posible que usando setuid se viole seguridad simple o DAC). El control que se implementó podría debilitarse controlando únicamente seguridad simple y DAC.

Es necesario pensar y diseñar cuidadosamente el mecanismo SUID si va a ser incorporado en Lisex.

Parámetros:
uid El nuevo usuario.
Devuelve:
Se documentan únicamente los errores agregados por Lisex:
  • 0 si hay éxito
  • ERROR igual al retornado por may_open()


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