En GNU/Linux, los permisos o derechos que los usuarios pueden tener sobre determinados archivos contenidos en él se establecen en tres niveles claramente diferenciados. Estos tres niveles son los siguientes: ~$ Permisos del propietario. ~$ Permisos del grupo. ~$ Permisos del resto de usuarios (o también llamados “los otros”). Para tener claros estos conceptos, en los sistemas en red (como lo es el pingüino) siempre existe la figura del administrador, superusuario o root. Este administrador es el encargado de crear y dar de baja a usuarios, así como también, de establecer los privilegios que cada uno de ellos tendrá en el sistema. Estos privilegios se establecen tanto para el directorio home de cada usuario como para los directorios y archivos a los que el administrador decida que el usuario pueda acceder. Permisos del propietario El propietario es aquel usuario que genera o crea un archivo/carpeta dentro de su directorio de trabajo (home), o en algún otro directorio sobre el que tenga derechos. Cada usuario tiene la potestad de crear, por defecto, los archivos que quiera dentro de su directorio de trabajo. En principio, él y solamente él será el que tenga acceso a la información contenida en los archivos y directorios que hay en su directorio home. Permisos del grupo Lo más normal es que cada usuario pertenezca a un grupo de trabajo. De esta forma, cuando se gestiona un grupo, se gestionan todos los usuarios que pertenecen a éste. Es decir, es más fácil integrar varios usuarios en un grupo al que se le conceden determinados privilegios en el sistema, que asignar los privilegios de forma independiente a cada usuario. Permisos del resto de usuarios Por último, también los privilegios de los archivos contenidos en cualquier directorio, pueden tenerlos otros usuarios que no pertenezcan al grupo de trabajo en el que está integrado el archivo en cuestión. Es decir, a los usuarios que no pertenecen al grupo de trabajo en el que está el archivo, pero que pertenecen a otros grupos de trabajo, se les denomina resto de usuarios del sistema. Y como podemos ver los permisos en Linux? muy sencillo unicamente escribimos en la terminal ls -l y nos aparecera algo similar a esto: Cada archivo en GNU/Linux queda identificado por 10 caracteres mismos a los que se les denomina máscara. De estos 10 caracteres, el primero (de izquierda a derecha) hace referencia al tipo de archivo. Los 9 siguientes, de izquierda a derecha y en bloques de 3, hacen referencia a los permisos que se le conceden, respectivamente, al propietario, al grupo y al resto u otros. El primer carácter de los archivos puede ser el siguiente: Permiso -Archivo d Directorio b Archivo de bloques especiales (Archivos especiales de dispositivo) c Archivo de caracteres especiales (Dispositivo tty, impresora…) l Archivo de vinculo o enlace (soft/symbolic link) p Archivo especial de cauce (pipe o tubería) Los siguientes nueve caracteres son los permisos que se les concede a los usuarios del sistema. Cada tres caracteres, se referencian los permisos de propietario, grupo y resto de usuarios. Los caracteres que definen estos permisos son los siguientes: Permiso - Sin permiso r Permiso de lectura w Permiso de escritura x Permiso de ejecución Tomemos como ejemplo el archivo “examples.desktop”. Observemos que aparece de la siguiente manera: -rw-r--r-- … examples.desktop. Veamos más a fondo. Tipo - Usuario rw- Grupo r-- Resto de usuarios (otros) r-- Nombre del archivo examples.desktop Esto significa que: ~$ Tipo: Archivo ~$ El usuario puede: Leer (visualizar el contenido) y escribir (modificar) el archivo. ~$ El grupo al que pertenece el usuario puede: Leer (únicamente) el archivo. ~$ Otros usuarios pueden: Leer (únicamente) el archivo. Asignación de permisos El comando chmod (“change mode”) permite modificar la máscara para que se puedan realizar más o menos operaciones sobre archivos o directorios, dicho de otra forma, con chmod puedes quitar o eliminar derechos a cada tipo de usuarios. Si no se especifica el tipo de usuario al que queremos quitar, poner o asignar privilegios, lo que sucederá al realizar la operación es afectar a todos los usuarios simultáneamente. Lo básico que hay que recordar es que le demos dar o quitar permisos en estos niveles: 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 Ejemplos: Dar permiso de ejecución al dueño: $ chmod u+x komodo.sh Quitar permiso de ejecución a todos los usuarios: $ chmod -x komodo.sh Dar permiso de lectura y escritura a los demás usuarios: $ chmod o+r+w komodo.sh Dejar solo permiso de lectura al grupo al que pertenece el archivo: $ chmod g+r-w-x komodo.sh Permisos en formato numérico octal Hay otra forma de utilizar el comando chmod que, para muchos usuarios, resulta “más cómoda”, aunque a priori sea algo más compleja de entender, esta forma es el formato octal. La combinación de valores de cada grupo de los usuarios forma un número octal, el bit “x” es 20 es decir 1, el bit w es 21 es decir 2, el bit r es 22 es decir 4, tenemos entonces: ~$ r = 4 ~$ w = 2 ~$ x = 1 La combinación de bits encendidos o apagados en cada grupo da ocho posibles combinaciones de valores, es decir la suma de los bits encendidos: - - -su valor es: 0 y significa no se tiene ningún permiso - - xsu valor es: 1 y significa solo permiso de ejecución - w -su valor es: 2 y significa solo permiso de escritura - w x su valor es: 3 y significa permisos de escritura y ejecución r - -su valor es: 4 y significa solo permiso de lectura r - x su valor es: 5 y significa permisos de lectura y ejecución r w - su valor es: 6 y significa permisos de lectura y escritura r w x su valor es: 7 y significa todos los permisos establecidos, lectura, escritura y ejecución Cuando se combinan los permisos del usuario, grupo y otros, se obtienen un número de tres cifras que conforman los permisos del archivo o del directorio. Ejemplos: rw- --- -– su valor es: 600 y significaEl propietario tiene permisos de lectura y escritura rwx --x --x su valor es: 711 y significaEl propietario lectura, escritura y ejecución, el grupo y otros solo ejecución rwx r-x r-xsu valor es: 755 y significa El propietario lectura, escritura y ejecución, el grupo y otros pueden leer y ejecutar el archivo rwx rwx rwx su valor es: 777 y significaEl archivo puede ser leído, escrito y ejecutado por quien sea r-- --- -– su valor es: 400 y significaSolo el propietario puede leer el archivo, pero ni el mismo puede modificarlo o ejecutarlo y por supuesto ni el grupo ni otros pueden hacer nada en el rw- r-- ---su valor es: 640 y significaEl usuario propietario puede leer y escribir, el grupo puede leer el archivo y otros no pueden hacer nada