chmod

chmod

chmod ("change mode", cambiar modo en idioma inglés) es una llamada al sistema y su comando asociado en el sistema operativo UNIX (estandarizados en POSIX y otros estándares) que permite cambiar los permisos de acceso de un archivo o directorio.

Contenido

Sintaxis

Comando

    chmod [modificadores] permisos archivo/directorio

Donde:

modificadores es opcional, y puede tomar los valores:

  • -f: no visualiza los posibles mensajes de error que puedan ocurrir debido a conflictos en la asignación de permisos.
  • -v: lista los archivos y directorios a los que se les va aplicando el comando a medida que el mismo se ejecuta
  • -h:
  • -R: aplica el comando chmod recursivamente a todos los archivos y de los subdirectorios.
  • -H:
  • -L:
  • -P:
  • -C: igual a -v con excepción que solo lista los archivos modificados.
  • -E:

El orden y compatibilidad de los modificadores está dada por:

[-fhv] [-R [-H | -L | -P]] [-C | -E]

Esto significa que f, h y v pueden ser usados todos a la vez, e independientemente de los valores de los demás modificadores; H, L y P son ignorados salvo que se especifique explícitamente la opción R

permisos corresponde a uno de los modos que se describen a continuación, y enumera los tipos de permisos que se brindan a las clases de usuarios.

archivo/directorio archivo o directorio al cual se otorga el permiso

Llamada al sistema

Ejemplo en lenguaje de programación C:

    int chmod(const char *path, mode_t mode);
    int fchmod(int fd, mode_t mode);

mode es un número entero que específica los permisos, como se detallará en el siguiente ejemplo

Especificación de permisos

Permisos básicos

Existen tres permisos independientes, llamados permisos básicos, que pueden ser permitidos (estado 1) o denegados (estado 0) a un archivo y/o directorio

  • r - lectura
  • w - escritura
  • x - ejecución

El significado de estos tres permisos se resume en la siguiente tabla:

Permiso Archivo Directorio
Lectura Ver el contenido del archivo. Ver el nombre de los archivos dentro del directorio (pero sin poder saber nada más sobre ellos como: el tipo de archivo, tamaño, propietario, permisos, etc. )
Escritura Modificar o eliminar el archivo. Agregar, eliminar y renombrar archivos del directorio
Ejecución Ejecutar el archivo. Recorrer su árbol para acceder archivos y subdirectorios, pero no ver los archivos dentro del directorio (excepto que se le de el permiso de lectura)

Clases de usuarios

Los permisos de sistemas UNIX se dividen en cuatro clases, conocidas como usuario, grupo, otros y todos (con frecuencia abreviado UGOA por sus siglas en inglés).

Por lo tanto, las clases de usuarios a los cuales se les puede asignar los permisos básicos anteriormente mencionados son:

  • u – dueño: dueño del archivo o directorio
  • g – grupo: grupo al que pertenece el archivo
  • o – otros: todos los demás usuarios que no son el dueño ni del grupo
  • a – todos: incluye al dueño, al grupo y a otros

Los permisos efectivos aplicados a un determinado usuario en relación a un archivo se determinan en un orden lógico de precedencia. Por ejemplo, el usuario propietario del archivo tendrá los permisos efectivos dados a la clase de usuario, sin importar los asignados a la clase de grupo o a la clase de otros.

Asignación de permisos en el comando chmod

Existen 2 formas o modos de asignar los permisos a los usuarios:

Modo octal

Como resultado de la combinación de los tres tipos de permisos (lectura, escritura y ejecución), con las tres clases de usuarios (dueño, grupo y otros), se obtiene 23 = 8 permisos en total que pueden ser asignados o denegados de forma independiente.

La base 8 se utiliza habitualmente para que exista un dígito por cada combinación de permisos (un bit a modo de bandera por cada permiso, con valor 1 ó 0 según el permiso esté concedido o denegado).

Así, las posibles combinaciones se resumen en números octales de tres dígitos del 000 al 777, cada uno de los cuales permite establecer un tipo de permiso distinto a cada clase de usuario:

  • El primer dígito establece el tipo de permiso deseado al dueño; el segundo al grupo; y el tercero al resto de los usuarios.
Número Binario Lectura (r) Escritura (w) Ejecución (x)
0 000
No-Symbol.svg
No-Symbol.svg
No-Symbol.svg
1 001
No-Symbol.svg
No-Symbol.svg
Symbol OK.svg
2 010
No-Symbol.svg
Symbol OK.svg
No-Symbol.svg
3 011
No-Symbol.svg
Symbol OK.svg
Symbol OK.svg
4 100
Symbol OK.svg
No-Symbol.svg
No-Symbol.svg
5 101
Symbol OK.svg
No-Symbol.svg
Symbol OK.svg
6 110
Symbol OK.svg
Symbol OK.svg
No-Symbol.svg
7 111
Symbol OK.svg
Symbol OK.svg
Symbol OK.svg

Por ejemplo:

chmod 766 file.txt   # brinda acceso total al dueño
                     # y lectura y escritura a los demás
chmod 770 file.txt   # brinda acceso total al dueño y al grupo
                     # y elimina todos los permisos a los demás usuarios
chmod 635 file.txt   # Permite lectura y escritura al dueño, 
                     # escritura y ejecución al grupo,
                     # y lectura y ejecución al resto

Modo carácter

Posee 3 modificadores que permiten realizar la tarea:

  • + – añade un modo
  • – elimina un modo
  • = – específica un modo (sobrescribiendo el modo anterior)

Por ejemplo:

chmod +r arch.txt        # agrega permisos de lectura a todos los
                         # usuarios
chmod u+w arch.txt       # agrega permisos de escritura al dueño
chmod –x arch.txt        # elimina el permiso de ejecución a todos
                         # los usuarios
