Provided by:
manpages-es_1.55-10_all 
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)