
Es muy importante modificar permisos para archivos y directorios en Linux, ya que no todos los archivos pueden ser utilizados por el público o un usuario promedio no debería editar los archivos del sistema operativo. Es muy importante la seguridad para poder acceder a ellos, sobre todo cuando compartimos un equipo o utilizamos un servidor que se encuentra en intranet (y por supuesto si tiene acceso a internet).
Para garantizar un acceso seguro, se requieren definir diferentes roles para los diferentes usuarios del sistema, y además los archivos y directorios de acceso deben tener diferentes permisos para que los usuarios los utilicen.
Definir permisos en los archivos y directorios con chmod
El comando para ver los permisos que el usuario tiene para algún archivo o directorio es
El comando para cambiar permisos para cualquier distribución en Linux es chmod. Con éste comando usted puede cambiar los permisos de lectura, escritura y ejecución que algún usuario tiene para uso del archivo indicado.
ls -l /ruta/archivo
En donde podemos ver un conjunto de 9 letras rwxrwxrwx, o bien algunos guiones. Éstas letras significan los permisos que tiene un usuario, grupo y público sobre el archivo o directorio mostrado.
Existen dos formas para asignar o quitar permisos , cambiando un permiso para todos los usuarios (por medio de + y -), o bien designando permisos específicos (forma octal). Ambos casos los mostraremos a continuación:
Cambiar un atributo en chmod
Se utiliza el signo de + para agregar un permiso y el signo de – para quitar un atributo para todos los usuarios en el archivo o directorio especificado, los permisos pueden ser: r para lectura, w para escritura y x para ejecución, el comando para ésta oeración es:
chmod (+ o -)(r, w o x) archivo
Por ejemplo, para agregar el atributo de escritura al archivo ejemplo.txt, el comando a ejecutar sería el siguiente:
chmod +w ejemplo.txt
Y para eliminar el permiso de ejecución para todos los usuarios, ejecutamos:
chmod -x ejemplo.txt
Modificar los atributos de un archivo a la medida
Para modificar los permisos para archivos y directorios en Linux se requieren cambiar los atributos mostrados en el párrafo anterior, modifican los permisos para todos los usuarios, sin embargo, por medidas de seguridad es mala práctica definir los mismos permisos para todos los usuarios, para ello es necesario definir los permisos tanto para el usuario, para el grupo y para el público.
Formación de permisos rwx
Cada permiso es representado por un número octal, el cuál visto como bits, cada uno de ellos representa un valor dentro de los permisos, para cada bit tenemos lo siguiente: si se trata de cero, no hay permiso y si es uno, si hay permiso, tal y como se muestra a continuación:
- 000 (valor 0) -> No lectura, No esritura, No ejecución
- 001 (valor 1) -> No lectura, No escritura, Si ejecución
- 010 (valor 2) -> No lectura, Si escritura, No ejecución
- 011 (valor 3) -> No lectura, Si escritura, Si ejecución
- 100 (valor 4) -> Si lectura, No escritura, No ejecución
- 101 (valor 5) -> Si lectura, No escritura, Si ejecución
- 110 (valor 6) -> Si lectura, Si escritura, No ejecución
- 111 (valor 7) -> Si lectura, Si escritura, Si ejecución
Los valores entre paréntesis, corresponden al valor octal, el cuál representa un valor de permiso que se asigna a cada tipo de usuario.
Asignación de permisos para usuarios, grupos y público
Siguiendo la lógica del párrafo anterior, cada valor octal representa un permiso, en donde tenemos tres valores (0-7)(0-7)(0-7), siendo el primero los permisos para el usuario, el segundo los permisos para el grupo y el tercero los permisos para el público.
Al componer éstos permisos, la asignación de permisos se hace así:
chmod xxx ejemplo.txt
Por ejemplo, si queremos establecer permisos:
- Usuario: si lectura, si escritura y si ejecución
- Grupo: si lectura, no escritura y no ejecución
- Público: no lectura, no escritura y no ejecución
El comando sería:
chmod 740 ejemplo.txt
Y así se asignan los permisos para un archivo o directorio, sin embargo, en el caso se directorios se recomienda la opción -R, para cambiar los permisos de los archivos de allí en forma recursiva:
chmod -R 740 /home/pedro