Luego de vario tiempo de ausencia, me puse a pensar que nota podría resultar interesante para los lectores. Luego de varios cafés, charlas y cerveza con papas de por medio, les doy la siguiente guía.
Una de las cualidades más importantes del Sistema Operativo Linux es la cualidad que se le puede dar a un archivo. Cuando hablamos de cualidad estamos hablando del “atributo” que le damos a dicho archivo.
Antes de llegar a los atributos en cuestión vamos a hacer un pequeño repaso por una serie de permisos que podemos darles a los archivos y carpetas para facilitarnos algunas tareas y mejorar la seguridad de otras:
Dentro del sistema, tenemos la posibilidad de utilizar los permisos SUID (Set User ID). Este permiso especial se le asigna a un ejecutable permitiendo que siempre dicho programa corra con los privilegios del propietario del dicho archivo. Tiene un valor simbólico s o numérico de 4000.
Por ejemplo si tenemos un archivo que tiene los permisos 511 y le aplicamos los permisos SUID de la siguiente manera:
ls -l (del archivo passwd)
-r-x–x–x 1 root root 18992 Jun 15 2011 /usr/bin/passwd
Opción 1: # chmod u+s /usr/bin/passwd
Opción 2: # chmod 4511 /usr/bin/passwd
Luego de dicho parámetro los permisos listados se verán de la siguiente manera:
ls -l (del archivo passwd)
-r-s–x–x 1 root root 18992 Jun 15 2011 /usr/bin/passwd
Hay que tener siempre cuidado con los archivos a los cuales aplicamos este permiso ya que puede terminar siendo contraproducente.
También tenemos el permiso SGID (Set Group ID). Asigna permisos especiales a un archivo o carpeta.
- Archivo: Cualquier usuario puede ejecutarlo como si fuera parte del grupo.
- Carpeta: Cambia el grupo propietario usado para los archivos posteriormente creados en dicho directorio por cualquier usuario al de dicho directorio.
El valor simbólico es s y en octal 2000.
Opción 1: chmod 2755 /home/data
Opción 2: chmod g+s /bin/wc
Por último en permisos tenemos el conocido Sticky bit con un valor simbólico t y un octal de 1000. Este permiso también es aplicado a archivos y carpetas.
- Archivos: Hace que el archivo o ejecutable sea cargado en memoria para ser posteriormente accedido de manera más rápida.
- Carpeta: Previene que un usuario elimine un archivo del cual no es propietario.
Opción 1: chmod 1666 /data/store.txt
Opción 2: chmod o+t /bin/bash
Ya comentado esto, podemos pasar a los atributos de los archivos. Junto con los permisos estándar no hay otro sistema utilizable para cambiar la forma en la que un archivo puede ser utilizado. Los atributos no son mostrados con el comando “ls”. Para ello debemos utilizar el comando “lsattr” y para asignar o quitar atributos el comando “chattr”. Los atributos que podemos agregar, o quitar son:
- A: La fecha del último acceso no es actualizada.
- a: El archivo solo puede ser abierto en modo adjuntar para escritura. Suele ser util para evitar que intrusos remuevan rastros de sus pasos.
- c: Establece que el archivo es automáticamente comprimido por el Kernel.
- D: Cuando el directorio con este atributo es modificado, los cambios son escritos de forma sincrónica en el disco. Es similar a la opción del comando mount “dirsync”, pero aplicado al subconjunto de ficheros.
- d: Establece que el fichero no sea candidato para ser respaldado cuando es ejecutado el programa dump.
- i: Con este atributo el archivo no puede ser, modificado, eliminado, renombrado ni linkeado y tampoco puede escribirse datos en el mismo. Ni siquiera por el usuario root, si o si, debe eliminarse dicho atributo para hacer cualquier acción mencionada sobre el archivo.
- j: En los sistemas de archivo ext3, cuando se monta con las opciones “data=ordered” o “data=writeback” se establece que el registro por diario. Cuando el sistema es montado por defecto con la opción “data=journal” este atributo no tiene efecto.
- s: Cuando un archivo con este atributo es borrado, los bloques del disco son reemplazados con ceros, de modo que los datos no puedan ser recuperados.
- S: Cuando se aplica al archivo los datos son escritos en el disco de forma sincrónica, es equivalente a la opción “sync” del comando mount. Al ser utilizado no se cachea la información escribiendo la misma directamente en el disco de forma más rápida.
- T: Solo se puede utilizar en Kernels 2,6,x. Está diseñado para indicar la parte superior de las jerarquías del directorio. El sistema de archivos sitúa los directorios más cerca permitiendo un uso más rápido del árbol de directorios.
- t: El archivo con este atributo no tendrá un fragmento de bloque parcial al final del archivo combinado con otros archivos.
- u: Cuando un archivo con este atributo es borrado, su contenido es salvado. Esto permite al usuario deshacer este borrado.
Teniendo en cuenta todas estas posibilidades, podemos configurar de una forma mucho más personalizada el como queremos que funcionen los archivos y carpetas dentro de nuestro sistema.
Espero que les haya sido de utilidad.
Cualquier consulta me la pueden enviar a info@nicolasventre.com
Saludos!