Ir al contenido
Menú principal
Menú principal
mover a la barra lateral
ocultar
Navegación
Página principal
Cambios recientes
Página aleatoria
Ayuda sobre MediaWiki
Buscar
Buscar
español
Apariencia
Crear una cuenta
Acceder
Herramientas personales
No has accedido
Discusión
Contribuciones
Crear una cuenta
Acceder
Edición de «
Chmod
»
Página
Discusión
español
Leer
Editar
Editar código
Ver historial
Herramientas
Herramientas
mover a la barra lateral
ocultar
Acciones
Leer
Editar
Editar código
Ver historial
General
Lo que enlaza aquí
Cambios relacionados
Información de la página
Apariencia
mover a la barra lateral
ocultar
Advertencia:
no has iniciado sesión. Tu dirección IP se hará pública si haces cualquier edición. Si
inicias sesión
o
creas una cuenta
, tus ediciones se atribuirán a tu nombre de usuario, además de otros beneficios.
Comprobación antispam. ¡
No
rellenes esto!
{{Título en minúscula}} '''chmod''', que significa "cambiar modo" (del inglés: "change mode"), es un [[comando (informática)|comando]] asociado con el sistema operativo [[UNIX]] (estandarizados en [[POSIX]] y otros estándares) que permite la asignación de [[Permisos de acceso a archivos|permisos de acceso]] a carpetas o [[Directorio del Servicio de Computadoras|directorios]].<ref>{{Cita web|url=https://www.ionos.mx/digitalguide/servidores/know-how/asignacion-de-permisos-de-acceso-con-chmod/|título=¿Qué es chmod?|fechaacceso=2022-07-27|sitioweb=IONOS Digitalguide|idioma=es}}</ref> == Sintaxis == === Comando === Las opciones del comando <tt>chmod</tt> se especifica del siguiente modo: <syntaxhighlight lang="bash"> $ chmod [modificadores] permisos fichero/directorio </syntaxhighlight> 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 ficheros 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 ficheros y de los subdirectorios. *'''-H''': *'''-L''': *'''-P''': *'''-c''': igual a -v con excepción que solo lista los ficheros 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. '''''fichero/directorio''''' fichero o directorio al cual se otorga el permiso === Llamada al sistema === Ejemplo en [[lenguaje de programación C]]: <syntaxhighlight lang="C"> int chmod(const char *path, mode_t mode); int fchmod(int fd, mode_t mode); </syntaxhighlight> ''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 fichero y/o directorio * '''r - lectura''' * '''w - escritura''' * '''x - ejecución''' El significado de estos tres permisos se resume en la siguiente tabla: {| class="wikitable" |- ! Permiso ! Fichero ! Directorio |- | Lectura | Ver el contenido del fichero. | Ver el nombre de los ficheros 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 fichero. | Agregar, eliminar y renombrar ficheros del directorio |- | Ejecución | Ejecutar el fichero. | Recorrer su árbol para acceder ficheros y subdirectorios, pero no ver los ficheros dentro del directorio (excepto que se le dé 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 – usuario''': dueño del fichero o directorio * '''g – grupo''': grupo al que pertenece el fichero * '''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 con un fichero se determinan en un orden lógico de precedencia. Por ejemplo, el usuario propietario del fichero 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 <math>2^3 = 8</math> 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 (informática)|bandera]] por cada permiso, con valor 1 o 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. {| class="wikitable" colspec="C4" |- ! Número ! Binario ! Lectura (''r'') ! Escritura (''w'') ! Ejecución (''x'') |- | 0 | 000 | [[Archivo:No-Symbol.svg|20px|center]] | [[Archivo:No-Symbol.svg|20px|center]] | [[Archivo:No-Symbol.svg|20px|center]] |- | 1 | 001 | [[Archivo:No-Symbol.svg|20px|center]] | [[Archivo:No-Symbol.svg|20px|center]] | [[Archivo:Symbol OK.svg|20px|center]] |- | 2 | 010 | [[Archivo:No-Symbol.svg|20px|center]] | [[Archivo:Symbol OK.svg|20px|center]] | [[Archivo:No-Symbol.svg|20px|center]] |- | 3 | 011 | [[Archivo:No-Symbol.svg|20px|center]] | [[Archivo:Symbol OK.svg|20px|center]] | [[Archivo:Symbol OK.svg|20px|center]] |- | 4 | 100 | [[Archivo:Symbol OK.svg|20px|center]] | [[Archivo:No-Symbol.svg|20px|center]] | [[Archivo:No-Symbol.svg|20px|center]] |- | 5 | 101 | [[Archivo:Symbol OK.svg|20px|center]] | [[Archivo:No-Symbol.svg|20px|center]] | [[Archivo:Symbol OK.svg|20px|center]] |- | 6 | 110 | [[Archivo:Symbol OK.svg|20px|center]] | [[Archivo:Symbol OK.svg|20px|center]] | [[Archivo:No-Symbol.svg|20px|center]] |- | 7 | 111 | [[Archivo:Symbol OK.svg|20px|center]] | [[Archivo:Symbol OK.svg|20px|center]] | [[Archivo:Symbol OK.svg|20px|center]] |} Por ejemplo: <syntaxhighlight lang="bash"> 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 </syntaxhighlight> === 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: <syntaxhighlight lang="bash"> chmod +r arch.txt # agrega permisos de lectura a todos los # usuarios(solo a algunos elegidos previamente) 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 </syntaxhighlight> == Permisos adicionales == Los sistemas [[UNIX]] emplean típicamente tres permisos o modos adicionales. Estos permisos especiales se asignan a ficheros o directorios en conjunto, no a cada clase de forma separada (como sucedía con los permisos básicos). * Permiso ''[[Setuid|set user ID]]'', ''setuid'' o SUID: cuando un fichero que tiene este permiso asignado se ejecuta, el proceso resultante asumirá el [[identificador de usuario]] efectivo dado a la clase de usuario. El ejemplo típico es el cambio de una clave de usuario: ningún usuario debería poder modificar <tt>/etc/passwd/</tt> 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 <tt>/usr/bin/passwd</tt> ejecutado por un usuario se ejecutará como si lo hubiese invocado el superusuario, para que pueda modificar <tt>/etc/passwd</tt>. * Permiso ''[[Setuid|set group ID]]'', ''setgid'' o SGID: cuando un fichero que tiene este permiso asignado se ejecuta, el proceso resultante asumirá el [[identificador de grupo]] efectivo dado a la clase de grupo. Cuando el setgid le es asignado a un directorio, ficheros 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 ficheros nuevos y directorios. * Permiso de ''[[sticky bit]]'' (o menos común, ''bit pegadizo''): El comportamiento típico del sticky bit en ficheros ejecutables fuerza al [[Núcleo (informática)|núcleo]] 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 existen mejores técnicas para manejarlo, así que no se lo suele utilizar más para optimizaciones en ficheros. En un directorio, por el contrario, el sticky bit (llamado también "Restricted Deletion Flag" o "Bandera de restricción de borrado") previene que los usuarios renombren, muevan o borren los ficheros 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. Por ejemplo: <syntaxhighlight lang="bash"> 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 </syntaxhighlight> == Véase también == *[[Permisos de acceso a archivos|Permisos de acceso a ficheros]] *<code>[[chown]]</code>, el comando para cambiar el propietario de un fichero o directorio en sistemas tipo Unix. *<code>[[chgrp]]</code>, el comando para cambiar el grupo de un fichero o directorio en sistemas tipo Unix. *<code>[[cacls]]</code>, el comando utilizado en [[Windows NT]] y sus derivados para modificar la lista de control de acceso asociada con un fichero o directorio. *<code>[[attrib]]</code> *[[Identificador de usuario]] *[[Identificador de grupo]] == Enlaces externos == *{{man|1|chmod|Debian|cambio de permisos de ficheros y directorios}} * [http://www.gnu.org/software/coreutils/manual/html_node/chmod-invocation.html <code>chmod</code>] — manual de [[GNU]] [[coreutils]] (en inglés) * [http://www.gnu.org/software/coreutils/manual/html_node/Setting-Permissions.html GNU "Setting Permissions" manual] — manual de [[GNU]] [[coreutils]] (en inglés) * [http://file-permissions.ninja File permissions ninja] — Calculadora de permisos de archivo en línea == Referencias == {{listaref}} {{Control de autoridades}} [[Categoría:Programas del estándar Unix]] [[Categoría:Software para Linux]] [[Categoría:Seguridad del sistema operativo]] [[Categoría:Utilidades Unix SUS2008]]
Resumen:
Al guardar los cambios aceptas los
términos de uso
y liberas de forma irrevocable tu contribución conforme a los términos de las licencias
licencia CC BY-SA 4.0
y
GFDL
. Aceptas igualmente que un hipervínculo o URL es atribución suficiente conforme a la licencia Creative Commons.
Cancelar
Ayuda de edición
(se abre en una ventana nueva)
Buscar
Buscar
Edición de «
Chmod
»
Añadir idiomas
Añadir tema