2. HIDTA AND OCDETF PROGRAM COMPONENTS
2.3 The OCDETF Program
2.3.3 OCDETF Program Participants
Introducción.
Tanto chown como chgrp forman parte del paquete coreutils, el cual se instala de forma predeterminada en todas las distribuciones de GNU/Linux debido a que se trata componente esencial.
URL: ftp://alpha.gnu.org/gnu/coreutils/ Uso de chown.
Puede utilizar chown para cambiar el propietario al cual pertenece un archivo o directorio. Puede especificarse tanto el nombre de un usuario, así como un número de identidad de usuario (UID). De manera opcional, utilizando un signo de dos puntos (:) o bien un punto (.), permite especificar también un nombre de grupo.
El manual completo de chown puede consultarse ejecutando lo siguiente: man 1 chown
Opciones.
Opcion Resultado
-R De manera descendente cambia el propietario de los directorios junto con todos sus contenidos. De manera opcional también permite cambiar el grupo al cual pertenecen.
-v (o --verbose) Salida más descriptiva.
--version Ver el número de versión del programa.
--dereference Actúa sobre enlaces simbólicos en lugar de hacerlo sobre el destino.
-h (o --no- dereference)
En el caso de enlaces simbólicos, cambia el propietario del destino en lugar del propio enlace.
--reference Cambia el el propietario de un archivo, tomando como referencia el propietario de otro.
Utilización.
Uso de chgrp.
Puede utilizar chgrp para cambiar el grupo al cual pertenece un archivo o directorio. Puede especificarse tanto el nombre de un grupo, así como un número de identidad de grupo (GID).
El manual completo de chgrp puede consultarse ejecutando lo siguiente: man 1 chgrp
Opciones.
Opción Resultado
-R De manera descendente cambia el grupo al cual pertenecen los directorios junto con todos sus contenidos.
-v (o --verbose) Salida de chgrp más descriptiva. --version Ver el número de versión del programa.
--dereference Actúa sobre enlaces simbólicos en lugar de hacerlo sobre el destino.
-h (o --no- dereference)
En el caso de enlaces simbólicos cambia el grupo del destino en lugar del propio enlace.
--reference Cambia el grupo de un archivo tomando como referencia el propietario de otro.
Utilización.
chgrp [opciones] archivo(s) o directorio(s) Ejemplos.
Ejecute lo siguiente para realizar el cambio de propietario a fulano sobre el archivo algo.txt. chown fulano algo.txt
Ejecute lo siguiente para realizar el cambio de propietario a fulano y el grupo desarrollo sobre el archivo algo.txt.
chown fulano:desarrollo algo.txt
chown -R fulano:mail Mail
Ejecute lo siguiente para realizar el cambio de grupo a desarrollo sobre el archivo algo.txt. chgrp desarrollo algo.txt
Permisos del sistema de archivos.
Introducción.En los sistemas operativos tipo POSIX cada elemento del sistema de archivos, como archivos, directorios, enlaces simbólicos, etc., tiene la característica de poseer permisos que lo ubican dentro del mismo. Éstos sirven como uno más de los niveles de seguridad del sistema operativo al impedir que cualquier usuario pueda leer, escribir, ejecutar o acceder a dichos archivos y directorios de manera arbitraria. Estos permisos vistos de manera básica son: lectura (r, read), escritura (w, write) y ejecución (x, execution) y se agrupan en bloques (rwx) para 3 diferentes clases (usuario, grupo y otros).
Los permisos de acceso de cada archivo y directorio del sistema son mostrados por un conjunto de 10 caracteres, los cuales proporcionan información acerca del tipo de elemento, junto con permisos para el usuario y grupo propietario para leer, escribir y ejecutar, como se muestra en el siguiente ejemplo:
-rwxr-xr-x 1 fulano fulano 0 jul 31 18:11 algo.txt
La asignación de permisos de acceso (de lectura, escritura y ejecución) pueden gestionarse a través de modos, los cuales consisten de combinaciones de números de tres dígitos —
usuario, grupo y otros— que son manipulados a través de chmod y setfacl. Notación simbólica.
El esquema de notación simbólica se compone de 10 caracteres, donde el primer carácter indica el tipo de archivo:
Valor Descripción
- Archivo regular.
d Directorio.
b Archivo especial como dispositivo de bloque.
c Archivo de carácter especial l Enlace simbólico.
Valor Descripción
p Tubería nombrada (FIFO) s Zócalo de dominio (socket)
Como se mencionó anteriormente, cada clase de permisos es representada por un conjunto de tres caracteres. El primer conjunto de caracteres representa la clase del usuario, el segundo conjunto de tres caracteres representa la clase del grupo y el tercer conjunto representa la clase de «otros» (resto del mundo). Cada uno de los tres caracteres representa permisos de lectura, escritura y ejecución, respectivamente y en ese orden.
Ejemplos:
Permisos Descripción
drwxr-xr-x Directorio con permiso 755
crw-rw-r-- Archivo de carácter especial con permiso 664. srwxrwxr-x Zócalo con permiso 775.
prw-rw-r-- Tubería (FIFO) con permiso 664. -rw-r--r-- Archivo regular con permiso 644.
Notación octal.
La notación octal consiste de valores de tres a cuatro dígitos en base-8. Con la notación octal de tres dígitos cada número representa un componente diferente de permisos a establecer: clase de usuario, clase de grupo y clase de otros (resto del mundo) respectivamente. Cada uno de estos dígitos es la suma de sus bits que lo componen (en el sistema numeral binario). Como resultado, bits específicos se añaden a la suma conforme son representados por un numeral:
• El Bit de ejecución (acceso en el caso de directorios) añade 1 a la suma. • El bit de escritura añade 2 a la suma
• El bit de lectura añade 4 a la suma.
Estos valores nunca producen combinaciones ambiguas y cada una representa un conjunto de permisos específicos. De modo tal puede considerarse la siguiente tabla:
Valor Permiso Descripción
0 --- Nada
Valor Permiso Descripción
2 -w- Sólo escritura
3 -wx Escritura y ejecución de archivos o acceso a directorios
4 r-- Sólo lectura
5 r-x Lectura y ejecución de archivos o acceso a directorios 6 rw- Lectura y escritura
7 rwx Lectura, escritura y ejecución de archivos o acceso a directorios
Cabe señalar que el permiso 3 (wx) es el resultado de 1+2 (w+x), que el permiso 5 (rx) es el resultado de 4+1 (r+x), que el permiso 6 (rw) es el resultado de 4+2 (r+w) y que el permiso 7 (rwx) es el resultado de 4+2+1 (r+w+x).
Máscara de usuario.
La máscara de usuario (umask, abreviatura de user mask) es una función que establece los permisos predeterminados para los nuevos archivos y directorios creados en el sistema. Puede establecerse en notación octal de tres o cuatro dígitos o bien en notación simbólica. Puede establecerse cualquier valor para umask, pero debe tomarse en consideración que ésta jamás permitirá crear nuevos archivos ejecutables.
Cuando se utiliza la notación octal de cuatro dígitos, el primer dígito siempre corresponde a los permisos especiales, pero el valor de éste siempre será 0; el segundo dígito corresponde a la máscara de la clase otros; el tercer dígito corresponde a la máscara para la clase de grupo; y el cuarto dígito corresponde a la máscara para la clase de usuario.
.--- Permisos especiales (siempre es 0 en umask) | .--- Clase de otros | | .--- Clase de grupo | | | .--- Clase de usuario | | | | ↓ ↓ ↓ ↓ 0 0 2 2
El valor de la máscara de usuario, que se asigna ejecutando umask, corresponde a los bits contrarios del permiso predeterminado que se quiera asignar. Es decir, si por ejemplo se quiere asignar una máscara de usuario equivalente a 0775 (rwxrwxr-x), el valor de la
máscara de usuario corresponderá a 0002 (el resultado de la operación 777 menos 775), que será lo mismo que definir u=rwx,g=rwx,o=rx.
Si por ejemplo se quiere asignar una máscara de usuario equivalente a 0744 (rwxr--r--), el valor de la máscara de usuario corresponderá a 0033 (el resultado de la operación 777 menos 744), que será lo mismo que definir u=rwx,g=r,o=r.
Los valores nunca producen combinaciones ambiguas y cada una representa un conjunto de permisos específicos. De modo tal puede considerarse la siguiente tabla:
Valor octal Valor simbólico Descripción
0 rwx Lectura, escritura y acceso a directorios
1 rw- Lectura y escritura
2 r-x Lectura y acceso a directorios
3 r-- Sólo lectura
4 -wx Escritura y acceso a directorios
5 -w- Sólo escritura
6 --x Sólo acceso a directorios
7 --- Nada
El valor predeterminado de la máscara de usuario del sistema en CentOS, Fedora™, Red Hat™ Enterprise Linux, openSUSE™ y SUSE™ Linux Enterprise es 0022, es decir se asigna permiso 0755 (-rwxr-xr-x) para nuevos directorios y 0644 (-rw-r--r--) para nuevos archivos. El sistema jamás permite crear nuevos archivos con atributos de ejecución. El valor predeterminado se define en una variable de entorno del archivo /etc/profile y puede ser cambiado por el que el administrador del sistema considere pertinente. El valor también puede establecerse por usuario en el archivo ~/.bash_profile (CentOS, Fedora™ y Red Hat™ Enterprise Linux) o bien en el archivo ~/.profile (openSUSE™ y SUSE™ Linux Enterprise).
El valor predeterminado de la máscara de usuario utilizado por useradd, para la creación de directorios de inicio de usuarios, se define en el archivo /etc/login.defs.
En CentOS, Fedora™ y Red Hat™ Enterprise Linux el valor predeterminado de la máscara de usuario utilizada por useradd es 0077, es decir que los directorios de inicio de cada usuario que sea creado en el sistema tendrá un permiso 0700 (rwx---).
En openSUSE™ y SUSE™ Linux Enterprise el valor predeterminado de la máscara de usuario utilizada por useradd es 0022, es decir 0755 (rwxr-xr-x), debido a que la variable UMASK está deshabilitada con una almohadilla en el archivo /etc/login.defs, pues se recomienda se defina ésta variable en el archivo /etc/default/useradd. Ejemplo:
HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/bash SKEL=/etc/skel CREATE_MAIL_SPOOL=yes UMASK=0077
Para determinar el valor en notación octal para la máscara de usuario predeterminada del sistema, ejecute umask sin opciones ni argumentos.
umask
Para determinar el valor en notación simbólica para la máscara de usuario predeterminada del sistema, ejecute umask con la opción -S (mayúscula), sin argumentos.
umask -S
Para cambiar la mascara de usuario en la sesión activa y procesos hijos, se requiere ejecutar umask con el valor octal deseado. En el siguiente ejemplo, se definirá 0002 (0775, rwxrwxr- x) como máscara de usuario:
umask 0002
Lo anterior también se puede hacer utilizando notación simbólica: umask u=rwx,g=rwx,o=rx
Uso de chmod.
chmod [opciones] modo archivo Ejecute lo siguiente: mkdir -p ~/tmp/ touch ~/tmp/algo.txt ls -l ~/tmp/algo.txt chmod 755 ~/tmp/algo.txt ls -l ~/tmp/algo.txt
chmod u=rw,g=r,o=r ~/tmp/algo.txt ls -l ~/tmp/algo.txt
chmod u=rw,g-r,o-r ~/tmp/algo.txt ls -l ~/tmp/algo.txt
chmod u+x,g+rx,o+rx ~/tmp/algo.txt ls -l ~/tmp/algo.txt
chmod a-x ~/tmp/algo.txt ls -l ~/tmp/algo.txt
chmod a-w ~/tmp/algo.txt ls -l ~/tmp/algo.txt
La salida debe ser similar a la siguiente:
Opciones de chmod. -R
Cambia permisos de forma descendente en un directorio dado. Es la única opción de los estándares POSIX.
-c
Muestra cuáles archivos han cambiado recientemente en una ubicación dada -f
Omite mostrar errores de archivos o directorios que haya sido imposible cambiar -v
Para obtener una descripción completa del uso de chmod, ejecute: man 1 chmod
Listas de control de acceso y sudo de getfacl y setfacl.
Introducción.Los procedimientos de este documento requieren haber estudiado y comprendido previamente los conceptos del documento titulado «Permisos del sistema de archivos.» Este documento describe el uso de listas de control de acceso (ACL, access control lists), que se utilizan para controlar los permisos de acceso de los archivos y directorios con mayor exactitud. Cada objeto del sistema puede ser asociado a una ACL que controla el acceso de modo discrecional hacia ese objeto. Además, los directorios pueden tener asociado un ACL que controla los permisos de acceso iniciales para los objetos creados en el interior de éste, a los que se le denomina ACL predeterminado.
En resumen, cuando el sistema de archivos ha sido montado con la opción acl, es posible asignar permisos de lectura, escritura y ejecución por usuarios y/o grupos. El soporte necesario viene habilitado de modo predeterminado en CentOS, Fedora™, Red Hat™ Enterprise Linux, openSUSE™ y SUSE™ Linux Enterprise 11.
Nota.
En el caso de SUSE™ Linux Enterprise 10, se requiere añadir la opción acl en la columna de opciones de la configuración de los sistemas de archivos presentes en el sistema, editando el archivo /etc/fstab:
vi /etc/fstab Ejemplo:
/dev/sda1 / ext3 acl,user_xattr 1 2 /dev/sda2 /home ext3 acl,user_xattr 1 2 /dev/sda3 /var ext3 acl,user_xattr 1 2
Para aplicar los cambios de manera inmediata, sin necesidad de reiniciar, se ejecutaría: mount -o remount,acl,user_xattr /
Equipamiento lógico necesario.
En ALDOS, CentOS, Fedora™ y Red Hat™ Enterprise Linux.
La instalación estándar incluye el paquete acl. Si se realiza una instalación mínima, es necesario ejecutar lo siguiente:
yum -y install acl
Si se utiliza ALDOS, CentOS 6, Red Hat™ Enterprise Linux 6 —utilizando los almacenes yum de AL-Server— o Fedora™ se puede instalar además el paquete eiciel, el cual permite gestionar las listas de control de acceso desde el administrador de archivos (Nautilus) del escritorio de GNOME.
yum -y install eiciel Procedimiento.
Cuando el soporte para listas de control de acceso está habilitado en los sistemas de archivos y el paquete acl está instalado, se pueden utilizar lo siguiente:
getfacl
Se utiliza para determinar los permisos establecidos en las listas de control de acceso de un archivo o directorio dado.
setfacl
Se utiliza para cambiar los permisos en las listas de control de acceso de un archivo o directorio dado.
Para obtener una descripción completa del uso de getfacl, ejecute: man 1 getfacl
Para obtener una descripción completa del uso de setfacl, ejecute: man 1 setfacl
Para obtener una descripción completa del formato de las listas de control de acceso, ejecute:
Para obtener los atributos de las listas de control de acceso de un archivo o directorio
particular, se ejecuta getfacl con la ruta del archivo o directorio como argumento. Ejemplo: getfacl /home/fulano
Lo anterior devolvería una salida similar la siguiente:
getfacl: Eliminando '/' inicial en nombres de ruta absolutos # file: home/fulano # owner: fulano # group: fulano user::rwx group::--- other::---
Lo anterior muestra que sólo el propietario del directorio tiene permisos de lectura, escritura y acceso.
Para lograr que un usuario en particular pueda acceder también a este directorio, se ejecuta setfacl, con la opción -m para modificar la lista de control de acceso,
[u,g,o]:[usuario,grupo]:[r,w,x] y la ruta del directorio como argumentos. Ejemplo: setfacl -m u:zutano:rX /home/fulano
En el ejemplo anterior se utilizó X mayúscula para indicar que sólo se aplicará el bit de acceso de a directorios evitando aplicar el bit de ejecución a los archivos.
Nota.
Si lo prefiere, también pude utilizar notación octal:
setfacl -m u:zutano:5 /home/fulano
Lo anterior establece que se añaden permisos de lectura y acceso al directorio /home/fulano para el usuario zutano.
Para verificar, ejecute de nuevo getfacl con la ruta del directorio modificado como argumento:
getfacl /home/fulano
getfacl: Eliminando '/' inicial en nombres de ruta absolutos # file: home/fulano # owner: fulano # group: fulano user::rwx user:zutano:r-x group::--- mask::r-x other::---
Pueden asignarse permisos diferentes para otros usuarios. Ejemplo: setfacl -m u:perengano:rwX /home/fulano
Lo anterior establece que se añaden permisos de lectura, escritura y acceso al directorio /home/fulano para el usuario perengano. Si utiliza X mayúscula se indicará que se trata específicamente del bit de acceso en lugar de acceso y ejecución.
Para verificar lo anterior, se ejecuta de nuevo getfacl con la ruta del directorio modificado como argumento:
getfacl /home/fulano
Lo anterior devolvería una salida similar a la siguiente: getfacl: Eliminando '/' inicial en nombres de ruta absolutos # file: home/fulano # owner: fulano # group: fulano user::rwx user:perengano:rwx user:zutano:r-x group::--- mask::rwx other::---
Estos permisos que se establecieron en la lista de control de acceso del directorio /home/fulano son exclusivamente para éste. Cualquier nuevo archivo o directorio creado carecerá de estos nuevos permisos. Si se desea que éstos permisos se vuelvan los predeterminados para los nuevos archivos y directorios que sean creados en lo sucesivo dentro del directorio /home/fulano, se ejecuta setfacl pero añadiendo la opción -d para definir que serán los permisos predeterminados para nuevos archivos y directorios. Ejemplo:
setfacl -d -m u:zutano:rX /home/fulano setfacl -d -m u:perengano:rwX /home/fulano
Se recomienda utilizar X mayúscula para indicar que sólo se aplicará el bit de acceso de a directorios evitando aplicar el bit de ejecución a los archivos.
Nota.
Lo anterior también se puede hacer en notación octal: setfacl -d -m u:zutano:5 /home/fulano
setfacl -d -m u:perengano:7 /home/fulano
Y la opción -d también se puede integrar a los argumentos: setfacl -m d:u:zutano:5 /home/fulano
setfacl -m d:u:perengano:7 /home/fulano
Y además simplificar todo lo anterior en una sola operación: setfacl -m d:u:zutano:5,d:u:perengano:7 /home/fulano
Para verificar todo lo anterior, se ejecuta de nuevo getfacl con la ruta del directorio modificado como argumento:
getfacl /home/fulano
Lo anterior devolvería una salida similar a la siguiente: getfacl: Eliminando '/' inicial en nombres de ruta absolutos # file: home/fulano # owner: fulano # group: fulano user::rwx user:perengano:rwx user:zutano:r-x group::--- mask::rwx other::--- default:user::rwx default:user:perengano:rwx default:user:zutano:r-x default:group::--- default:mask::rwx default:other::---
Para aplicar los permisos de forma descendente, se ejecuta setfacl con la opción -R (mayúscula), la opción -m, [u,g,o]:[usuario,grupo]:[r,w,X,x] y la ruta del directorio como argumento. Ejemplo:
setfacl -R -m u:zutano:rX /home/fulano setfacl -R -m u:perengano:rwX /home/fulano
En el ejemplo anterior se utilizó X mayúscula para indicar que sólo se aplicará el bit de acceso de a directorios evitando aplicar el bit de ejecución a los archivos.
Nota.
También puede simplificar todo lo anterior en una sola operación: setfacl -R -m u:zutano:rX,u:perengano:rwX /home/fulano
En el ejemplo anterior se utilizó X mayúscula para indicar que sólo se aplicará el bit de acceso de a directorios evitando aplicar el bit de ejecución a los archivos.
Lo anterior asignaría permisos r-x para el usuario zutano y rwx para el usuario perengano sobre el directorio /home/fulano y todo su contenido, pero aplicando sólo el bit de acceso a directorios y evitando asignar bit de ejecución a los archivos.
Para eliminar los permisos de un usuario en particular de la lista de control de acceso de un directorio en particular, se ejecuta setfacl con la opción -x, el nombre del usuario o grupo y la ruta del directorio como argumento. Ejemplo:
setfacl -x perengano /home/fulano
Para hacer lo mismo, pero de forma descendente, se ejecuta setfacl con la opción -R (mayúscula), la opción -x, el nombre del usuario o grupo y la ruta del directorio como argumento. Ejemplo:
setfacl -R -x perengano /home/fulano
Para eliminar los permisos predeterminados en la lista de control de acceso, se ejecuta setfacl con la opción -k (--remove-default) y la ruta del directorio como argumento. Ejemplo:
Para eliminar todos los permisos en la lista de control de acceso, dejando todo como en el punto inicial, se ejecuta setfacl con la opción -b (--remove-all) y la ruta del directorio como argumento. Ejemplo:
setfacl -b /home/fulano
Para hacer lo mismo, pero de forma descendente, se ejecuta setfacl con la opción -R (mayúscula), la opción -b (--remove-all) y la ruta del directorio como argumento. Ejemplo:
setfacl -R -b /home/fulano
Para copiar la lista de control de acceso de un archivo y aplicarla en otro, se ejecuta: getfacl archivo1 | setfacl --set-file=- archivo2
Para copiar la lista de control de acceso principal como la lista de control de acceso predeterminada, se ejecuta:
getfacl --access /home/fulano | setfacl -d -M- /home/fulano
Uso de chattr.
Introducción. Acerca de chattr.
Puede utilizar chattr para cambiar los atributos de los sistemas de archivos ext2,ext3 y ext4. Desde cierto punto de vista, es análogo a chmod, pero con diferente sintaxis y opciones. Utilizado adecuadamente, dificulta las acciones en el sistema de archivos por parte de un intruso que haya logrado suficientes privilegios en un sistema.
En la mayoría de los casos, cuando un intruso consigue suficientes privilegios en un sistema, lo primero que hará será eliminar los registros de sus actividades modificando estructuras de los archivos de bitácoras del sistema y otros componentes. Utilizar chattr ciertamente es