Provided by: manpages-es_1.55-10_all bug

NOMBRE

       access - comprueba los permisos de usuario para un fichero

SINOPSIS

       #include <unistd.h>

       int access(const char *pathname, int mode);

DESCRIPCI'ON

       access  comprueba  si  al  proceso  se  le  permitiria leer, escribir o
       comprobar la existencia del fichero  (u  otro  objeto  del  sistema  de
       ficheros)  cuyo nombre es pathname.  Si pathname es un enlace simbolico
       se comprueban los permisos del fichero referenciado  por  dicho  enlace
       simbolico.

       mode  es  una  mascara  compuesta  por  uno  o  mas  de  los siguientes
       elementos: R_OK, W_OK, X_OK y F_OK.

       R_OK, W_OK  y  X_OK  se  utilizan  para  la  comprobacion  de  lectura,
       escritura  o  ejecucion  del fichero, respectivamente.  F_OK se utiliza
       para ver si se permite  la  mera  comprobacion  de  la  existencia  del
       fichero.  Esto  depende de los permisos de los directorios que aparecen
       en el camino hasta el fichero, tal como se da en  pathname,  y  de  los
       permisos  de  los  directorios y ficheros referenciados por los enlaces
       simbolicos que se pueden encontrar a lo largo del camino.

       La comprobacion se realiza con los uid y gid  reales  del  proceso,  en
       lugar  de  utilizar  los  identificadores  efectivos,  tal como se hace
       cuando realmente se intenta una operacion. Esto permite a los programas
       con el bit SETUID activo determinar facilmente la autoridad del usuario
       invocador.

       Solo se comprueban los bits de acceso, no el  tipo  de  fichero  o  sus
       contenidos.  Por  lo  tanto,  si encontramos que un directorio se puede
       "escribir", probablemente esto significa que se pueden  crear  ficheros
       en  el  directorio, no que el directorio se pueda escribir como se hace
       con un fichero. Similarmente, podemos encontrar  un  fichero  DOS  como
       "ejecutable" y, aun asi, puede fallar una llamada a execve(2).

       Si  el  proceso  tiene  los  privilegios apropiados, una implementacion
       puede indicar exito para X_OK aun si ninguno de los bits de permiso  de
       ejecucion del fichero estan activos.

VALOR DEVUELTO

       Si ha habido exito (se han concedido todos los permisos solicitados) la
       funcion devuelve un valor 0. Si se ha producido un error (al menos, uno
       de los bits de mode ha interrogado por un permiso que ha sido denegado,
       o ha ocurrido algun otro tipo de error), la funcion  devuelve  -1  y  a
       errno se le asigna un valor adecuado.

ERRORES

       access fallara si:

       EACCES Se  denegaria  el  acceso  solicitado al fichero o se deniega el
              permiso de busqueda para uno de los directorios en pathname.

       ELOOP  Se han encontrado  demasiados  enlaces  simbolicos  al  resolver
              pathname.

       ENAMETOOLONG
              pathname es demasiado largo.

       ENOENT Un directorio componente de pathname es accesible pero no existe
              o es un enlace simbolico colgado.

       ENOTDIR
              Un componente usado como directorio en pathname no es, de hecho,
              un directorio.

       EROFS  Se  ha  solicitado  permiso  de  escritura para un fichero en un
              sistema de ficheros de solo lectura.

       access puede fallar si:

       EFAULT pathname apunta fuera del espacio de direcciones  al  que  tiene
              acceso."

       EINVAL mode se ha especificado incorrectamente

       ENOMEM No hay suficiente memoria disponible en el nucleo.

       EIO    Ha ocurrido un error de E/S.

       ENOMEM Memoria del nucleo insuficiente.

       ETXTBSY
              Se  requiere  acceso  de  escritura  para un ejecutable que esta
              siendo ejecutado.

RESTRICCIONES

       access regresa un error si falla cualquiera  de  los  tipos  de  acceso
       especificados  en  la  llamada  a  la  funcion,  aunque los otros tipos
       tuvieran exito.

       access no puede funcionar correctamente sobre sistemas de ficheros  NFS
       que  tengan  activa la aplicacion del UID, porque la aplicacion del UID
       se realiza en el servidor y se oculta a los clientes que comprueban los
       permisos.

       Usar  access  para  comprobar  si  un  usuario  esta  autorizado a, por
       ejemplo, abrir un  fichero  antes  de  que  realmente  lo  haga  usando
       open(2), crea un agujero de seguridad ya que el usuario podria explotar
       el breve intervalo de  tiempo  que  hay  entre  la  comprobacion  y  la
       apertura del fichero para manipularlo.

CONFORME A

       SVID, AT&T, POSIX, X/OPEN, BSD 4.3

V'EASE TAMBI'EN

       stat(2), open(2), chmod(2), chown(2), setuid(2), setgid(2)