chmod u=rw,go= arch.txt  # establece los permisos de lectura y escritura
                         # al dueño y elimina todos los permisos a
                         # los demás usuarios

Permisos adicionales

Los sistemas UNIX emplean típicamente tres permisos o modos adicionales. Estos permisos especiales se asignan a archivos o directorios en conjunto, no a cada clase de forma separada (como sucedía con los permisos básicos).

  • Permiso set user ID, setuid o SUID: cuando un archivo que tiene este permiso asignado se ejecuta, el proceso resultante asumirá la ID de usuario efectiva dada a la clase de usuario. El ejemplo típico es el cambio de una clave de usuario: ningún usuario debería poder modificar /etc/passwd/ directamente. La única forma de poder modificarlo debería ser a través del comando correspondiente, que necesariamente tendrá que tener asignado el setuid. Es decir, el comando /usr/bin/passwd ejecutado por un usuario se ejecutará como si lo hubiese invocado el superusuario, de manera de poder modificar /etc/passwd.
  • Permiso set group ID, setgid o SGID: cuando un archivo que tiene este permiso asignado se ejecuta, el proceso resultante asumirá la ID de grupo efectiva dada a la clase de grupo. Cuando el setgid le es asignado a un directorio, archivos nuevos y directorios creados debajo de ese directorio heredarán el grupo de ese directorio, a diferencia del comportamiento por defecto, que es usar el grupo primario del usuario efectivo al asignar el grupo de archivos nuevos y directorios.
  • Permiso de sticky bit (o menos común, bit pegadizo): El comportamiento típico del sticky bit en archivos ejecutables fuerza al kernel a retener la imagen del proceso resultante luego de su terminación. Originalmente, esta era una característica para ahorrar memoria, pero hoy en día, los precios de las memorias han disminuido y exiten mejores técnicas para manejarlo, así que no se lo suele utilizar más para optimizaciones en archivos. En un directorio, por el contrario, el sticky bit previene que los usuarios renombren, muevan o borren los archivos que allí se encuentran, pertenecientes a usuarios otros que ellos mismos, incluso si tienen permiso de escritura en el directorio. Solo el propietario del directorio y el superusuario quedan exentos de esto.

Estos tres permisos (especificables de forma independiente), un bit por cada uno de ellos, permiten 8 combinaciones posibles que se expresan con un dígito en base 8 (del 0 al 7, uno por cada combinación posible) que se antepone al modo de permisos. Así, el modo se ampliaría ahora del 0000 al 7777.

  • = – específica un modo (sobrescribiendo el modo anterior)

Por ejemplo:

chmod +t /home           # agrega permisos de sticky bit al directorio home
chmod g+s /home/grupo    # agrega el setgid al grupo
chmod gu+s /home /grupo  # agrega el setuid y el setgid al usuario y al grupo respectivamente

Más sobre permisos de archivos y directorios en Linux


Wikimedia foundation. 2010.

Игры ⚽ Нужно сделать НИР?

Mira otros diccionarios:

  • Chmod — Capture d écran de la page de manuel en anglais de la commande chmod chmod (abréviation de change mode) est une commande Unix exécutable dans un environnement de type Unix qui permet de changer les permissions d accès (spéciales ou non) sur un… …   Wikipédia en Français

  • chmod — (abréviation de change mode) est un appel système d Unix ainsi que la commande correspondante qui permet de changer les permissions d accès d un fichier ou d un répertoire. Sommaire 1 Histoire 1.1 Permission de changer les droits …   Wikipédia en Français

  • Chmod — Saltar a navegación, búsqueda chmod ( change mode , cambiar modo en idioma inglés) es una llamada al sistema y su comando asociado en el sistema operativo UNIX (estandarizados en POSIX y otros estándares) que permite cambiar los permisos de… …   Wikipedia Español

  • Chmod — Тип программа для изменения прав доступа к файлам и директориям Разработчик Проект GNU Написана на C Операционная система Unix подобные Последняя версия 8.5 (23 апреля 2010) …   Википедия

  • chmod — Тип программа для изменения прав доступа к файлам и директориям Разработчик Проект GNU Написана на C Операционная система Unix подобные Последняя версия 8.5 (23 апреля 2010) Лицензия …   Википедия

  • CHMOD — (von englisch: change mode) ist ein Kommandozeilenprogramm unter Unix, mit dem sich die klassischen Unix Dateiattribute (Zugriffsrechte) verändern lassen. Das chmod Kommando gibt es bereits seit der ersten Version des AT T Unix (Ende der 1970er… …   Deutsch Wikipedia

  • Chmod — (von englisch: change mode) ist ein Kommandozeilenprogramm unter Unix, mit dem sich die klassischen Unix Dateiattribute (Zugriffsrechte) verändern lassen. Das chmod Kommando gibt es bereits seit der ersten Version des AT T Unix (Ende der 1970er… …   Deutsch Wikipedia

  • chmod — chmod,   Befehl unter Linux für das Zuweisen von Lese , Schreib und Ausführungsrechten für eine Datei oder ein Verzeichnis.   Mit chmod lassen sich im Rahmen von dynamischen Webseiten die Zugriffsrechte von z. B. CGI oder PHP Dateien regeln …   Universal-Lexikon

  • chmod — The chmod command (abbreviated from change mode) is a Unix command that lets a user tell the system how much (or little) access it should permit to a file.[1] It changes the file system modes of files and directories. The modes include… …   Wikipedia

  • Chmod — The chmod command (abbreviated from change mode) is a shell command in Unix and Unix like environments. When executed, the command can change file system modes of files and directories. The modes include permissions and special modes. History A… …   Wikipedia

Compartir el artículo y extractos

Link directo
Do a right-click on the link above
and select “Copy Link”