Controlar quién puede acceder a los archivos, buscar directorios y ejecutar scripts utilizando linux chmod
mandar. Este comando modifica los permisos de archivos de Linux, que parecen complicados a primera vista, pero en realidad son bastante simples una vez que sabes cómo funcionan.
¿De qué vamos a hablar?
chmod modifica los permisos de archivo
En Linux, quién puede hacer qué a un archivo o directorio se controla a través de conjuntos de permisos. Hay tres conjuntos de permisos. Un conjunto para el propietario del archivo, otro conjunto para los miembros del grupo del archivo y un conjunto final para todos los demás.
Los permisos controlan las acciones que se pueden realizar en el archivo o directorio. Permiten o impiden que un archivo sea leído, modificado o, si se trata de un script o programa, ejecutado. Para un directorio, los permisos gobiernan quién puede cd
en el directorio y quién puede crear o modificar archivos dentro del directorio.
Utiliza el chmod
comando a Establezca cada uno de estos permisos. Para ver qué permisos se han establecido en un archivo o directorio, podemos usar ls
.
Visualización y descripción de los permisos de archivo
Podemos utilizar el -l
(formato largo) opción para tener ls
enumere los permisos de archivo para archivos y directorios.
ls -l
En cada línea, el primer carácter identifica el tipo de entrada que se está enumerando. Si se trata de un guión (-
) es un archivo. Si es la letra d
es un directorio.
Los siguientes nueve caracteres representan la configuración de los tres conjuntos de permisos.
- Los tres primeros caracteres muestran los permisos para el usuario propietario del archivo (permisos de usuario).
- Los tres caracteres centrales muestran los permisos para los miembros del grupo del archivo (permisos de grupo).
- Los tres últimos caracteres muestran los permisos para cualquier persona que no esté en las dos primeras categorías (otros permisos).
Hay tres caracteres en cada conjunto de permisos. Los caracteres son indicadores de la presencia o ausencia de uno de los permisos. Son un guión (-
) o una carta. Si el carácter es un guión, significa que no se concede permiso. Si el carácter es un r
, w
, o un x
, ese permiso ha sido concedido.
Las letras representan:
- r: Permisos de lectura. El archivo se puede abrir y ver su contenido.
- w: Permisos de escritura. El archivo se puede editar, modificar y eliminar.
- x: Ejecutar permisos. Si el archivo es un script o un programa, se puede ejecutar (ejecutar).
Por ejemplo:
-
---
significa que no se han concedido permisos en absoluto. -
rwx
significa que se han concedido permisos completos. Los indicadores de lectura, escritura y ejecución están presentes.
En nuestra captura de pantalla, la primera línea comienza con un d
. Esta línea se refiere a un directorio llamado “archivo”. El propietario del directorio es “dave”, y el nombre del grupo al que pertenece el directorio también se denomina “dave”.
Los siguientes tres caracteres son los permisos de usuario para este directorio. Estos muestran que el propietario tiene permisos completos. El r
, w
y x
todos los personajes están presentes. Esto significa que el usuario dave tiene permisos de lectura, escritura y ejecución para ese directorio.
El segundo conjunto de tres caracteres son los permisos de grupo, estos son r-x
. Estos muestran que los miembros del grupo dave tienen permisos de lectura y ejecución para este directorio. Eso significa que pueden enumerar los archivos y su contenido en el directorio, y pueden cd
(ejecutar) en ese directorio. No tienen permisos de escritura, por lo que no pueden crear, editar o eliminar archivos.
El conjunto final de tres personajes también son r-x
. Estos permisos se aplican a las personas que no se rigen por los dos primeros conjuntos de permisos. Estas personas (llamadas “otras”) tienen permisos de lectura y ejecución en este directorio.
Por lo tanto, para resumir, los miembros del grupo y otros tienen permisos de lectura y ejecución. El propietario, un usuario llamado dave, también tiene permisos de escritura.
Para todos los demás archivos (excepto el archivo de script mh.sh), dave y los miembros del grupo dave tienen propiedades de lectura y escritura en los archivos, y los demás solo tienen permisos de lectura.
Para el caso especial del archivo de script mh.sh, el propietario dave y los miembros del grupo tienen permisos de lectura, escritura y ejecución, y los demás solo tienen permisos de lectura y ejecución.
Entenderg La sintaxis de permisos
Utilizar chmod
para establecer permisos, necesitamos decirle:
- Quién: Para quién estamos configurando los permisos.
- Qué: ¿Qué cambio estamos haciendo? ¿Estamos agregando o eliminando el permiso?
- Cuál: ¿Cuál de los permisos estamos configurando?
Utilizamos indicadores para representar estos valores y formamos “declaraciones de permisos” cortas como u+x
, donde “u” significa “usuario” (quién), “+” significa agregar (qué) y “x” significa el permiso de ejecución (cuál).
Los valores de “quién” que podemos utilizar son:
- u: Usuario, es decir, el propietario del archivo.
- g: Grupo, es decir, miembros del grupo al que pertenece el archivo.
- o: Otros, es decir, personas no gobernadas por el
u
yg
Permisos. - un: Todo, es decir, todo lo anterior.
Si no se utiliza ninguno de estos, chmod
se comporta como si “a
” se había utilizado.
Los valores de “qué” podemos utilizar son:
- –: Signo menos. Quita el permiso.
- +: Signo más. Concede el permiso. El permiso se agrega a los permisos existentes. Si desea tener este permiso y solo este conjunto de permisos, utilice el
=
opción, que se describe a continuación. - =: Es igual a signo. Establezca un permiso y elimine otros.
Los valores “que” podemos utilizar son:
- r: El permiso de lectura.
- w: El permiso de escritura.
- x: El permiso de ejecución.
Configuración y modificación de permisos
Digamos que tenemos un archivo donde todos tienen permisos completos sobre él.
ls -l new_ file.txt
Queremos que el usuario dave tenga permisos de lectura y escritura y que el grupo y otros usuarios solo tengan permisos de lectura. Podemos hacerlo usando el siguiente comando:
chmod u=rw,og=r new_file.txt
El uso del operador “=” significa que borramos los permisos existentes y luego establecemos los especificados.
vamos a comprobar el nuevo permiso en este archivo:
ls -l new_file.txt
Se han eliminado los permisos existentes y se han establecido los nuevos permisos, como esperábamos.
¿Qué tal agregar un permiso? sin ¿Eliminar la configuración de permisos existente? También podemos hacerlo fácilmente.
Digamos que tenemos un archivo de script que hemos terminado de editar. Necesitamos que sea ejecutable para todos los usuarios. Sus permisos actuales se ven así:
ls -l new_script.sh
Podemos agregar el permiso de ejecución para todos con el siguiente comando:
chmod a+x new_script.sh
Si echamos un vistazo a los permisos, veremos que el permiso de ejecución ahora se otorga a todos y los permisos existentes siguen vigentes.
ls -l new_script.sh
Podríamos haber logrado lo mismo sin la “a” en la declaración “a + x”. El siguiente comando habría funcionado igual de bien.
chmod +x new_script.sh
Configuración de permisos para varios archivos
Podemos aplicar permisos a varios archivos a la vez.
Estos son los archivos en el directorio actual:
ls -l
Digamos que queremos eliminar los permisos de lectura para los “otros” usuarios de los archivos que tienen una extensión “.page”. Podemos hacer esto con el siguiente comando:
chmod o-r *.page
Veamos qué efecto ha tenido:
ls -l
Como podemos ver, el permiso de lectura se ha eliminado de los archivos “.page” para la categoría “otros” de usuarios. Ningún otro archivo se ha visto afectado.
Si hubiéramos querido incluir archivos en subdirectorios, podríamos haber utilizado el -R
opción (recursiva).
chmod -R o-r *.page
Taquigrafía numérica
Otra forma de usar chmod
es proporcionar los permisos que desea otorgar al propietario, grupo y otros como un número de tres dígitos. El dígito más a la izquierda representa los permisos para el propietario. El dígito central representa los permisos para los miembros del grupo. El dígito más a la derecha representa los permisos para los demás.
Los dígitos que puede usar y lo que representan se enumeran aquí:
- 0: (000) Sin permiso.
- 1: (001) Permiso de ejecución.
- 2: (010) Permiso de escritura.
- 3: (011) Permisos de escritura y ejecución.
- 4: (100) Permiso de lectura.
- 5: (101) Permisos de lectura y ejecución.
- 6: (110) Permisos de lectura y escritura.
- 7: (111) Permisos de lectura, escritura y ejecución.
Cada uno de los tres permisos está representado por uno de los bits en el equivalente binario del número decimal. Así que 5, que es 101 en binario, significa leer y ejecutar. 2, que es 010 en binario, significaría el permiso de escritura.
Con este método, establece los permisos que desea tener; no agregue estos permisos a los permisos existentes. Entonces, si los permisos de lectura y escritura ya lo eran en su lugar, tendría que usar 7 (111) para agregar permisos de ejecución. El uso de 1 (001) eliminaría los permisos de lectura y escritura y agregaría el permiso de ejecución.
Agreguemos el permiso de lectura de nuevo en los archivos “.page” para la categoría de usuarios otros. También debemos establecer los permisos de usuario y grupo, por lo que debemos configurarlos en lo que ya son. Estos usuarios ya tienen permisos de lectura y escritura, que es 6 (110). Queremos que los “otros” tengan lectura y permisos, por lo que deben establecerse en 4 (100).
El siguiente comando logrará esto:
chmod 664 *.page
Esto establece los permisos que requerimos para el usuario, los miembros del grupo y otros a lo que requerimos. Los usuarios y miembros del grupo tienen sus permisos restablecido a lo que ya eran, y los demás tienen el permiso de lectura restaurado.
ls -l
Opciones avanzadas
Si usted Lea la página del man para chmod
verá que hay algunas opciones avanzadas relacionadas con los bits SETUID y SETGID, y con la eliminación restringida o el bit “pegajoso”.
Para el 99% de los casos necesitarás chmod
para, las opciones descritas aquí lo tendrán cubierto.