CHMOD(2) | Manual del Programador de Linux | CHMOD(2) |
chmod, fchmod - cambia los permisos de un fichero
#include <sys/types.h>
#include <sys/stat.h>
int chmod(const char *path, mode_t
mode);
int fchmod(int fildes, mode_t mode);
Cambia el modo del fichero dado mediante path o referido por fildes
Los modos se especifican mediante un O lógico de los siguientes valores:
El UID efectivo del proceso debe ser cero o debe coincidir con el propietario del fichero.
Si el UID efectivo del proceso no es cero y el grupo del fichero no coincide con el ID de grupo efectivo del proceso o con uno de sus IDs de grupo sumplementarios, el bit S_ISGID se desactivará, aunque esto no provocará que se devuelva un error.
Dependiendo del sistema de ficheros, los bits S_ISUID y S_ISGID podrían desactivarse si el fichero es escrito. En algunos sistemas de ficheros, solo el superusuario puede asignar el bit pegajoso, lo cual puede tener un significado especial. Para el bit pegajoso, y para los bits SUID y SGID sobre directorios, véase stat(2).
En sistemas de ficheros NFS, la restricción de permisos influirá inmediatamente en los ficheros ya abiertos, ya que el control de acceso se hacen en el servidor, pero los ficheros abiertos son mantenidos por el cliente. La ampliación de permisos puede verse retrasada para otros clientes si en ellos está habilitada la ocultación (caching) de atributos.
En caso de éxito, devuelve 0. En caso de error, -1 y se asigna a la variable errno un valor adecuado.
Dependiendo del sistema de ficheros, se pueden devolver otros errores. Los más generales para chmod están listados a continuación:
Los errores comunes para fchmod son:
La llamada chmod conforma con SVr4, SVID, POSIX, X/OPEN, 4.4BSD. SVr4 documenta además las condiciones de error EINTR, ENOLINK y EMULTIHOP, pero no ENOMEM. POSIX.1 no documenta las condiciones de error EFAULT, ENOMEM, ELOOP y EIO, ni las macros S_IREAD, S_IWRITE y S_IEXEC.
La llamada fchmod conforma con 4.4BSD y SVr4. SVr4 documenta además las condiciones de error EINTR y ENOLINK. Si se define al menos una de la variables _POSIX_MAPPED_FILES o _POSIX_SHARED_MEMORY_OBJECTS, POSIX exige la función fchmod y documenta las condiciones de error adicionales ENOSYS y EINVAL, pero no documenta EIO.
10 diciembre 1997 | Linux 2.0.32 |