File: access.2

package info (click to toggle)
manpages-es 1.55-4
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 7,472 kB
  • ctags: 6
  • sloc: sh: 1,349; makefile: 63
file content (190 lines) | stat: -rw-r--r-- 6,897 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
.\" Hey Emacs! This file is -*- nroff -*- source.
.\"
.\" Copyright (C) 1992 Drew Eckhardt;
.\"               1993 Michael Haardt, Ian Jackson.
.\"
.\" Se autoriza hacer y distribuir copias literales de este manual siempre
.\" que el aviso de copyright y este aviso de autorización se preserven en
.\" todas las copias.
.\"
.\" Se autoriza copiar y distribuir versiones modificadas de este manual
.\" bajo las condiciones para copiar literalmente, siempre que todo el trabajo
.\" resultante sea distribuido bajo los términos de un aviso de autorización
.\" idéntico a éste.
.\"
.\" Ya que el kernel y las bibliotecas de Linux están cambiando
.\" constantemente, esta página de manual puede ser incorrecta u obsoleta.
.\" El(Los) autor(es) no asumen ninguna responsabilidad de los errores u
.\" omisiones, o de los daños resultantes del uso de la información contenida
.\" aquí. El(Los) autor(es) pueden no haber tomado el mismo nivel de cuidado en
.\" la producción de este manual, que es licenciado gratuitamente, como el que
.\" podrían haber tomado trabajando profesionalmente.
.\"
.\" Las versiones procesadas o tratadas de este manual que no se acompañen
.\" con los fuentes deben reconocer el copyright y los autores de este trabajo.
.\"
.\" Modificado el Mié, 21 Jul 1993, a las 19:36:29, por Rik Faith (faith@cs.unc.edu)
.\" Modificado el 21 de Ago de 1994 por Michael Chastain (mec@shell.portal.com):
.\"   Se elimina nota sobre viejo kernel (pre-1.1.44) que usaba un
.\"   identificador de proceso incorrecto a lo largo del camino.
.\" Modificado el 18 de Mar de 1996 por Martin Schulze (joey@infodrom.north.de):
.\"   Mejor explicación sobre cómo se comportan con los enlaces simbólicos.
.\" Corregido por Nick Duffek (nsd@bbc.com), aeb, el 26 de Abril de 1996
.\" Modificado el 07 de Sep de 1996 a las 18:17:26 por Michael Haardt:
.\"   Restricciones para NFS
.\" Traducido el 23 de Jul de 1997 por Juan Piernas (piernas@dif.um.es)
.\" Modificado por Joseph S. Myers <jsm28@cam.ac.uk>, 970909
.\" Modified Tue Jan 13 21:21:03 MET 1998 by Michael Haardt:>
.\"   Using access is often insecure       
.\" Modified Tue Oct 16 02:40:48 CEST 2001 by aeb
.\" Modified Tue Apr 23 19:51:15 CEST 2002 by Roger Luethi <rl@hellgate.ch> 
.\" Traducción revisada el Sáb 25 de Abril de 1998 por Juan Piernas <piernas@dif.um.es>
.\" Traducción revisada el Dom 16 de Agosto de 1998 por
.\"   Juan Piernas <piernas@dif.um.es>
.\" Revisado por Miguel Pérez Ibars <mpi79470@alu.um.es> el 17-septiembre-2004
.\"
.TH ACCESS 2 "23 Abril 2002" "Linux" "Llamadas al sistema"
.SH NOMBRE
access \- comprueba los permisos de usuario para un fichero
.SH SINOPSIS
.nf
.B #include <unistd.h>
.sp
.BI "int access(const char *" pathname ", int " mode );
.fi
.SH DESCRIPCIÓN
.B access
comprueba si al proceso se le permitiría leer, escribir o comprobar la
existencia del fichero (u otro objeto del sistema de ficheros) cuyo nombre
es
.IR pathname .
Si
.I pathname
es un enlace simbólico se comprueban los permisos del fichero referenciado
por dicho enlace simbólico.

