NOMBRE¶
chmod, fchmod - cambia los permisos de un fichero
SINOPSIS¶
#include <sys/types.h>
 
#include <sys/stat.h>
 
int chmod(const char *path, mode_t mode);
 
int fchmod(int fildes, mode_t mode);
DESCRIPCIÓN¶
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:
 
  - S_ISUID
 
  - 04000 asignar ID de usuario al ejecutar
 
  - S_ISGID
 
  - 02000 asignar ID de group al ejecutar
 
  - S_ISVTX
 
  - 01000 bit pegajoso (sticky bit)
 
  - S_IRUSR (S_IREAD)
 
  - 00400 lectura para el propietario
 
  - S_IWUSR (S_IWRITE)
 
  - 00200 escritura para el propietario
 
  - S_IXUSR (S_IEXEC)
 
  - 00100 ejecución/busqueda para el propietario
 
  - S_IRGRP
 
  - 00040 lectura para el grupo
 
  - S_IWGRP
 
  - 00020 escritura para el grupo
 
  - S_IXGRP
 
  - 00010 ejecución/busqueda para el grupo
 
  - S_IROTH
 
  - 00004 lectura para otros
 
  - S_IWOTH
 
  - 00002 escritura para otros
 
  - S_IXOTH
 
  - 00001 ejecución/busqueda para otros
    
 
   
 
 
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.
 
VALOR DEVUELTO¶
En caso de éxito, devuelve 0. En caso de error, -1 y se asigna a la
  variable 
errno un valor adecuado.
ERRORES¶
Dependiendo del sistema de ficheros, se pueden devolver otros errores. Los
  más generales para 
chmod están listados a continuación:
 
  - EPERM
 
  - El UID efectivo no coincide con el propietario del fichero,
      o no es cero.
 
  - EROFS
 
  - El fichero nombrado reside en un sistema de ficheros de
      sólo lectura.
 
  - EFAULT
 
  - path apunta fuera del espacio de direcciones
      accesible.
 
  - ENAMETOOLONG
 
  - path es demasiado largo.
 
  - ENOENT
 
  - El fichero no existe.
 
  - ENOMEM
 
  - No hubo suficiente memoria en el núcleo.
 
  - ENOTDIR
 
  - Un componente del camino path no es un
    directorio.
 
  - EACCES
 
  - Se ha denegado el permiso de búsqueda para uno de los
      componentes del camino.
 
  - ELOOP
 
  - Se han encontrado demasiados enlaces simbólicos al
      resolver path.
 
  - EIO
 
  - Ha ocurrido un error de E/S.
 
Los errores comunes para 
fchmod son:
  - EBADF
 
  - El descriptor de fichero fildes no es
    válido.
 
  - EROFS
 
  - Lea nota anterior.
 
  - EPERM
 
  - Lea nota anterior.
 
  - EIO
 
  - Lea nota anterior.
 
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.
VÉASE TAMBIÉN¶
open(2), 
chown(2), 
execve(2), 
stat(2)