.I mode
es una máscara compuesta por uno o más de los siguientes elementos:
.BR R_OK ", " W_OK ", " X_OK " y " F_OK .

.BR R_OK ", " W_OK " y " X_OK
se utilizan para la comprobación de lectura, escritura o ejecución del
fichero, respectivamente.
.B F_OK
se utiliza para ver si se permite la mera comprobación 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
.IR pathname ,
y de los permisos de los directorios y ficheros referenciados por los enlaces
simbólicos que se pueden encontrar a lo largo del camino.

La comprobación se realiza con los uid y gid 
.I reales
del proceso, en lugar de utilizar los identificadores efectivos, tal como se
hace cuando realmente se intenta una operación. Esto permite a los programas
con el bit
.BR SETUID
activo determinar fácilmente la autoridad del usuario
invocador.

Sólo 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, aún así, puede fallar una llamada a
.BR execve (2).

Si el proceso tiene los privilegios apropiados, una implementación
puede indicar éxito para
.B X_OK
aun si ninguno de los bits de permiso de ejecución del fichero están activos.
.SH "VALOR DEVUELTO"
Si ha habido éxito (se han concedido todos los permisos solicitados) la
función devuelve un valor 0. Si se ha producido un error (al menos, uno de
los bits de
.I mode
ha interrogado por un permiso que ha sido denegado, o ha ocurrido algún otro
tipo de error), la función devuelve \-1 y a 
.I errno
se le asigna un valor adecuado.

.SH ERRORES
.B access
fallará si:
.TP
.B EACCES
Se denegaría el acceso solicitado al fichero o se deniega el permiso de
búsqueda para uno de los directorios en
.IR pathname .
.TP
.B ELOOP
Se han encontrado demasiados enlaces simbólicos al resolver
.IR pathname .
.TP
.B ENAMETOOLONG
.IR pathname " es demasiado largo."
.TP
.B ENOENT
Un directorio componente de
.I pathname
es accesible pero no existe o es un enlace simbólico colgado.
.TP
.B ENOTDIR
Un componente usado como directorio en
.I pathname
no es, de hecho, un directorio.
.TP
.B EROFS
Se ha solicitado permiso de escritura para un fichero en un sistema de ficheros
de sólo lectura.
.PP
.B access
puede fallar si:
.TP
.B EFAULT
.IR pathname " apunta fuera del espacio de direcciones al que tiene
acceso."
.TP
.B EINVAL
.IR mode " se ha especificado incorrectamente"
.TP
.B ENOMEM
No hay suficiente memoria disponible en el núcleo.
.TP
.B EIO
Ha ocurrido un error de E/S.
.TP
.B ENOMEM
Memoria del núcleo insuficiente.
.TP
.B ETXTBSY
Se requiere acceso de escritura para un ejecutable que está
siendo ejecutado.
.SH RESTRICCIONES
.B access
regresa un error si falla cualquiera de los tipos de acceso especificados en
la llamada a la función, aunque los otros tipos tuvieran éxito.
.PP
.B access
no puede funcionar correctamente sobre sistemas de ficheros NFS que tengan
activa la aplicación del UID, porque la aplicación del UID se realiza en el
servidor y se oculta a los clientes que comprueban los permisos.
.PP
Usar
.B access
para comprobar si un usuario está autorizado a, por ejemplo, abrir un
fichero antes de que realmente lo haga usando
.BR open (2),
crea un agujero de seguridad ya que el usuario podría explotar el breve
intervalo de tiempo que hay entre la comprobación y la apertura del fichero
para manipularlo.
.SH "CONFORME A"
SVID, AT&T, POSIX, X/OPEN, BSD 4.3
.SH "VÉASE TAMBIÉN"
.BR stat (2),
.BR open (2),
.BR chmod (2),
.BR chown (2),
.BR setuid (2),
.BR setgid (2)