Linux

Guía para pasar Linux con el prof. Coello [email protected] December 7, 2017 1 Introducción. Éste documento intenta cub

Views 552 Downloads 12 File size 210KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Guía para pasar Linux con el prof. Coello [email protected]

December 7, 2017

1

Introducción. Éste documento intenta cubrir el material para un curso semestral de Linux. El objetivo es dar respuesta a los problemas que ha generado su enseñanza en las carreras de informática en la sede Santiago Centro de Inacap. Éste documento es esencialmente, todo el material que el prof. Coello expone en su curso de Linux, pero profundizado los contenidos que nos han parecido más importantes. Hemos hecho un énfasis en la materia que es evaluada pero que no se pasa y los temas que se tratan rápidamente en el aula, de los que no queda registro y sobre los cuales no se puede volver a estudiar. La increíble tasa de reprobación en la sección impartida por el prof. Coello es injustificable. Con un promedio histórico del 10% de estudiantes aprobados por semestre es la más alta en toda la carrera y probablemente de todo Inacap. Situación incomprensible pues, a nivel introductorio, Linux no es difícil. Todo se resume a comprender la estructura básica del sistema de ficheros en Linux y saber qué es lo que exactamente hace cada comando. Las versiones que se utilizan en éste documento son CentOS 6.9 y Red Hat Enterprise Linux 7.3; no existe mayor diferencia entre ambas. De hecho, CentOS deriva de Redhat. Lo único un poco distinto es la forma en que se instalan los servidores. El detalle de la instalación de 19 servicios (que constituye la tarea de final del curso con el prof. Coello) se entrega en la última parte del documento. Trabajamos Linux en forma virtualizada bajo VMWare 12 PRO.

C.C. Santiago, 5 de Noviembre del 2017.

2

Contents 1 Poniendo a punto la máquina 1.1 Creación de una máquina virtual en 16 pasos . . . . . . . . . . . . 1.1.1 Cuando VMWare se detiene . . . . . . . . . . . . . . . . . . 1.2 Instalación de Red Hat Enterprise Linux 7.3 . . . . . . . . . . . . . 1.3 Instalación de CentOS 6.9 en un disco particionado . . . . . . . . 1.3.1 La instalación . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3.2 El particionado . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3.3 Últimas configuraciones . . . . . . . . . . . . . . . . . . . . 1.3.4 Ejercicio n°1. Genere una instalación personalizada con (Primera prueba del primer semestre del 2017) . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . las siguientes . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . características: . . . . . . . . . .

7 7 8 8 8 8 9 10 11

2 Lo básico, la estructura de archivos de linux y 39 comandos 2.1 Lo básico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.1 La tilde , el /home y el directorio raíz (/) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2 Las terminales en linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3 En linux, no es lo mismo la mayúscula que la minúscula . . . . . . . . . . . . . . . . . . . 2.1.4 Volver al directorio raíz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.5 Uso de man . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.6 Interrupción de procesos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.7 El editor de textos Nano . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.8 El autocompletar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.9 Para deslogearnos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.10 Apagar y reiniciar CentOS de manera ordenada . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.11 Para reiniciar nuestro SO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Configuraciones básicas de la consola . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.1 Cambio de sus colores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.2 Configuración de un mensaje de bienvenida permanente . . . . . . . . . . . . . . . . . . . 2.2.3 Configuración de la fecha a nuestro equipo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.4 Darle un nombre a nuestro equipo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3 La estructura de archivos en linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.1 Las rutas relativas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.2 Construcción de una estructura jerárquica de varios niveles . . . . . . . . . . . . . . . . . 2.3.3 Ejercicio n°2: Construya una estructura jerárquica. (Primera prueba del primer semestre del 2017) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.4 39 Comandos básicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.4.1 Ejercicio n°3. Practique la comandería básica. (Primera prueba del primer semestre del 2017) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

13 13 13 14 14 15 15 15 15 15 15 16 16 16 16 16 16 17 17 19 20

3 Variables de entorno

29

4 Usuarios y grupos 4.1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2 Comandos para la administración de usuarios y grupos . . . . . . . . . . . . . . . 4.3 El identificador de usuario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4 UGO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.5 Creación de usuarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.6 Práctica con usuarios y grupos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.7 Lo que sucede al crear usuarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.7.1 El comando chage. (Primera prueba del primer semestre del 2017) .

3

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

21 22 28

29 29 30 31 32 32 33 41 43

4.8 Los ficheros /sbin/nologin y /bin/false . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.8.1 Ejercicio n°4. Cree un usuario PEPITO con las siguientes características: (Primera prueba del primer semestre del 2017) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.9 El fichero /etc/login.defs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.10 El fichero /etc/skel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.10.1 Ejercicio n°5. Genere un guión tipo bash que sea aplicable para todos los futuros usuarios creados. (Primera prueba del primer semestre del 2017) . . . . . . . . . . . . . . . . . 4.11 Consideraciones finales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Administración de permisos para archivos y directorios 5.1 Permisos en archivos . . . . . . . . . . . . . . . . . . . . . 5.2 Permisos en directorios . . . . . . . . . . . . . . . . . . . . 5.3 Cambiar de propietario archivos o directorios . . . . . . 5.4 Cambiar de grupo archivos o directorios . . . . . . . . . 5.5 La estructura binaria de los permisos . . . . . . . . . . . 5.6 Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.6.1 Ejercicio 1 . . . . . . . . . . . . . . . . . . . . . . . 5.6.2 Ejercicio 2 . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

44 44 45 46 46 47 47 48 48 48 48 49 49 49 50

6 Programación de Scripts 6.1 Introducción a la Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2 Ejercicio: construya un script que despliegue información cada vez que inicie un nuevo usuario su sesión Segunda prueba del primer semestre del 2017 . . . . . . . . . . . . . . . . . . . . . . 6.3 Nuestro primer Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.4 Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

51 51

7 Empaquetar y comprimir archivos 7.1 Empaquetar archivos con el formato tar . . . . . . . . . . . . . . . . . 7.1.1 Empaquetar archivos . . . . . . . . . . . . . . . . . . . . . . . . 7.1.2 Desempaquetar archivos . . . . . . . . . . . . . . . . . . . . . . 7.1.3 Ver el contenido de los archivos sin desempaquetar . . . . . . 7.1.4 Ejemplo: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.2 Comprimir archivos con el formato gzip . . . . . . . . . . . . . . . . . 7.2.1 Comprimir un archivo . . . . . . . . . . . . . . . . . . . . . . . . 7.2.2 Descomprimir un archivo . . . . . . . . . . . . . . . . . . . . . . 7.3 Comprimir y empaquetar archivos con el formato tar.gz . . . . . . . 7.3.1 Comprimir y empaquetar archivos . . . . . . . . . . . . . . . . 7.3.2 Descomprimir y desempaquetar archivos . . . . . . . . . . . . 7.3.3 Ver el contenido de un archivo comprimido y empaquetado 7.4 Comprimir archivos y directorios con el formato zip . . . . . . . . . . 7.5 Comprimir archivos con el formato bz2 . . . . . . . . . . . . . . . . . . 7.6 Respaldos (backups) . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

58 58 58 58 58 58 59 59 59 59 59 60 60 60 60 60

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

8 Agendamiento con el demonio Cron 8.1 Modos de arranque en linux y configuración del arranque de Cron . . . . . . 8.2 Configuración de la hora y fecha de nuestro sistema . . . . . . . . . . . . . . . 8.3 Agendando una tarea en Cron . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.3.1 Editando el archivo /etc/crontab . . . . . . . . . . . . . . . . . . . . . . 8.4 Segunda prueba del primer semestre del 2017: Scripts, Compresiones, tos y Crond . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . empaquetamien. . . . . . . . . . . .

52 52 53

61 61 62 62 63 65

8.4.1 Programe un script de nombre backups.sh y posiciónelo en: /programas. Éste script debe ser capaz de respaldar de manera comprimida y empaquetada todo el directorio /etc. El nombre resultante del archivo debe ser: Backups[Nombre del Servidor][Ruta del directorio respaldado][HH-MM-SS][DD-MMAA].tar.gz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.4.2 La siguiente pregunta fué algo que nunca se vió en clases: ejecutar el cron el penúltimo día de cada mes. Programar una tarea cron que permita ejecutarla en el penúltimo día de cada mes del año (en una sola línea) a las 23:00 horas, enviando un email al término de la ejecución a la cuenta [email protected]. . . . 8.4.3 Desarrollar una tarea /programas/fecha.sh que permita imprimir la fecha y la hora en formato DD-MM-AAA-HH-MM-SS-NOMBRE-SERVIDOR-USUARIO (sic) en un archivo llamado /programas/fecha.log y programar un cron que se ejecute cada 5 minutos (a partir del minuto 0), todas las horas impares, de todos los meses impares y siempre y cuando sea jueves o viernes. /respaldodiario.sh . . . . . . . . . . . . . . . . . . . . . . . .

65

65

66

9 Formas de ver la información del sistema

66

10 Dispositivos: tipos y forma de montarlos

66

11 Particiones y formateo de discos

66

12 Instalación de 19 servicios en Linux 12.1 Instalación de CentOS 6.9 como servidor . . . . . . . . . . . . . . . . . . . . . . 12.1.1 Primeros pasos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.1.2 El particionado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.1.3 Configuración de CentOS como servidor . . . . . . . . . . . . . . . . . . 12.2 Configuración de red en Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.2.1 NAT y Bridge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.2.2 Configurar la tarjeta de red en Linux . . . . . . . . . . . . . . . . . . . . . 12.2.3 El comando service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.2.4 El comando chkconfig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.2.5 El comando kill . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.2.6 Levantar el cortafuegos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.3 Nociones básicas de direccionamiento IP . . . . . . . . . . . . . . . . . . . . . . . 12.4 Instalación del DNS (falta el dinámico: DDNS) . . . . . . . . . . . . . . . . . . 12.4.1 Teoría: como funciona un dns . . . . . . . . . . . . . . . . . . . . . . . . . 12.4.2 La comandería . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.5 SSH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.5.1 Teoría . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.5.2 La comandería . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.6 Instalación del HTTPD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.6.1 Teoría . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.6.2 La comandería . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.7 HTTPS con un certificado digital . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.7.1 Teoría . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.7.2 La comandería . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.8 Instalación desatendida kickstart Redhat Boot desde la red sin intervención. . 12.8.1 Teoría . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.8.2 La comandería . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.9 DHCPD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.9.1 Teoría . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

67 67 67 67 68 70 70 70 71 72 72 72 72 73 73 73 76 76 76 78 78 78 81 81 81 83 83 83 87 87

12.9.2 La comandería . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.10SAMBA (bidireccional) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.10.1Teoría . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.10.2La comandería . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.11Motor de correo vía la web (SQmail) . . . . . . . . . . . . . . . . . . . . . . . . 12.11.1 Teoría . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.11.2 La comandería . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.12Servidor de virtualización VMWare (con instancias virtuales funcionando) 12.12.1 Teoría . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.12.2 La comandería . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.13TOMCAT (Con apps en JAVA funcionando) . . . . . . . . . . . . . . . . . . . . 12.13.1 Teoría . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.13.2 La comandería . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.14MOTOR BD ORACLE (+consulta) . . . . . . . . . . . . . . . . . . . . . . . . . . 12.14.1 Teoría . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.14.2 La comandería . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.15Firewall (programado con reglas) . . . . . . . . . . . . . . . . . . . . . . . . . . 12.15.1 Teoría . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.15.2 La comandería . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.16SQUID (proxy) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.16.1 Teoría . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.16.2 La comandería . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.17Vsftpd (Usuario Enjaulado.) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.17.1Teoría . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.17.2La comandería . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.18Telnet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.18.1Teoría . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.18.2La comandería . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.19Antivirus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.19.1 Teoría . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.19.2 La comandería . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.20WINE (Ambiente de trabajo emulado para correr apps con tecnología MS) 12.20.1 Teoría . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.20.2 La comandería . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.21VNC server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.21.1 Teoría . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.21.2 La comandería . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.22Configuración SElinux (privación ejecución módulos kernel) . . . . . . . . . 12.22.1 Teoría . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.22.2 La comandería . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

87 88 88 88 91 91 91 92 92 92 93 93 93 94 94 94 95 95 95 96 96 96 97 97 97 98 98 98 99 99 99 100 100 100 101 101 101 102 102 102

Appendix A Listado de las variables de entorno en linux

104

Appendix B Listado de los formatos para los comandos de fecha y hora

105

6

1

Poniendo a punto la máquina

1.1

Creación de una máquina virtual en 16 pasos

(Tiempo estimado: 2 minutos) En VMWare Worstation 12 PRO hacemos: 1. Click en File 2. Click en New Virtual Machine 3. Se abre el wizard ¿Qué tipo de configuración desea?: Seleccionamos: Custom (advanced) Click en next 4. Se abre el wizard de compatibilidad Elegimos Compatibilidad de hardware de la máquina virtual: Workstation 12.0 Click en next 5. Instalación del sistema operativo invitado: Seleccionamos: I will install the OS later Click en next 6. Sistema operativo invitado y su versión: Seleccionamos Linux Versión Red Hat Enterprise Linux 7 64-bit ó CentOS 64-bit Click en next 7. Nombramos nuestra máquina virtual como: nombre.apellido.cl y la locación la dejamos tal cual Click en next 8. La configuración del procesador la dejamos como sigue: Number of processors: 2 Number of cores per processor: 1 Click en next 9. Memoria de la máquina virtual: Seleccionamos 2048 Mb Click en next 10. Tipo de red: Seleccionamos Use bridged networking Click en next 11. Seleccione tipos de controlador de I/O: Elegimos LSI Logic Click en next 12. Seleccione un tipo de disco: Elegimos SCSI Click en next

7

13. Seleccione un disco. Qué disco quieres usar?: Seleccionamos Create a new virtual disk Click en next 14. Especifique la capacidad del disco: Seleccionamos 20 Gb y Split virtual disk into multiple files Click en next 15. Se muestra donde se almacenará el archivo de disco con extensión .vmdk Click en next 16. Se despliegan las características de la maquina a crear. Revísalas. Demos click en finish 1.1.1

Cuando VMWare se detiene

Podemos liberar VMWare cuando se detiene y no permite hacer nada con: Control+C.

1.2

Instalación de Red Hat Enterprise Linux 7.3

1. Repitamos los pasos del punto 1.3, hasta el número 3, en donde reemplazamos CentOS por Red Hat. 2. Recién ahora se enciende la máquina virtual Click en Power on the virtual machine. 3. Click en Install Red Hat Enterprise Linux 7.3 4. Elegimos como idioma Español y Chile. Click en Continuar. 5. Damos click en SELECCIÓN DE SOFTWARE, eligimos Instalación mínima y damos click a Listo. 6. Demos click a DESTINO DE LA INSTALACIÓN, seleccionemos nuestro disco virtual de 20 Gb y damos click a Listo. 7. Damos click a Empezar instalación. Se deberían copiar 386 archivos y el proceso no debería tardar más de 10 minutos. 8. Mientras nuestro SO se instala, podemos configurar la contraseña del usuario root y crear un usuario. Sea la contraseña del root: 123456 y el usuario: miguel con contraseña 123456. Dejemos a éste último como administrador.

1.3 1.3.1

Instalación de CentOS 6.9 en un disco particionado La instalación

(Tiempo estimado: 15 minutos) 1. Click en VM 2. Click en Settings 3. En Hardware damos click a CD/DVD y en Connection, seleccionamos Use ISO image file. Aquí buscamos y seleccionamos el CentOS 6.9 que se supone ha descargado previamente. Click en OK 8

4. Recién ahora se enciende la máquina virtual Click en Power on the virtual machine. 5. Se abre el instalador CentOS click en: Install or upgrade an existing system enter Y CentOS empieza a cargar 6. ¿Se quiere probar el disco antes de instalar?: Seleccionamos skip Para ellos damos tab y enter Comienza a correr Anaconda. 7. Click en next. 8. ¿Qué idioma te gustaría usar durante el proceso de instalación?: Seleccionamos: English Click en next. 9. Elija el teclado apropiado para el sistema: Seleccionamos Latin American Click en next. 10. ¿Qué tipo de dispositivos considerará tu instalación?: Seleccionamos: Basic Storage Devices Click en next. 11. El dispositivo de almacenamiento indicado abajo quizás contenga datos. Seleccionamos: Yes, discard any data 12. Se nos pide un nombre para nuestro computador. Ingresamos: miguel.mov.cl Click en next. 13. Debemos seleccionar una ciudad. Seleccionamos: America Santiago Click en next. 14. Debemos seleccionar una contraseña para el root. Ingresamos: 123456 2 veces Click en next. 15. Se nos advierte que la contraseña es muy básica. ¿La usamos de todas formas? Seleccionamos: Use Anyway 16. ¿Qué tipo de instalación nos gustaría? Seleccionamos: Create Custom Layout Click en next. En este momento llegamos de forma automática al creador de particiones de CentOS. 1.3.2

El particionado

(Tiempo estimado: 5 minutos) Supongamos que queremos obtener el siguiente particionado:

9

PARTICIÓN Primaria Arranque Memoria virtual temporal

Particionado ESPACIO PUNTO DE MONTAJE 8000 MB / 250 MB /boot Remanente swap

Please Select a Device 1. click en Create 2. click en Standard Partition click en Create 3. Seleccionar: Seleccionar: Seleccionar: Seleccionar: Seleccionar: Click en ok.

Mount point: / File System Type: ext4 Size (MB): 8000 Fixed size Force to be a primary partition

1. click en Create 2. click en Standard Partition click en Create 3. Seleccionar: Seleccionar: Seleccionar: Seleccionar: Click en ok.

Mount point: /boot File System Type: ext3 Size (MB): 250 Fixed size

1. click en Create 2. click en Standard Partition click en Create 3. Seleccionar: Seleccionar: Seleccionar: Seleccionar: Click en ok. 1.3.3

Mount point: no aplica File System Type: swap Size (MB): no aplica Fill to maximun allowable size

Últimas configuraciones

(Tiempo estimado: 10 minutos) 1. Click en Next 2. Advertencia de formateo. Damos click en Format 3. Advertencia de borrado de datos preexistentes. Seleccionamos: Write changes to disk CentOS ahora está creando las particiones ... 10

FILE SYSTEM ext4 ext3 swap

4. Debemos indicar la partición donde instalaremos el boot. Seleccionamos: Install boot loader on /dev/sda y CentOS 6 /dev/sda2 Damos click en Next 5. Seleccionamos el tipo de instalación. Queremos personalizarla a la mínima posible. Para ello seleccionamos abajo a la derecha: Customize now Damos click en Next 6. Seleccionamos el tipo de instalación. Dejemos TODOS los cuadros en blanco a excepción de en: Base System: Base Compatibility libraries Console Internet tools y de Languaje: English (UK) Support Damos click en Next Deberían estar siendo descargados en este momento 409 paquetes. El proceso no debería tardar más de 15 minutos. Damos click en Reboot 1.3.4

Ejercicio n°1. Genere una instalación personalizada con las siguientes características: (Primera prueba del primer semestre del 2017)

Instalación: Mínima Password root: 123456 Nombre de máquina: SUNOMBRE.SUAPELLIDO.CL Partición / /boot /Azul /Rojo /Amarillo /Verde /swap

Espacio 8 GB 250 MB 31 GB 31 MB 31 GB 31 MB 2 veces RAM

File/System Ext4 Ext3 Ext2 Ext4 Ext3 Ext2 Swap

Solución: Trampa 1: Podemos darle un espacio insuficiente a nuestra máquina virtual y quedarnos sin tiempo al tener que volver a empezar desde cero. Para evitar ésto, calculemos inmediatamente el espacio que necesitaremos en nuestro disco duro. Trampa 2: En un disco duro solo puede haber cuatro particiones primarias, si necesitamos más tenemos que crear una partición extendida, y dentro de ella las particiones lógicas que necesitemos. Con 80 gigas de HD y 2048 de RAM estamos bien. A la partición swap le daremos entonces 4096 Mb.

11

1 Para crear la máquina virtual son los mismos pasos que el punto 1.1 a excepción del 7, donde nombramos la máquina: NOMBRE.APELLIDO.CL. 2 La instalación del CentOS virtualizado es igual a la que se hace en el punto 1.2. Ahora, ¿por nombre de máquina se refiere al del computador o al de la máquina virtual? Evitémonos polémicas y nombremos a nuestro computador también como NOMBRE.APELLIDO.CL 3 El particionado. Please Select a Device 1. click en Create 2. click en Standard Partition click en Create 3. Seleccionar: Seleccionar: Seleccionar: Seleccionar: Seleccionar: click en ok

Mount point: / File System Type: ext4 Size (MB): 8000 Fixed size Force to be a primary partition

1. click en Create 2. click en Standard Partition click en Create 3. Seleccionar: Seleccionar: Seleccionar: Seleccionar: click en ok

Mount point: /boot File System Type: ext3 Size (MB): 250 Fixed size

1. click en Create 2. click en Standard Partition click en Create 3. Seleccionar: Seleccionar: Seleccionar: Seleccionar: click en ok

Mount point: no aplica File System Type: swap Size (MB): 4096 Fixed size

1. click en Create 2. click en Standard Partition click en Create 3. Seleccionar: Seleccionar: Seleccionar: Seleccionar: click en ok

Mount point: /Azul File System Type: ext2 Size (MB): 31000 Fixed size

12

1. click en Create 2. click en Standard Partition click en Create 3. Seleccionar: Seleccionar: Seleccionar: Seleccionar: click en ok

Mount point: /Rojo File System Type: ext4 Size (MB): 31 Fixed size

1. click en Create 2. click en Standard Partition click en Create 3. Seleccionar: Seleccionar: Seleccionar: Seleccionar: click en ok

Mount point: /Amarillo File System Type: ext3 Size (MB): 31000 Fixed size

1. click en Create 2. click en Standard Partition click en Create 3. Seleccionar: Seleccionar: Seleccionar: Seleccionar: click en ok

Mount point: /Verde File System Type: ext2 Size (MB): 31 Fixed size

Importante: Observemos que sda sólo se divide en 4 particiones: sda1, sda2 y sda3. La cuarta, sda4 se extiende y dentro de ella se crean 4 más: sda5, sda6,sda7 y sda8. La explicación para ésto lo veremos más adelante. Nos sobran 7506 Mb y damos click en Next. 4 Las últimas configuraciones son iguales al punto 1.3.3

2

Lo básico, la estructura de archivos de linux y 39 comandos

2.1 2.1.1

Lo básico La tilde ~, el /home y el directorio raíz (/)

En los ambientes Windows, al superusuario se le denomina administrador; en linux, root. En linux, el símbolo gato (#) indica que estamos en la consola como root y el símbolo peso ($) indica que lo estamos como usuario. La estructura de archivos en linux es jerárquica y corresponde a una árbol de directorios (que también se pueden llamar carpetas como en Windows aunque no es lo usual) cuya raíz está en /. Dentro de los directorios se ubican los archivos (si sus nombres comienzan por punto se les denomina "ocultos"). Los comandos de

13

administración del root están en un directorio; los de un usuario normal en otro. EN LINUX TODO ES UN ARCHIVO, INCLUYENDO LOS DIRECTORIOS MISMOS. Archivo y fichero son sinónimos. En la consola, los archivos se presentan en color blanco, y los directorios en azul. Al iniciar como root en una consola linux, entramos a una shell por defecto llamada bash (la interfaz por defecto de CentOS) a un modo llamado directorio de inicio, el cual despliega una tilde: ~]#, cuando debiésemos estar en la raíz: /]#. Lo que sucede es que al ingresar al sistema por primera vez, linux siempre nos lleva al home del usuario. Nuestro caso es particular, porque somos superusuario o usuario root, cuyo home es: /root. En otras palabras, el home del root se simboliza como: ~]#. Con pwd (print working directory) podemos ver que el directorio donde nos encontramos es /root: ~]# pwd /root El directorio: /root contiene 3 ficheros. Podemos usar ls para listarlos. ~]# ls anaconda-ks.cfg install.log install.log.syslog Vámonos de vuelta al directorio root: ~]# cd .. y ahora estamos en root: (/) /]# 2.1.2

Las terminales en linux

En linux hay 6 terminales virtuales en las que se puede trabajar simultáneamente, lo que resulta muy útil cuando creamos usuarios y deseamos ingresar a la cuenta de varios de ellos simultáneamente. Podemos cambiar de terminal (suponiendo que estamos en la cuenta de root) con: ctrl + atl + F2...F6 (de F2 a F6) (la cuenta del terminal es el F1) Con Ctrl + alt + F1 volvemos a la primera consola virtual. 2.1.3

En linux, no es lo mismo la mayúscula que la minúscula

Por ejemplo, los comandos en linux se escriben todos en minúsculas. 14

2.1.4

Volver al directorio raíz

Siempre, encontrémonos donde nos encontremos, podemos volver al directorio raíz con el comando: /]# cd / 2.1.5

Uso de man

Podemos acceder a una biblioteca con el comando man. Con man + argumento, desplegamos el manual para cada comando. Presionando q, volvemos a nuestro sistema de directorios. Por ejemplo: /]# man ls despliega el manual para el comando que lista los directorios: ls. Una alternativa es escribir – –help (dos guiones seguidos) después del comando: /]# rm – –help Otra opción es utilizar el comando pinfo antes de un comando para desplegar información: /]# pinfo rm 2.1.6

Interrupción de procesos

Es muy útil cuando entramos a un loop o linux no responde, poder detener todos los procesos y volver al directorio raíz. Ésto se logra con : Control+c ó Control+z. 2.1.7

El editor de textos Nano

Más adelante nos veremos en la necesidad de editar el contenido de muchos ficheros en linux. Para lograr ello, utilizaremos el editor de texto Nano, cuya ejecución de su sintaxis nos llevará inmediatamente al archivo listo para ser editado: /]# nano nombredelarchivo Si tal archivo no existe, nano lo crea. Con ctrl + x: guardamos y salimos 2.1.8

El autocompletar

Una herramienta muy útil es la que nos permite autocompletar el nombre de los archivos o directorios que necesitemos. Ésto se logra con el tabulador (tab). Al ingresar una letra y dar tab + tab, se despliegan todas las posibles alternativas a tal comando. Cuando un conjunto de letras sea suficiente para determinar un comando, un sólo tab bastará. 2.1.9

Para deslogearnos

/]# exit o bien /]# logout

15

2.1.10

Apagar y reiniciar CentOS de manera ordenada

/]# shutdown -g0 /]# poweroff Otras opciones son: /]# halt /]# shutdown -h now 2.1.11

Para reiniciar nuestro SO.

/]# reboot

2.2 2.2.1

Configuraciones básicas de la consola Cambio de sus colores

Con el comando setterm (con m final) podemos configurar algunas características de la consola mientras se permanece en la sesión (los cambios no resultan permanentes). Por ejemplo, podemos cambiar el color de fondo a amarillo: /]# setterm -background yellow (El color que se despliega es naranja.) o podemos cambiar el color de letra de la consola a rojo: /]# setterm -foreground red Éstos cambios permanecen mientras estemos logeados. Al salir y volver a ingresar éstos desaparecerán. 2.2.2

Configuración de un mensaje de bienvenida permanente

Para hacer cambios permanentes en nuestra consola debemos editar el archivo: /etc/motd. Por ejemplo, para configurar un mensaje de bienvenida hacemos: /]# nano /etc/motd una vez dentro de él escribimos cualquier mensaje, por ejemplo: "Bienvenido, usuario!", guardamos con control + o, enter, salimos con control + x, nos deslogeamos y volvemos a entrar para verificar los cambios efectuados. 2.2.3

Configuración de la fecha a nuestro equipo

Asignémosle a nuestra máquina la siguiente hora y fecha: 1 de Enero del 2018 a las 11 am. Hacemos: /]# date – –set "2018-01-01 11:00:00" También podemos utilizar el comando hwclock. /]# hwclock – –set – –date "2018-01-01 11:00" /]# hwclock – –set – –date "21 sep 2017 20:00:00"

16

2.2.4

Darle un nombre a nuestro equipo

En CentOS 6.9 debemos editar el siguiente archivo: /]# nano /etc/sysconfig/network cambiar la siguiente línea: HOSTNAME= nuevonombre y reiniciar: /]# reboot Redhat: En Redhat podemos cambiar temporalmente el nombre de usuario con: /]# hostname miguel Pero para hacerlo permamentementde debemos editar el archivo hostname ubicado en /etc: /]# nano /etc/hostname

2.3

La estructura de archivos en linux

CentOS 6.9 posee la siguiente estructura de archivos:

17

/ bin boot dev etc home lib lib64 lost+found media mnt opt proc root sbin selinux srv sys tmp usr /bin /sbin /local var

/bin /sbin

Para dirigirnos a cualquier archivo en linux a través de sus subdirectorios, los vamos señalando con /: Por ejemplo: /]#/urs/local/bin 1. /etc Acá no hay programas. Sólo archivos de texto. Acá se guardan las configuraciones de los equipos y servicios.

18

2. /var Acá se guardan todas las variables del equipo, como por ejemplo: /var/spool/mail/sebastian 3. /proc Acá están los procesos. Se pueden ver porque son archivos. 4. /dev Acá van los dispositivos (nuestro hardware) 5. /bin Contiene programas que pueden ser ejecutados tanto por root, como por el usuario. 6. /sbin Acá hay programas que sólo pueden ser ejecutados por root. /bin y /sbin son software de desarrollo propio de CentOS. 7. /usr/bin Contiene programas que pueden ser ejecutados tanto por root, como por el usuario. Son software desarrollado por terceros. 8. /usr/sbin Acá hay programas que sólo pueden ser ejecutados por root. Son software desarrollado por terceros. 9. /usr/local/bin Contiene programas que pueden ser ejecutados tanto por root, como por el usuario. Son software utilitarios. 10. /usr/local/sbin Son software utilitarios. Acá hay programas que sólo pueden ser ejecutados por root. 2.3.1

Las rutas relativas

Al querer acceder a los archivos en el directorio donde nos encontramos, podemos hacerlo sólo con el nombre de archivo correspondiente, pero al intentar hacer ésto con archivos y directorios que están fuera del directorio actual, debemos utilizar sus nombre con rutas, las cuales le indican a Linux cómo llegar al directorio apropiado. Rutas absolutas. Las rutas absolutas especifican la ruta que conduce a un directorio o archivo, empezando por el directorio raíz. La ruta consiste en una lista secuencial de directorios, separados por barras, que conducen al directorio o archivo al que se desea llegar. Por ejemplo: /]# pwd /home/raf/andreas Rutas relativas. Ahora, las rutas relativas especifican directorios y archivos comenzando por el directorio de trabajo actual. Supongamos que estamos en el directorio adorno, esto es: /escuela/frankfurt/adorno si desde aquél directorio quisiéramos acceder a /sociedad, debemos escribir como ruta relativa: ../frankfurt/horkheimer/sociedad. La siguente nomenclatura nos ayudará a orientarnos: .. : indica que pasamos a un nivel directamente superior. Podemos listar los directorios del nivel inmdiatamente superior al cual nos encontramos con: /]# ls .. 19

Así, por ejemplo, si nos encontramos en el directorio /personalidad: /]# ls .. adorno marcuse fromm horkheimer ../.. : indica que pasamos a un nivel dos veces más arriba. Por ejemplo si estamos en adorno: /adorno ../../adorno nos deja en el directorio escuela. ../../.. : indica que pasamos a un nivel tres veces más arriba y así sucesivamente. /

escuela

frankfurt

/adorno

/personalidad

2.3.2

/marcuse

/fromm

/horkheimer

/dialectica

/critica

/sociedad

Construcción de una estructura jerárquica de varios niveles

Construya la siguiente estructura jerárquica:

/trabajo 1 7 19

9

8 20

21

22

23

10 24

34

35

4

3

2

25

11

12 26 36

27

37

5 14

13

28 38

29

39

15

6 17

16 30

31

40

41

18 32

33

42

43

Solución: No hay nada más simple que crear estructuras de directorios en linux: la barra seguida por el corchete indica que se bajará un nivel, y las comas entre los directorios que están dentro de los corchetes establecen que los elementos que separan estarán en el mismo nivel. Lo único que se requiere es ser cuidadoso (no tenemos herramientas para copiar y pegar desde un block de notas). mkdir -p permite crear varios niveles de directorios a la vez. Crea los directorios padre que falten para cada argumento directorio: /]# mkdir -p trabajo/{1/{7/{19,20},8/{21,22}}, 2/{9/{23,24/{34,35}},10/25}, 3/{11,12/{26/{36,37},27}},

20

4/{13,14/{28/{38,39},29}}, 5/{15,16/{30,31/{40,41}}}, 6/{17,18/{32,33/{42,43}}} } Importante: No deje ningún espacio en blanco. Ejercicio es con los comandos cd, cd .., y ls revisar que toda la estructura sea la correcta. 2.3.3

Ejercicio n°2: Construya una estructura jerárquica. (Primera prueba del primer semestre del 2017)

Primera p 1. Cree el siguiente árbol de archivos y directorios vía comandos a partir del directorio /Trabajo: gra

apuntes

informática

harley2

documentos

prácticas

harley

inglés

elespacio

Solución: 1. Lo que nos están pidiendo en realidad es ésto: (nótese que se plantea el ejercicio con acentos y un directorio raíz extra para confundir). /Trabajo

/gra

/apuntes

/informatica

/harley2

/documentos

/ingles

/practicas

/harley

21

/elespacio

Entonces: mkdir -p Trabajo/ gra/{ apuntes/{informatica,ingles}, documentos, harley2, practicas/{harley,elespacio} } (La trampa consiste en caer en el error de agregar un { después de Trabajo/: Trabajo/{ )

2.4

39 Comandos básicos

Con 39 comandos hay suficiente para un curso básico. La estructura de comandos en linux es la siguiente: /]# Por ejemplo: /]# head -1 /etc/passwd >> dos.txt 1. /]# clear Limpia la pantalla. Lo mismo hace ctrl + l. 2. /]# cd /etc/sysconfig Nos cambiamos de directorio: /etc/sysconfig. /]# cd .. Nos devolvemos al directorio precedente. Cuando cd se ejecuta sin parámetros, nos devuelve al directorio home del usuario. 3. /]# echo Es muy importante, pues nos permite imprimir tanto en la pantalla como en un archivo por medio del redireccionamiento » -un poco más adelante veremos ésto-. Pregunta de prueba. 4. /]# more Recordemos cuando queremos desplegar la información de nuestros directorios con el comando: /]#ls -R la lista es enorme. Es deseable detener la información en la pantalla para poder leerla e ir desplegando las líneas con consecutivos enter. Para ello sirve el comando more, el cual despliega las primeras 25 líneas de un archivo, y luego permite ir desplazándose por las siguientes con sólo presionar enter. Va precedido por la pipa (|) y lo antecede el comando que despliega la información. Dos ejemplos a continuación: /]#ls -la | more /]#ls -R | more (Recordemos que cualquier proceso en consola pude detenerse con Control+z para volver a la estructura de directorios).

22

5. /]# less Con el comando less podemos desplazarnos en todos los sentidos cuando se despliega algún contenido en la terminal. 6. /]# chage (Pregunta de prueba) Permite cambiar o establecer parámetros de las fechas de control de la contraseña. Esto lo veremos un poco más adelante pero desde ya es muy importante recordarlo. 7. /]# mkdir Con mkdir podemos crear nuevos directorios. La opción -p permite crear varios niveles de directorios a la vez. Con el comando: /]# mkdir miguel creamos un directorio. Con el comando: /]# rm -R miguel lo borramos en forma recursiva (se nos preguntará a cada nivel si queremos borrar. Si es lo que deseamos escribimos cada vez "y" y enter.) 8. /]# rmdir Borra directorios sólo si están vacíos. 9. /]# rm Sirve para borrar archivos o directorios. Opciones para directorios: ~]#rm -d : permite borrar directorios vacíos. ~]#rm -r : permite borrar directorios no vacíos eliminando los archivos dentro de los directorios y el directorio contenedor. Opciones para generales: ~]#rm -i : pide confirmación para eliminar un fichero. ~]#rm -f se usa para omitir la confirmación. ~]#rm -r / Se borra todo el filesystem (en Windows esto no se puede). Con: ~]#rm -r / podemos borrar todo el filesystem (en Windows esto no se puede). 10. /]# date Muestra hora y fecha actual 11. /]# bc Abre una calculadora 12. /]# cal Despliega información de las fechas en formato de un mes calendario.

23

/]# cal despliega el mes actual. /]# cal 2017 despliega un año completo. /]# cal 30 08 1972 muestra una fecha específica. 13. /]# touch miguel.txt: Su uso más frecuente es para crear archivos. Si el archivo no existe, touch lo crea. 14. /]# cp Se utiliza para copiar ficheros o directorios. Permite: (a) Copiar un archivo a otro manteniendo el original (con el comando cp se destruye el original): /]# cp carlos.txt miguel.txt Si miguel.txt no existe, lo crea. Si existe, lo sobrescribe. (b) Copiar archivos a un directorio: /]# cp carlos.txt /home/usuario/Downloads Copiar archivos a un directorio usando rutas relativas: Al usar rutas relativas es muy importante terminar el nombre de directorio con una barra porque así estamos indicando que es un directorio. Cuando la ruta es de un archivo NUNCA se pone la / al final. /]# cp miguel.txt ./Downloads/ (c) Copiar dos archivos simultáneamente a un directorio: /]# cp miguel.txt program.py ./Downloads/ (d) Copiar de todos los archivos .txt a un directorio a un directorio: /]# cp *.txt Directorio (e) Copia de todos los archivos de un directorio a otro directorio: /]# cp trabajo/miguel/* Trabajo/carlos 15. /]# mv Es usado para mover o renombrar archivos y directorios del sistema de archivos. A diferencia de cp, el archivo original es borrado. Es por ello que también es utilizado para renombrar archivos. Si no existe el archivo de destino, mv lo crea. Su sintaxis es: /]# mv archivo1 archivo2 ... /Directorio 16. /]# rename Permite renombrar archivos de manera masiva Sintaxis: /]# rename perlexpr [archivos] donde perlexpr es una expresión regular en lenguaje Perl. Ejemplo: supongamos que queremos cambiar la extensión de los archivos .txt del directorio actual por .csv: /]#rename ’s/\.txt/\.csv/’ *.txt 17. /]# cat Despliega el contenido de un archivo. Pero muchas veces se despliega muy rápido. Acá resulta útil el comando more. /]# cat miguel.txt | more 24

18. /]# head Éste comando por defecto despliega las 10 primeras líneas de un archivo de texto. Pero podemos desplegar las que queramos con la opción n. Por ejemplo: /]# head -15 /Trabajo/carlos.txt Desplegará las primeras 15 líneas del archivo. 19. /]# tail Éste comando por defecto despliega las 10 últimas líneas de un archivo de texto. Pero podemos desplegar las que queramos con la opción n. Por ejemplo: /]# tail -15 /Trabajo/carlos.txt Desplegará las últimas 15 líneas del archivo. 20. /]# passwd Permite cambiar o asignar una password. El super-usuario o root (#) puede cambiarle la contraseña a todo. El usuario ($) sólo al usuario concurrente. 21. /]# history Lista las pulsaciones de las teclas que se han ejecutado. Por ejemplo: /]# history | more 22. Redireccionamiento. /]# > El redireccionamiento permite enviar la información desplegada por un comando a un archivo. Se ejecuta de izquierda a derecha. Por ejemplo, supongamos que deseamos enviar la información de toda nuestra estructura de archivos al fichero carlos.txt de nuestro subdirectorio Trabajo ya creado. Primero creamos el archivo posicionándonos dentro del directorio Trabajo: Trabajo]# touch carlos.txt Ahora vamos al root y desde ahí redireccionamos la salida: /]# ls -Ra > /Trabajo/carlos.txt Otros ejemplos: /]# cal > agosto.txt /]# ls /home > home.txt Cree un archivo de texto que contenga los meses de Enero 2018, Enero 2019 y Enero del 2020. Cree un archivo de texto que contenga la primera y la última línea del archivo passwd que está en el directorio /etc. /]# head -1 /etc/passwd > dos.txt /]# tail -1 /etc/passwd » dos.txt Si el archivo de destino no existiera, el comando de direccionamiento lo crea. El direccionamiento sobreescribe sobre un archivo ya existente. Si lo que deseáramos fuese sólo agregar al final del contenido del archivo nueva información, podemos usar el comando >> 25

23. /]# wc Éste comando despliega tres valores: líneas, palabras y caracteres (en ese orden). Por ejemplo, aplicado al archivo de texto que hemos creado llamado carlos.txt en el directorio Trabajo nos entrega: /]# wc /Trabajo/carlos.txt 109916 101509 1161474 /Trabajo/carlos.txt donde el primer valor muestra el número de caracteres, el segundo el número de palabras y el tercero el número de líneas. éstas opciones se pueden obtener por separado: /]# wc -c /Trabajo/carlos.txt despliega el número de caracteres. /]# wc -w /Trabajo/carlos.txt despliega el número de palabras. /]# wc -l /Trabajo/carlos.txt despliega el número de líneas. Asimismo se pueden procesar varios archivos, al final de los cuales nos muestra la cuenta total, por ejemplo: /]# wc /etc/shells /etc/hosts 6 6 61 /etc/shells 2 18 158 /etc/hosts 8 16 219 total 24. /]# hwclock Despliega la fecha y la hora. 25. /]# grep Se asocia a pipa ( | ) y nos entrega la información que coincida con el parámetro entregado a grep, por ejemplo: /]# cat /etc/passwd | grep miguel nos entrega las coincidencias con la palabra miguel. 26. /]# pwd Ya lo hemos visto. 27. /]# ls Sin argumentos lista todos los archivos (incluyendo directorios) del directorio donde el usuario está posicionado. Las opciones que nos entrega ls son: (a) ~]#ls -a: lista todos los archivos, incluyendo los ocultos (b) ~]#ls -l: lista los archivos junto a sus permisos (c) ~]#ls -R: lista los contenidos de todos los directorios recursivamente (haga ésto sólo cuando tenga tiempo, porque el despliegue es enorme) (d) ~]#ls -la f*.* | more: lista los archivos que comienzan con la letra f (más adelante veremos lo que significa el comando | more) (e) Se pueden escribir varios parámetros juntos, como por ejemplo: ~]#ls -la

26

Al ejecutar el comando ls -la se despliega una serie de archivos cuya cuyo primer carácter de la primera columna si es: -. : significa que es un archivo normal. d. : significa que es un directorio. 28. /]# man Ya lo hemos visto. 29. /]# file Ése comando sirve para ver las propiedades de los archivos, por ejemplo, saber si son directorios. Por ejemplo: /]# file bin bin : directory /]# file /etc/passwd /etc/passwd : ASCII text 30. /]# ifup eth0 Levanta una interfaz, dejándola disponible para enviar y recibir datos. Lo mismo para ifdown. 31. /]# yum Permite bajar programas desde internet. Por ejemplo: /]# yum -y install nano 32. /]# ps El comando process muestra los procesos que ha iniciado el usuario, por ejemplo: /]# ps /]# ps au /]# ps aux muestra los procesos desde qe el equipo se encendió. 33. /]# who Muestra a todos los usuarios y el root. 34. /]# lscpu Muestra características de la CPU. 35. /]# lspci Muestra información del bus pci del equipo. 36. /]# pstree Muestra los procesos en forma de árbol. 37. /]# df Muestra el contenido de los archivos del filesystem. 38. /]# du Estima el espacio de uso de los ficheros. 27

Tanto a df como a du le podemos agregar las opciones: -m: para desplegar la información en megabytes. -k: para desplegar la información en kilobytes. 39. startx En Redhat, con: startx cargamos la interfaz gráfica. 2.4.1

Ejercicio n°3. Practique la comandería básica. (Primera prueba del primer semestre del 2017)

Consideremos la estructura de archivos ya creada del ejercicio n°2: /Trabajo

/gra

/apuntes

/informatica

/harley2

/documentos

/ingles

/practicas

/harley

/elespacio

1. Listar el contenido de todo el directorio de archivos (desde /) y redirigir su salida al archivo: Resultado.txt. /]# ls -Ra > Resultado.txt 2. Contar la cantidad de líneas de Resultado.txt y redirigir la salida a: Líneas.txt. /]# wc -l Resultado.txt > Lineas.txt 3. Copiar: Lineas.txt, a: /gra/documentos /apuntes/ingles /]# cp Lineas.txt /Trabajo/gra/documentos /]# cp Lineas.txt /Trabajo/gra/apuntes/ingles 4. Eliminar: /gra/practicas /]# rm -R Trabajo/gra/practicas 5. Renombrar el directorio /gra como: /RESULTADO Nos movemos al directorio /Trabajo y: Trabajo]# mv gra RESULTADO

28

3

Variables de entorno

Las variables de entorno se cargan junto con el sistema, sus valores son dinámicos, están en la RAM y pueden ser utilizadas por varios procesos a la vez. Directo en la consola podemos desplegarlas con el comando echo, por ejemplo: /]# $BASH /bin/bash Podemos imprimir en pantalla la fecha en formato: DD/MM/AAAA: /]# FECHA=$(date +"%d-%m-%Y") /]# echo $FECHA 08/15/2017 Podemos imprimir en pantalla la hora de conexión en formato: HH:MM:SS: /]# HORA=$(date +"%H:%M:%S") /]# echo $HORA 19:30:54 Éstas variables, FECHA y HORA se denominas alias. Todas las variables de entorno son importantes, pero las que más lo son: $BASH (ruta de bash) $HOME (ruta del home del usuario) $KERNEL $MACHTYPE (tipo de maquina) $PATH (ruta para los scripts) $PWD (ruta donde se esta) $SHELL $UID: la user id $USER (usuario) $HOSTNAME (servidor) $MAIL (el correo asociado al usuario) $HOME (el workspace asociado al usuario)

4

Usuarios y grupos

4.1

Introducción

Un usuario es un objeto1 UGO -un poco más adelante veremos que significa ésto-, un usr, que sirve como una cuenta para hacer uso de los servicios de un sistema operativo de manera restringida. En la consola, los usuarios son precedidos por el signo peso $: /]$ mientras que como ya hemos visto, el root va precedido del signo gato: #: /]# Importante: Desde una cuenta de usuario podemos pasar a la del root con el comando: 1

recordemos que un objeto posee atributos y métodos.

29

/]# su Donde se nos pedirá la contraseña del superusuario.

4.2

Comandos para la administración de usuarios y grupos

1. /]# useradd Es el comando más importante en la administración de usuarios y grupos. El comando useradd permite añadir un usuario indicando como parámetros la información particular para crear el usuario en la misma líne de comandos. Sus parámeros son: -g: Grupo principal que queremos tenga el usuario (debe existir previamente) -d: Carpeta home del usuario. Suele ser /home/nombre-usuario -m: Crear carpeta home si es que no existe. -s: Intérprete de comandos (shell) del usuario. Suele ser /bin/bash Por ejemplo, si deseamos crear un usuario llamado ’miguel’ cuyo grupo principal sea ’movimiento’, cuya carpeta home sea /home/miguel y su intérprete de comandos sea /bin/bash, ejecutaremos el siguiente comando: /]# useradd -g movimiento -d /home/miguel -m -s /bin/bash miguel Si no utilizamos la opción -m, no se creará la carpeta home del usuario; en tal caso tendríamos que crearla manualmente. Tan solo nos quedará establecer su contraseña con el comando passwd: /]# passwd miguel (la cuenta de los usuarios recién creados necesita de una contraseña para desbloquearse) Una vez estamos como un usuario, con el comando exit salimos y podemos logearnos nuevamente como root o como otro usuario. 2. /]# usermod Permite cambiar el nombre del usuario, su carpeta home, su intérprete de comandos, los grupos a los que pertenece y algunos otros parámetros. Por ejemplo, si queremos cambiar el home de un usuario: /]# usermod -d /home/carpeta_miguel miguel 3. /]# userdel Eliminamos un usuario. Con la opción -r también se eliminará su carpeta home, por ejemplo: /]# userdel -r pedro 4. /]# groupadd Éste comando permite añadir un grupo indicando como parámetro el nombre del grupo. Por ejemplo, si deseamos crear un grupo llamado ’movimiento’ ejecutaremos: /]# groupadd movimiento 5. /]# groupmod Permite modificar el nombre de un grupo o el gid del mismo. La sintaxis es: groupmod [-g nuevo-gid] [-n nuevo-nombre] nombre-grupo, ejemplo: Cambiar el gid del grupo movimiento /]# groupmod -g 2000 movimiento 30

6. /]# groupdel Eliminamos un grupo, por ejemplo: /]# groupdel movimiento Si algún usuario tuviera dicho grupo como grupo primario, el comando groupdel no eliminará el grupo. Más adelante veremos lo que significa un grupo primario y un grupo suplementario. 7. /]# adduser Se utiliza el comando adduser seguido del nombre del usuario y del nombre del grupo al cual lo queremos añadir, por ejemplo: /]# adduser miguel movimiento 8. /]# deluser Se utiliza el comando deluser seguido del nombre del usuario y del nombre del grupo del del cual lo queremos retirar, por ejemplo: /]# deluser juan profesores Comandos de consulta: 1. /]# id Con éste comando consultamos las características de un usuario en particular. Por ejemplo del root: /]# id root uid = 0(root) gid = 0(root) groups = 0(root) /]# head -1 /etc/passwd root:x:0:0:root:/root:/bin/bash 2. /]# groups usuario Podemos conocer los grupos a los que pertenece un usuario. 3. /]# passwd usuario Asigna una contraseña al usuario 4. /]# gpasswd grupo Asigna una contraseña al grupo

4.3

El identificador de usuario

En los sistemas linux, los usuarios son representados por un identificador de usuario(uid o user id). sus valores comprenden el rango [0-32767]. El root siempre va a tener un uid=0. Al sistema se le reservan los valores entre el rango [1-499]. Acá se encuentran los usuarios especiales. Son cuentas del sistema, van asociadas al concepto de no-login. El archivo /sbin/nologin es sumamente restrictivo. Ni siquiera se puede ingresar al sistema. A los usuarios se les asignan los números del 500 en adelante (en Red Hat, a los usuarios nuevos se les asignan los números del 1000 en adelante), por ejemplo, cuando creamos por primera vez un usuario en nuestro sistema, linux le va a asignar automáticamente los valores respectivos: U: 500 G: 500 O: 500 Mientras más nos alejamos del 0, menos permisos va a tener el usuario. Con el comando: /]# who 31

desplegamos la información de todos los usuarios y superusuarios. Con el comando: /]# whoami desplegamos la información del usuario desde donde se hace la consulta..

4.4

UGO

En linux, todos los objetos se rigen bajo la funcionalidad: Users, Groups, Other, (también denominado Mid, gid y GID) lo que se denomina UGO. Esto es muy importante, porque !es una obligación de los usuarios el tener que pasar por UGO! Sólo pasando por UGO un usuario puede ingresar al sistema. Así es como: /]# useradd miguel no es interesante para el sistema. El sistema requiere su paso por UGO. A un usuario se le pueden asignar valores para GID, Gid y Uid: Para modificar el UID, utilizamos ‘usermod’con el parámetro -u seguido del UID a asignar: /]# usermod -u 1001 carlos Para modificar el GID utilizamos el comando ’groupmod’ con el parámetro -g seguido del GID a asignar: /]# groupmod -g 1001 carlos

4.5

Creación de usuarios

Al crear un usuario, por ejemplo miguel: /]# useradd miguel su configuración se guarda en un archivo denominado: /etc/passwd. Podemos ver los valores UGO del usuario recién creado con: /]# id miguel y podemos ver que a cada uno de ellos se les asignó el valor 500 en forma automática. No es necesario ahora crear un grupo para miguel, pues cada vez que se crea un usuario se crea un UGO, con un userid único e inequívoco guardado en: /etc/passwd. Cualquiera sea el tipo de usuario, todas las cuantas se encuentran definidas en el archivo de configuración passwd ubicado en el directorio /etc. Éste archivo es de tipo ASCII y contiene 1 línea para cada usuario. Observemos la información almacenada en los archivos /etc/passwd, /etc/shadow y /etc/group relativa a nuestra usuario recién creado miguel: /]# cat /etc/passwd | grep miguel miguel:x:500:500::/home/miguel:/bin/bash la x es un puntero al shadows (es sólo de lectura). /]# cat /etc/shadow | grep miguel miguel:!!:17392:0:99999:7:::

32

!!: indica un bloqueo doble (política de retención de password) /]# cat /etc/group | grep miguel miguel:x:500: Nuestro usuario miguel está bloqueado por no tener contraseña. Asignémosle la contraseña: 123456: /]# passwd miguel Ahora volvamos a revisar el archivo /etc/shadow: /]# cat /etc/shadow | grep miguel miguel:una-serie-de-garabatos:17392:0:99999:7::: el segundo valor representa la contraseña encriptada con un algoritmo (SHA) Ahora, los grupos también utilizan passwords, que se almacenan en le archivo: /etc/gshadow. Observemos que para nuestro usuario miguel su contraseña de grupo es: /]# cat /etc/gshadow | grep miguel miguel:!:: Asignémosle entonces una contraseña: 123456 al grupo: /]# gpasswd miguel Y volvamos a desplegar el contenido del archivo /etc/gshadow asociado a nuestro usuario miguel: /]# cat /etc/gshadow | grep miguel miguel:una-serie-de-garabatos:: Ahora vemos que el segundo campo, asociado a la contraseña del grupo, despliga una larga serie de letras, números y caracteres.

4.6

Práctica con usuarios y grupos

1. Cree 10 usuarios con el formato: usuario1...usuario10. /]# useradd usuario1 * * * /]# useradd usuario10 2. A todos los usuarios creados asígneles la contraseña: 123456. /]# passwd usuario1 123456 * * * /]# passwd usuario10 123456

33

3. Cree 10 grupos con el formato: grupo1...grupo10. /]# groupadd grupo1 * * * /]# groupadd grupo10 4. A todos los grupos creados asígneles la contraseña: 123456. /]# gpasswd grupo1 123456 * * * /]# gpasswd grupo10 123456 5. A todos los usuarios pares asígneles un user id 5001 o superior. Hagamos uso de la ayuda en línea. /]# man usermod descubrimos que con el parámetro -u podemos asignarle un nuevo valor a la id del usuario. Podemos ir verificando éstos valores con: /]# cat /etc/passwd | grep usuario Entonces hacemos: /]# usermod -u 5001 usuario2 /]# usermod -u 5002 usuario4 /]# usermod -u 5003 usuario6 /]# usermod -u 5004 usuario8 /]# usermod -u 5005 usuario10 6. A todos los usuarios impares asígneles una fecha de expiración. Con el parámetro -e especificamos la fecha en que la cuenta de un usuario será deshabilitada en un formato YYY-MM-DD. Entonces hagamos que cada cuenta impar sea deshabilitada el 1 de Mayo del 2018: /]# usermod -e 2018-05-01 usuario1 /]# usermod -e 2018-05-01 usuario3 /]# usermod -e 2018-05-01 usuario5 /]# usermod -e 2018-05-01 usuario7 /]# usermod -e 2018-05-01 usuario9

34

El comando chage con el parámetro -l nos sirve para verificar la fecha de expiración: /]# chage -l usuario1 Last password change Password expires Password inactiva Account expires Minimum number of days between password change Maximum number of days between password change Number of days of warning before password expires

: Sep 03, 2017 : never : never : May 01, 2018 :0 : 99999 :7

Para linux, epoch indica un día específico: el 1 de Enero de 1970. A partir de ese momento se cuentan los días en que una cuenta existirá antes de caducar. Aparece en el campo 8 de las líneas del archivo: /etc/shadow. Podemos verificar que éste valor para los usuarios que acabamos de modificar es de 17652. 7. Agregue a cada usuario a su grupo respectivo: usuario1 -> grupo1 y así sucesivamente. Primero debemos saber lo que es un grupo primario y un grupo suplementario. Cada usuario debe pertenecer por lo menos a un grupo. Por defecto, en la mayoría de distribuciones GNU/Linux y otros sistemas tipo Unix, como Red Hat y Ubuntu, cuando creamos un usuario nuevo, un nuevo grupo con el mismo nombre del usuario es creado también. Éste nuevo usuario es el único miembro de dicho grupo. Debemos tener en cuenta que los grupos a los cuales agregaremos el usuario deben existir previamente. La creación de un único grupo para cada usuario viene del esquema User Private Group (UPG). Este constituye un modelo flexible para manejar los permisos de los grupos. En nuestro caso el primer usuario: usuario1, automáticamente pertenece a un grupo llamado usuario1, el cual es conocido como grupo primario. Dicho usuario también puede pertenecer a otros grupos, y estos grupos adicionales se denominan grupos suplementarios. Cada usuario y grupo de un sistema tiene un único uid y gid. Ningún usuario o grupo puede ser creado con un uid o gid ya existente. Linux asigna automáticamente dichos números para evitar conflictos. Para conocer detalles sobre a cuáles grupos pertenece un usuario tenemos el comando id. Por ejemplo: /]# id root uid=0(root) gid=0(root) groups=0(root) /]# id usuario1 uid=501(usuario1) gid=501(usuario1) groups=501(usuario1) -a: agrega un usuario a su(s) grupo(s) suplementario(s) sin removerlo de su(s) otro(s) grupo(s). Debe utilizarse con la opción: -G. -G: provee una lista de grupos suplementarios de los cuales el usuario es miembro. Sintaxis: /]# usermod -aG grupo usuario Ahora, ejecutemos la instrucción de asignación al grupo y veamos que despliega la información del usuario1 utilizando el comando id:

35

/]# usermod -a -G grupo1 usuario1 /]# id usuario1 uid=500(usuario1) gid=500(usuario1) groups=500(usuario1),510(grupo1) Vemos que nuestro usuario está dentro de su grupo primario(usuario1) y dentro de un grupo suplementario(grupo1). Recordemos que podemos ver los grupos a los que pertenece un usuario con el comando groups: /]# groups usuario1 usuario1 : usuario1 grupo1 Hagamos lo mismo para todos los usuarios: /]# usermod -aG grupo2 usuario2 /]# usermod -aG grupo3 usuario3 /]# usermod -aG grupo4 usuario4 /]# usermod -aG grupo5 usuario5 /]# usermod -aG grupo6 usuario6 /]# usermod -aG grupo7 usuario7 /]# usermod -aG grupo8 usuario8 /]# usermod -aG grupo9 usuario9 /]# usermod -aG grupo10 usuario10 Si utilizáramos sólo -g el usuario pierde la pertenencia a su grupo primario. Por ejemplo: /]# usermod -g grupo10 usuario10 Comprobémoslo: /]# id usuario10 uid=5005(usuario10) gid=519(grupo10) groups=519(grupo10) /]# groups usuario10 usuario10 : grupo10 pero el grupo: usuario1 todavía existe, así dejemos su situación tal cual estaba: /]# usermod -aG usuario10 usuario10 8. A todos los usuarios pares cámbieles su loginname a: miguel2, miguel4,... -l: cambia el nombre a un usuario. Sintaxis: /]# usermod -l nuevo_loginname viejo_loginname Entonces: /]# usermod -l miguel2 usuario2 /]# usermod -l miguel4 usuario4 /]# usermod -l miguel6 usuario6 36

/]# usermod -l miguel8 usuario8 /]# usermod -l miguel10 usuario10 Veamos qué muestra el comando id para miguel2: /]# id miguel2 uid=5001(miguel2) gid=501(usuario2) groups=501(usuario2),511(grupo2) También podemos cambiar el nombre de un grupo con groupmod -n: Sintaxis: /]# groupmod -n nuevo_nombre_de_grupo viejo_nombre_de_grupo Por ejemplo, cambiémosle el nombre al grupo2: /]# groupmod -n movimiento2 grupo2 Veamos que información se despliega al aplicarle el comando id al usuario miguel2: /]# id miguel2 uid=5001(miguel2) gid=501(usuario2) groups=501(usuario2),511(movimiento2) Dejemos el nombre original al grupo: /]# groupmod -n grupo2 movimiento2 9. A todos los usuarios asócieles un comentario descriptivo. El comentario descriptivo también es usado para asignarle el nombre completo a un usuario. -c: asigna un comentario a un usuario. Sintaxis: /]# usermod -c "comentario" usuario Asignémosle un comentario entonces a todos los usuarios. Recordemos que los usuarios pares han cambiado de nombre: /]# usermod -c "es de conce" usuario1 /]# usermod -c "es medico" miguel2 /]# usermod -c "es de conce" usuario3 /]# usermod -c "es medico" miguel4 /]# usermod -c "es de conce" usuario5 /]# usermod -c "es medico" miguel6 /]# usermod -c "es de conce" usuario7 /]# usermod -c "es medico" miguel8 /]# usermod -c "es de conce" usuario9 /]# usermod -c "es medico" miguel10 Verifiquemos con: /]# cat /etc/passwd | grep usu

37

El comando anterior sirve, pues la palabra usu está como subdirectorio del home en todos los usuarios. Vemos que el comentario está insertado en todos los usuarios en el quinto campo de cada línea. En el quinto campo del archivo /etc/passwd están los comentarios o el nombre completo del usuario. 10. Asignar al usuario1 derechos de superusuario. -u: permite cambiar la uid de un usuario. -o: éste parámetro combinado con -u permite cambiar la uid de un usuario a un valor no único. Se necesita ésto pues recordemos que en nuestro sistema tenemos al root que también tiene una uid=0. Sintaxis: /]# usermod -ou 0 usuario Con ésta instrucción le asignamos un uid=0 al usuario. En nuestro caso: /]# usermod -ou 0 usuario1 Verifiquemos: /]# id usuario1 uid=0(root) gid=500(usuario1) groups=0(root),510(grupo1) Debemos hacer su grupo también root. ¿por qué? -g: permite cambiar la GID de un grupo. -o: éste parámetro combinado con -g permite cambiar la GID de un grupo a un valor no único. Se necesita ésto pues recordemos que en nuestro sistema tenemos al root que también tiene una GID=0. /]# groupmod -og 0 grupo1 Verifiquemos: /]# cat /etc/group | grep grupo1 grupo1:x:0:usuario1 /]# id usuario1 uid=0(root) gid=500(usuario1) groups=0(root) 11. A todos los usuarios impares asígneles una cuenta bloqueada. -L: bloquea la password de un usuario. Sintaxis: /]# usermod -L usuario /]# usermod -L usuario1 /]# usermod -L usuario3 /]# usermod -L usuario5 /]# usermod -L usuario7

38

/]# usermod -L usuario9 Verifiquemos: /]# cat /etc/shadow | grep usuario usuario1:!una-serie-de-garabatos:17397:0:99999:7::17652: usuario3:!una-serie-de-garabatos:17397:0:99999:7::17652: usuario5:!una-serie-de-garabatos:17397:0:99999:7::17652: usuario7:!una-serie-de-garabatos:17397:0:99999:7::17652: usuario9:!una-serie-de-garabatos:17397:0:99999:7::17652: El signo de exclamación antes de la serie de garabatos indica que la password está bloqueada. 12. Cambie el gid de los grupos pares por 5000 y superior (grupo2, grupo4,...). -g: cambia el gid del grupo. Sintaxis: /]# groupmod -g nueva_gid grupo /]# groupmod -g 5000 grupo2 /]# groupmod -g 5001 grupo4 /]# groupmod -g 5002 grupo6 /]# groupmod -g 5003 grupo8 /]# groupmod -g 5004 grupo10 Verifiquemos: /]# cat /etc/group | grep grupo grupo1:x:0:usuario1 grupo3:x:512:usuario3 grupo4:x:5001:miguel4 grupo5:x:514:usuario5 grupo6:x:5002:miguel6 grupo7:x:516:usuario7 grupo8:x:5003:miguel8 grupo9:x:518:usuario9 grupo10:x:5004:miguel10 grupo2:x:5000:miguel2 13. Cambiar el nombre de los grupos pares a gramna2, gramna4,... -n: cambia el nombre de un grupo. Sintaxis: /]# groupmod -n nuevo_nombre_del_grupo nombre_del_grupo_viejo /]# groupmod -n gramna2 grupo2 /]# groupmod -n gramna4 grupo4

39

/]# groupmod -n gramna6 grupo6 /]# groupmod -n gramna8 grupo8 /]# groupmod -n gramna10 grupo10 Verifiquemos: /]# cat /etc/group | grep gramna gramna2:x:5000:miguel2 gramna4:x:5001:miguel4 gramna6:x:5002:miguel6 gramna8:x:5003:miguel8 gramna10:x:5004:miguel10 14. Crear dos grupos llamados par e impar. Asignar a todos los usuarios pares al grupo par y a los impares al grupo impar. /]# groupadd par /]# gpasswd par 123456 /]# groupadd impar /]# gpasswd impar 123456 Supongamos que queremos que los usuarios permanezcan también en los grupos donde ya están. /]# usermod -aG impar usuario1 /]# usermod -aG par miguel2 /]# usermod -aG impar usuario3 /]# usermod -aG par miguel4 /]# usermod -aG impar usuario5 /]# usermod -aG par miguel6 /]# usermod -aG impar usuario7 /]# usermod -aG par miguel8 /]# usermod -aG impar usuario9 /]# usermod -aG par miguel10 Verifiquemos por ejemplo con el usuario3: /]# id usuario3 uid=502(usuario3) gid=502(usuario3) groups=502(usuario3),512(grupo3),5006(impar) 15. Crear un usuario con otro directorio personal. Por defecto, al crear un usuario, el comando useradd le asigna un directorio bajo el directorio /home con el nombre del mismo (asignar no es lo mismo que crear, hablamos de la entrada en /etc/passwd). Por ejemplo, si creamos el usuario miguel, se le asigna el directorio /home/miguel. Se puede cambiar este parámetro con la opcion -d y la ruta del nuevo directorio de usuario. Por ejemplo, el siguiente comando añadirá al usuario bautista con directorio de usuario /srv/ftp/bautista. /]# useradd -d /srv/ftp/bautista bautista 40

verifiquemos: /]# grep bautista /etc/passwd ghost:x:505:505::/srv/ftp/bautista:/bin/bash Por defecto, useradd crea la entrada correspondiente al directorio de usuario en el fichero /etc/passwd, pero no crea dicho directorio ni asigna permisos. Para ello hay que usar la opción -m, de la siguiente forma: /]# useradd -m -d /srv/ftp/bautista bautista 16. Crear un Usuario sin directorio personal. Es posible crear un usuario sin asignarle un directorio personal. En ese caso, si el usuario inicia sesión, su directorio actual será la raiz del sistema, / . Para crear un usuario sin su directorio personal se usa la opción -M. Por ejemplo, el siguiente comando creará un usuario llamado miguel, sin directorio personal. /]# useradd -M miguel 17. Crear un usuario cuya contraseña posea fecha de expiración. Con la opción -f se define el número de días tras los cuales la contraseña expirará. Un valor de 0 desactiva la cuenta de usuario tan pronto como la contraseña expira. Por defecto, este campo tiene el valor -1 , que significa que nunca expira. En este ejemplo, vamos a crear una cuenta llamada conce, cuya contraseña expire en 45 días , con las opciones -e y -f: /]# useradd -e 2017-02-20 -f 45 conce 18. Crear un Usuario y Cambiar la Shell. A veces se añaden usuarios que no tienen que iniciar sesión, o simplemente se les quiere asignar otras terminales (shells). Podemos decidir todo esto en el momento de la creación del usuario con la opción -s. Creemos un usuario llamado ulrike sin shell de inicio e.g. /sbin/nologin. (No podrá iniciar sesión) /]# useradd -s /sbin/nologin ulrike Verifiquémoslo: /]# grep ulrike /etc/passwd ulrike:x:1002:1002::/home/ulrike:/sbin/nologin

4.7

Lo que sucede al crear usuarios

Con el comando useradd podemos agregar un usuario: /]# useradd miguel pero lo anterior no es interesante para linux. El sistema operativo requiere de UGO. Los valores UGO de un usuario los podemos ver con el comando id: /]# id miguel

41

el cual despliega la siguiente información almacenada en el archivo /etc/passwd y donde podemos observar que los valores de uid, el group id y GID (otros) se asigna en forma automática en 500: uid=500(miguel) gid=500(miguel) groups=500(miguel) La creación de un usuario es un proceso complejo en el cual suceden muchas cosas. Es importante comprender cada una de ellas: 1. Son afectados 4 archivos: a) /etc/passwd La utilidad de éste fichero radica en que mantiene la información principal de cada cuenta. Es aquí donde se guarda la configuración de cada usuario creado: nombre de usuario, UID, GID, login shell, directorio home, etc. Cualquiera sea el tipo de usuario, todas las cuentas se encuentran definidas en el archivo de configuración passwd ubicado en el directorio /etc. Éste archivo es del tipo ASCII y contiene 1 línea para cada usuario. Este archivo es de texto tipo ASCII, se crea al momento de la instalación con el usuario root y las cuentas especiales, más las cuentas de usuarios normales que se hayan indicado al momento de la instalación. Observemos qué nos dice el archivo /etc/passwd respecto al usuario miguel, desplegando sus coinciencias con la palabra: miguel. Recordemos que para hacer esto podemos usar el comado grep: /]# cat /etc/passwd | grep miguel Se despliega lo siguiente: b) etc/group información sobre los grupos definidos en el sistema. nombre del grupo, GID y miembros del mismo. Este archivo guarda la relación de los grupos a los que pertenecen los usuarios del sistema, contiene una línea para cada usuario con tres o cuatro campos por usuario. c) etc/shadow en sistemas actuales, fichero sin permiso de lectura que guarda las contraseñas encriptadas. Anteriormente (en sistemas Unix) las contraseñas cifradas se almacenaban en el mismo /etc/passwd. El problema es que ’passwd’ es un archivo que puede ser leído por cualquier usuario del sistema, aunque solo puede ser modificado por root. Con cualquier computadora potente de hoy en día, un buen programa de descifrado de contraseñas y paciencia es posible "crackear" contraseñas débiles (por eso la conveniencia de cambiar periódicamente la contraseña de root y de otras cuentas importantes). El archivo ’shadow’, resuelve el problema ya que solo puede ser leido por root. Considérese a ’shadow’ como una extensión de ’passwd’ ya que no solo almacena la contraseña encriptada, sino que tiene otros campos de control de contraseñas. d) etc/gshadow contraseñas para grupos (no suele usarse) 2. Al usuario le es asignada una uid: user id. En los sistemas tipo UNIX, los usuarios son representados por un identificador de usuario (uid o User ID). Sus valores van desde 0 al 32767. El usuario root siempre le es asignado un uid = 0. Al sistema se le reservan los valores del 1 al 499, éstos son los usuarios especiales. A las cuentas del sistema va asociado el concepto de no-login asociados al archivo /sbin/nologin. Éstas son sumamente restrictivas. Ni siquiera se puede ingresar al sistema y no tienen password asociadas. A los usuarios corrientes se les asigna desde el valor 500 en adelante. 3. Al usuario le es asignado un espacio de trabajo: workspace Suponiendo que creamos un usuario llamado enriquez: /]# useradd enriquez /home/enriquez éste es el espacio de trabajo (workspace del usuario creado) 42

4. Al usuario se le asigna una cuenta de correo. Ésta cuenta de correo se ubicará en: /var/spool/mail/nombre_del_usuario. 5. Al usuario se le entregan las políticas de contraseña a través del comando chage. 6. Al usuario se le crean 4 archivos de configuración: Los usuarios normales y root en sus directorios de inicio tienen varios archivos que comienzan con "." es decir están ocultos. Archivos de configuración: a) .bash_profile: Éste es el primer archivo que se ejecuta al hacer login. Aquí podremos indicar los alias, variables, configuración del entorno, etc. que deseamos iniciar al principio de la sesión. b) .bashrc segundo archivo que se ejecuta al hacer login. permite ejecutar sentencias de comando (ejecuta programas) c) .bash_history se crea al acceder a la cuenta y guarda las últimas 2000 líneas antes de hacer un enter. d) .bash_logout: Es el último programa que se ejecuta en la sesión el cual guarda la hora y fecha de salida, con el fin de registro, control, catastro. Aquí podremos indicar acciones, programas, scripts, etc., que deseemos ejecutar al salirnos de la sesión. 7. Al usuario se le asigna una shell. 4.7.1

El comando chage. (Primera prueba del primer semestre del 2017)

Con el comando chage podemos administrar la política de passwords de los usuarios. A continuación tenemos la función de cada uno de sus parámetros: Sintaxis: /]# chage -parámetro valor usuario 1. /]# chage -l usuario1 Muestra la política de contraseñas del usuario. Con éste comando puede ir verificando que sus configuraciones sean las correctas (y con éste comando le van a revisar su prueba). 2. /]# chage -m 4 usuario1 Establece el mínimo número de días entre cambios de contraseña a 4. No es muy relevante esta información. Sólo nos dice que no podremos cambiar nuestra contraseña antes de que hayan transcurrido 4 días desde el último cambio. 3. /]# chage -d 2020-9-28 usuario1 Establece la fecha del último cambio de contraseña a 2020-9-28. 4. /]# chage -E 2020-5-12 usuario1 Establece la fecha de caducidad de la cuenta del usuario al 2020-5-12. 5. /]# chage -h Muestra la ayuda.

43

6. /]# chage -I 1 usuario1 Éste comando hace que la cuenta se desactive después de 1 día desde la fecha de expiración de la contraseña. 7. /]# chage -M 30 usuario1 Establece el periodo de vigencia de la contraseña. Lo hace estableciendo el máximo número de días que deben transcurrir para que obligatoriamente sea cambiada. En nuestro ejemplo, la vigencia de la contraseña para el usuario1 es de 30 días. 8. /]# chage -W 15 usuario1 Establece el número de días para que aparezca una advertencia antes de que la password expire según lo establece el punto 7. En nuestro ejemplo, se emite una alerta a los 15 días antes de que expire la contraseña.

4.8

Los ficheros /sbin/nologin y /bin/false

Puede ser que queramos que un usuario no tenga ninguna shell válida. Para hacer esto, GNU/Linux nos ofrece dos posibilidades: una es emplear /bin/false y la otra emplear /sbin/nologin. Cualquiera de las dos hace "lo mismo", pero una es mucho más restrictiva que la otra. La shell /bin/false cierra cualquier tipo de entrada por consola, ssh, telnet y ftp al sistema. Por el contrario, /sbin/nologin hace lo mismo, pero no evita el acceso vía ftp. Además, si un usuario tiene el primer tipo de shell directamente no podrá acceder al sistema y no le aparecerá ningún tipo de información. Mientras que con la segunda sí se puede conseguir mostrar un texto, por defecto "This account is currently not available", que se configura en el fichero /etc/nologin.txt. Por ejemplo, creemos un usuario llamado rafael sin shell de inicio e.g. /sbin/nologin. (No podrá iniciar sesión) /]# useradd -s /sbin/nologin rafael Corroborémoslo: /]# grep rafael /etc/passwd rafael:x:1002:1002::/home/rafael:/sbin/nologin 4.8.1

Ejercicio n°4. Cree un usuario PEPITO con las siguientes características: (Primera prueba del primer semestre del 2017)

Solución: Observemos que la pregunta relacionada al cuadro "Inactividad" está planteado de una forma extremadamente ambigua. Por lo que se pregunta es por el tiempo en que se quiere que la cuenta sea desactivada luego de la fecha de expiración de la contraseña. /]# useradd PEPITO /]# passwd 123456 Si bien todo lo que sigue podríamos escribirlo en una sola línea lo haremos paso a paso por razones de claridad. /]# usermod -c "Usuario Válido" PEPITO /]# usermod -d /casa/PEPITO PEPITO

44

Comentario Work Space Fecha Expiración Bloqueo GID Gid Uid Shell Grupo Vigencia Pass Warning Inactividad

Usuario Válido /casa/PEPITO 30-04-2018 si 5000 3000 4000 /sbin/nologin Otro_Grupo 30 días 15 1 día

(no es necesario crear antes el directorio.) /]# usermod -e 2018-05-01 PEPITO /]# usermod -L PEPITO No sé como asignar el GID /]# usermod -u 4000 PEPITO /]# groupmod -g 3000 PEPITO /]# useradd -s /sbin/nologin PEPITO Hay que crear un grupo llamado: Otro_Grupo y asignarle una contraseña: /]# groupadd Otro_Grupo /]# gpasswd Otro_Grupo 123456 Utilicemos -g para que PEPITO pierda su pertenencia a su grupo primario. /]# usermod -g Otro_Grupo PEPITO /]# chage -M 30 PEPITO /]# chage -W 15 PEPITO /]# chage -I 1 PEPITO

4.9

El fichero /etc/login.defs

Este fichero configura las opciones del login de usuarios de forma permanente.Los usuarios existentes no se ven afectados. Es útil si queremos modificar los valores utilizados por defecto a la hora de crear cuentas de usuario como por ejemplo limitar el número de inicio y fin de los UID y GID o administrar las políticas de contraseñas de manera permanente. Por ejemplo, podemos configurar: PASS_MAX_DAYS (número) El máximo número de días que una contraseña puede ser usada. Si la contraseña es mayor a lo indicado, un

45

cambio de contraseña será forzado. Si no se especifica nada, la política de retención de la contraseña será -1: lo cual deshabilita la restricción. (una política de retención=0 significa: cambie la contraseña cuando y donde quiera) PASS_MIN_DAYS (número) El mínimo número de días permitida entre cambios de contraseña. Cualquier intento de cambio en un plazo menor al indicado será rechazado.Si no se especifica nada, la política de retención de la contraseña será -1: lo cual deshabilita la restricción. PASS_WARN_AGE (número) El número de días antes de que expire una contraseña en el cual se desplegará un mensaje de advertencia. Un cero indica que la advertencia se lanzará el día de la expiración,un valor negativo indica que no hay advertencia para emitir. Si no es especificado, ninguna advertencia será desplegada. PASS_WARN_LEN (número) Indica la extensión mínima de los caracteres de la contraseña. UID_MIN (número) UID_MAX (número) Indican los valores máximos y mínimos para la asignación automática de uid con el comando useradd. GID_MIN (número) GID_MAX (número) Indican los valores máximos y mínimos para la asignación automática de gid con el comando groupadd.

4.10

El fichero /etc/skel

Tanto la shell como el entorno gráfico y otras aplicaciones mantienen configuraciones personalizadas para cada usuario que se almacenan en el directorio personal. Es labor del administrador crear y mantener ficheros de configuración adecuados y copiarlos en los directorios personales. La orden useradd copia el contenido del directorio /etc/skel en el directorio personal de cada uno de los usuarios que crea. El directorio /etc/skel es bastante simple de configurar y usar. Proporciona una forma de estar seguro de que todos los nuevos usuarios de tu sistema LFS tienen la misma configuración inicial. El directorio /etc/skel es usado por el programa /usr/sbin/useradd. Para más información, consulta man useradd. skel puede servirnos como un poderoso generador de plantillas para los nuevos usuarios que creemos, evitándonos tener que hacer tareas duplicadas y ahorrándonos un tiempo considerable; especialmente si hablásemos de un número alto de nuevos usuarios.

4.10.1

Ejercicio n°5. Genere un guión tipo bash que sea aplicable para todos los futuros usuarios creados. (Primera prueba del primer semestre del 2017)

Lo que se pide es que cada vez que creemos un nuevo usuario, en la pantalla que se abra se despliegue la información pedida de la tabla: (La trampas son dos: 1. No se dispone de la información relativa a todas las variables de entorno. En el anexo se entrega una lista completa de éstas. 2. El formato para el despliegue tanto de fecha como de la hora requiere de un carácter especial: ‘, que se obtiene presionando la tecla alt gr + la tecla que contiene } y ]) Solución:

46

Fondo Fuentes Bienvenido usuario Al servidor UD. Realiza la conexión a las De la fecha El tipo de Shell en ejecución es El tipo de terminal en ejecución es Su cuenta de correo es Su work Space es

Rojo Amarillo Variable Variable HH:MM:SS DD/MM/AAAA Variable Variable Variable Variable

El ejercicio es extremadamente sencillo. Lo único que debemos hacer es editar el archivo: /etc/skel/.bash_profile y agregar las líneas que se detallan: /]# nano /etc/skel/.bash_profile setterm -background red setterm -foreground yellow El fondo de la pantalla no cambia a amarillo, sino a naranjo. No le pueden evaluar mal ésto, pues es un problema del S.O. ¡no suyo! echo Bienvenido usuario $USER echo Al servidor $HOSTNAME HORA=$(date +"%H:%M:%S") echo UD. Realiza la conexión a las %HORA FECHA=$(date +"%d-%m-%Y") echo De la fecha $FECHA echo El tipo de Shell en ejecución es $SHELL echo El tipo de terminal en ejecución es $TERM echo Su cuenta de correo es $MAIL echo Su workspace es $HOME Como ejercicio adicional, haga que la salida muestre si la hora es pm o am.

4.11

Consideraciones finales

1 Cuando se crea un usuario no es necesario crearle un grupo, pues cada vez que se crea un usuario se crea un UGO con un userid único e inequívoco guardado en /etc/passwd. 2 Mientras más nos alejamos del 0, menos permisos va a tener el usuario; por el contrario, mientras más cerca está del uid=0, más poder tiene. 3 Las cuentas de los usuarios creados están bloqueadas por defecto. Necesitan de una contraseña para desbloquearse.

5

Administración de permisos para archivos y directorios

En linux, los permisos se asignan por medio de los grupos. El usuario root puede cambiar los permisos a cualquier elemento del sistema de archivos. Para desplegar los archivos y directorios de un usuario con sus respectivos permisos utilizamos el comando ls con la opción l: 47

/]# ls -l dr-xr-xr-x. 2 root root 4096 Jul 31 18:39 bin La tercera columna es el usuario propietario del elemento. El cuarto elemento es el grupo de usuarios que tienen permisos sobre el elemento. Los primero que se lista a la izquierda es una serie de 10 caracteres terminados por un punto. El primer carácter nos indica si se trata de un archivo (-) o un directorio (d). Las siguientes tríos son los permisos. Los primeros son los permisos del usuario, los segundos del grupo al que pertenece el usuario y el tercero son los permisos de los usuarios que están fuera del grupo del usuario (en ese orden). Tienen la siguiente estructura: rwx rwx rwx, donde: r: read x: write x: execution

5.1

Permisos en archivos

r: Si tienes permiso de lectura de un archivo, puedes ver su contenido. w: Si tienes permiso de escritura de un archivo, puedes modificar el archivo. Puedes agregar, sobrescribir o borrar su contenido. x: Si el archivo tiene permiso de ejecución, entonces puedes decirle al sistema operativo que lo ejecute como si fuera un programa. Si es un programa llamado “foo” lo podremos ejecutar como cualquier comando. O un script (interprete) que necesita permiso de lectura y ejecución, un programa compilado solo necesita ser lectura.

5.2

Permisos en directorios

r: Si un directorio tiene permiso de lectura, puedes ver los archivos que este contiene. Puedes usar un “ls (list directory)” para ver su contenido, que tengas permiso de lectura en un directorio no quiere decir que puedas leer el contenido de sus archivos si no tienes permiso de lectura en esos. w: Con el permiso de escritura puedes agregar, remover o mover archivos al directorio. x: Ejecución te permite usar el nombre del directorio cuando estas accediendo a archivos en ese directorio, es decir este permiso lo hace que se tome en cuenta en búsquedas realizadas por un programa, por ejemplo, un directorio sin permiso de ejecución no seria revisado por el comando find.

5.3

Cambiar de propietario archivos o directorios

/]# chown "archivo o directorio" /]# chown -r "directorio y todo su contenido" El primero solo modifica un archivo, el segundo modifica a todos los archivos que contiene dentro ese directorio.

5.4

Cambiar de grupo archivos o directorios

/]# chgrp "archivo o directorio" /]# chgrp -r "directorio y todo su contenido"

48

5.5 000 001 010 011 100 101 110 111

La estructura binaria de los permisos 0 1 2 3 4 5 6 7

----x -w-wx r-r-x rwrwx

Si deseamos cambiar los privilegios de algún directorio o carpeta usamos: /]# chmod Por ejemplo: /]# chmod 705 Datos.txt

5.6

Ejercicios

5.6.1

Ejercicio 1

Cree 4 usuarios, dos hombres y dos mujeres y cambie los permisos de los directorios personales para que cada usuario tenga control total sobre su directorio privado (home) y el resto sólo permisos de lectura sobre los directorios de todos los demás. Creemos los usuarios y asignémoles sus passwd: /]# useradd pedro /]# passwd pedro /]# useradd carolina /]# passwd carolina /]# useradd juan /]# passwd juan /]# useradd luisa /]# passwd luisa Observemos que al crear 4 usuarios desde el root, todos, el root y los 4 usuarios poseen en sus carpetas /home los directorios home de los 4 usuarios recién creados. Desde root hacemos: /]# chmod 705 pedro /]# chmod 705 carolina /]# chmod 705 juan /]# chmod 705 luisa Dándole al tercer trío permisos r - x: 5, logramos que todos los usuarios tengan acceso al directorio home de todos. Ahora creemos dos grupos: alumnos y alumnas y asignemos los alumnos según corresponda (sin eliminar el grupo de origen):

49

/]# groupadd alumnas /]# groupadd alumnos /]# usermod -G alumnos pedro /]# usermod -G alumnos juan /]# usermod -G alumnas carolina /]# usermod -G alumnas luisa Verifiquemos: /]# id pedro uid=500(pedro) gid=500(pedro) groups=500(pedro),505(alumnos) Para ver los grupos y los usuarios asociados a ellos tenemos: /]# tail /etc/group Para acceder al archivo que contiene el nombre de nuestros usuarios: /]# tail /etc/passwd Creemos dos directorios: /]# mkdir archivos de alumnos /]# mkdir archivos de alumnas Asignemos permisos para que el grupo alumnos pueda ingresar a "archivos de alumnos" y lo mismo con las niñas: /]# chgrp alumnos archivos de alumnos /]# chgrp alumnas archivos de alumnas Ahora viene algo interesante. Queremos que sólo los alumnos entren a "archivos de alumnos" y los mismo para las niñas. Entonces, desde el root: /]# chmod 770 archivos de alumnos /]# chmod 770 archivos de alumnas 5.6.2

Ejercicio 2

Agregue el nombre completo a lo usuarios. Cree en el directorio /home del root los siguientes directorios: Gerencia Personal Empleados Haga que cada usuario tenga el control total sobre su directorio privado y el directorio del grupo al cual pertenece y de sólo lectura para el resto de los directorios. Nombre Pablo B Jonathan D Mauricio G Nicolas G Patricio P

Usuario pbarriaz jdelvallem mgarridom nguajardoc pparrag

Contraseña Pb487 Jd955 Mg361 Ng317 Pp476

Grupo Gerencia Personal Personal Empleados Gerencia 50

Vivente R

6 6.1

vrivasa

Vr186

Empleados

Programación de Scripts Introducción a la Shell

Shell es simplemente un intérprete de C. Programar un script no es nada más que abrir uno de los tantos ficheros que componen la estructura de archivos de linux con un editor de textos como nano, y escribir un programa dentro de él en un C puro. Éste archivo se interpreta (se ejecuta) mediante un proceso denominado shell. Ahora, existen muchas shells, siendo la que posee linux por defecto denominada bash, ubicada en el fichero /bin/bash, pudiendo accederse a ella tanto desde root ($), como desde el usuario (#). En etc/shells se guardan las referencias de los tipos de shell que soporta nuestra máquina. Estando dentro de un archivo de texto la programación se hace mucho más fácil si utilizamos comentarios, los que van precedidos de un símbolo #: #: Éste es un comentario. Recordemos algunos conceptos: Una Shell de Unix o simplemente Shell, es el término usado para referirse a un intérprete de comandos para Linux en C; la interfaz de usuario tradicional de los sistemas operativos basados en Unix y similares como GNU/Linux. En nuestro sistema, la Shell se encuentra en /bin/bash Un Script es un programa escrito en un lenguaje C puro interpretado por nuestra Shell. Importante: Si bien es cierto C es muy similar a C# y Java, también tiene diferencias importantes, por lo que debe ser muy cuidadoso en respetar los espacios y la sintaxis correcta. Sin darnos cuenta, ya hemos programado Scripts en una forma rudimentaria. Veamos ésto a continuación: Recordemos que al crear un usuario en Linux se generan automáticamente 4 archivos: .bash_profile .bashrc .bash_history y .bash_logout y que podemos editar cualquiera de ellos (en realidad, cualquier archivo), con Nano, de la forma: /]# nano .bash_profile Con echo podemos imprimir literales como "hola": /]# echo "hola" o variables. Por ejemplo, supongamos que deseamos imprimir la fecha con el comando date. Para ello primero debemos convertir el dato de la fecha en una variable. /]# h=$(date) /]# echo $h

51

6.2

Ejercicio: construya un script que despliegue información cada vez que inicie un nuevo usuario su sesión Segunda prueba del primer semestre del 2017

Edite un archivo tal que cada vez que se inicie un usuario se cree el directorio: /home/$USER/$UID/$FECHA/$HORA Vamos al archivo /etc/skel y editamos el archivo .bash_profile /]# cd /etc/skel skel]# nano .bash_profile Una vez dentro del archivo, agregamos al final del código las siguientes líneas: echo "Su UID es:" $UID echo "su cuenta de correo es:" $MAIL echo "Su workspace es:" $HOME hora=‘date +%H%M%S‘ Acá usamos el acento grave, en código ASCII el número 96: ‘. En el teclado, se encuentra en la misma tecla donde está el símbolo de cierre del corchete. Los espacios debe establecerlos exactamente como se indica. fecha=‘date +%d%m%Y‘ mkdir /home/$USER/$UID/$fecha/$hora -p Creemos un nuevo usuario: /]# useradd miguel /]# passwd miguel salgamos del sistema y volvamos a ingresar como miguel. Vemos que se despliega la información y se generaron el directorio especificado.

6.3

Nuestro primer Script

Programar un Script en Linux es extremadamente sencillo. Sólo debemos crear un archivo con nano y darle una extensión .sh. Ésto último no es necesario pero es una buena práctica. /]# nano script1.sh Con chmod le asignamos al archivo todos los permisos. /]# chmod 777 script1.sh ¿Cómo corremos los Scripts? Hay dos formas: 1 Escribiendo la ruta absoluta, por ejemplo: /]# /trabajo/script/script1.sh 2 Utilizando Scripts que ejecuten Scripts: /]# sh script1.sh

52

Creemos un Script que nos pregunte nuestro nombre y apellido y luego los despliegue en la pantalla. Por un asunto de orden primero construyamos un directorio donde iremos almacenando todos nuestros Scripts: /]# mkdir scripts /]# cd scripts scripts]# nano script1.sh Dentro del archivo escribimos las siguientes líneas: #! /bin/bash echo "Hola estimado" echo "Ingrese su nombre:" read NOM echo "Ingrese su apellido:" read APE echo "Su nombre completo es:"$NOM$APE Guardemos y salgamos con: control+o control+x despleguemos los archivos del directorio scripts: scripts]# ls -la vemos que se despliega script1.sh en blanco. Otorguémosle todos los permisos: scripts]# chmod 777 script1.sh y despleguemos nuevamente el contenido de archivos: scripts]# ls -la y vemos ahora que script1.sh se despliega en verde. Ejecutemos el Script: scripts]# sh script1.sh

6.4

Ejercicios

1. Escriba un Script que reciba dos números y obtenga la suma de ellos. Además, que posea un fondo verde y que las letras sean amarillas. #! /bin/bash echo "Ingrese el primer número" read a echo "Ingrese el segundo número" read b c=$((a+b)) echo "La suma de los números ingresados es: " $c 2. Construya un Script que permita realizar las cuatro operaciones básicas (uso del case). 53

#! /bin/bash echo "Ingrese el primer número:" read a echo "Ingrese el segundo número:" read b echo "Elige la operación:" echo "1. Suma" echo "2. Resta" echo "3. Multiplicación" echo "4. División" read op case $op in 1) res=$((a+b));; 2) res=$((a-b));; 3) res=$((a*b));; 4) res=$((a/b));; esac echo "El resultado es: " $res 3. Agregue al ejercicio anterior dos acciones: 1 ¿Desea seguir? 2 Que después de ejecutar una operación se limpie la pantalla. #! /bin/bash a=1 while(($a grupo2 . . . usuarion -> grupon #! /bin/bash echo "Ingrese nombre de usuario: " read usu echo "Ingrese nombre de grupo: " read gru echo "Ingrese cantidad: " read can for ((i=1;i index.html y le damos permisos: html]# chmod 644 index.html O bien podemos simplemente crear un archivo index.html y editalo con nano: html]# nano index.html Carguemos de nuevo localhost en el navegador y veremos que despliega el mensaje. 6. Ahora debemos poder ver la página desde nuestro navegador en la máquina física Windows. Para ello cambiamos la configuración de nuestra máquina virtual pasando nuestra tarjeta de red a modo Bridge y seleccionando la tarjeta de red física que tenemos cableada. 7. Reiniciamos nuestro servicio de red: /]# network service restart

78

8. Veamos la IP que tenemos ahora asignada a la tarjeta enp0s3. En nuestro caso es la 192.168.1.186/24 Si ingresamos ésta IP en la barra de direcciones del navegador Firefox dentro de nuestro CentOS podemos ver la página que hemos creado. Debe ocurrir lo mismo pero desde nuestra máquina Windows. 9. Le asignamos a nuestra tarjeta de red Ethernet cableada en Windows una dirección que esté dentro del mismo segmento de red que nuestro CentOS, digamos 192.168.1.187/24 10. Debemos abrir el puerto que está bloqueado en el firewall de CentOS para http. En CentOS vamos a: Aplicaciones Varios Cortafuegos. Damos click Seleccionamos http y le damos un ticket. Cerramos. 11. En el navegador Google Chrome de Windows ingresamos 192.168.1.186 y debemos visualizar la página que hemos creado. 12. Hagamos algo interesante. Vayamos a una página cualquiera desde Firefox en nuestro CentOS, digamos www.emol.com. Demos click derecho sobre el cuadro de tres líneas arriba a la derecha. Demos click a "Guardar página" para descargar los archivos (que serán dos) en /var/www.html, renombrado el archivo .html como index y borrando (o sobreescribiendo) el archivo index.html que ya teníamos. 13. Hagamos algún cambio en el archivo .html con un editor de textos (por ejemplo gedit) y guardemos. 14. Movamos la carpeta y el html que hemos descargado al directorio /var/www/html y reemplacemos el html que ya tenemos creado. 15. Ahora, ingresando la IP 192.168.1.186 desde un navegador en CentOS virtualizado o el Windows anfritión, debemos poder visualizar la página modificada.

79

16. Iniciamos el servicio httpd: /]# service httpd start Una vez iniciado el servidor Apache, vamos a configurarlo para que inicie desde modo boot. Así cada vez arranque Linux, se va a iniciar el servidor. Verifiquemos el estado del servidor con el siguiente comando: /]# chkconfig – – list httpd nos salen todos off. /]# chkconfig httpd on Verifiquemos otra vez: /]# chkconfig – – list httpd Ahora el 2, 3, 4 y 5 están activados. Estamos OK. 17. Revisemos que el servicio se esté ejecutando y hagamos una prueba de funcionamiento: /]# service httpd status httpd (pid 3103) is running... Lo detenemos: /]# service httpd stop Abrimos el navegador y vamos a la dirección del localhost: Firefox no se puede conectar a localhost porque Apache no está iniciado. Iniciémoslo: /]# service httpd start y recargemos la página. Debe aparecer la página de prueba de Apache que nos indica que el servicio está activo. 18. Rutas de los documentos que exhibe y el archivo de configuración de Apache (a) Rutas de los documentos exhibidos \var\www\html Efectivamente aquí encontramos nuestro archivo index.html con el texto plano: Bienvenido al servidor del MOV (b) Ruta del archivo de configuración de Apache \etc\httpd\conf\httpd.conf Donde encontramos: El correo del administrador ServerAdmin root@localhost El nombre del servidor y el puerto que está escuchando #ServerName www.example.com:80 El comando para editar el puerto que ha de escuchar Apache para empezar a comunicar los documentos que se encuentran en HTML. Listen:80 80

12.7

HTTPS con un certificado digital

12.7.1

Teoría

¿Qué es SSL? Un certificado SSL sirve para brindar seguridad al visitante de su página web, una manera de decirles a sus clientes que el sitio es auténtico, real y confiable para ingresar datos personales. Las siglas SSL responden a los términos en inglés (Secure Socket Layer), el cual es un protocolo de seguridad que hace que sus datos viajen de manera íntegra y segura, es decir, la transmisión de los datos entre un servidor y usuario web, y en retroalimentación, es totalmente cifrada o encriptada. El que los datos viajen cifrados, nos referimos a que se emplean algoritmos matemáticos y un sistema de claves que sólo son identificados entre la persona que navega y el servidor. Al tener un certificado SSL confiable, nuestros datos están encriptados, en ese momento podemos asegurar que nadie puede leer su contenido. Todo esto nos lleva a entender que la tecnología que brinda un certificado SSL es la transmisión segura de información a través de internet, y así confirmar que los datos están libres de personas no deseadas. Para poder utilizar un certificado SSL, en su página web, es de vital importancia que el servidor de Internet que usted contrató, soporte SSL. 12.7.2

La comandería

/]# yum install -y mod_ssl openssl El siguiente comando genera una clave: /]# openssl genrsa -out ca.key 1024 El siguiente comando genera el inicio de sesión del certificado de la solicitud de la clave: /]# openssl req -new -key ca.key -out ca.csr LLenamos los campos con la siguiente información: CL Santiago Santiago MOV analista miguel [email protected] 123456 IZQ Verificamos nuestra firma con el siguiente comando: /]# openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt Copiamos nuestras clave: /]# cp ca.crt /etc/pki/tls/certs /]# cp ca.key /etc/pki/tls/private/ca.key /]# cp ca.csr /etc/pki/tls/private/ca.csr Echemos un vistazo al archivo de configuración del SSL: /]# less /etc/httpd/conf.d/ssl.conf Salgamos Editemos el siguiente archivo: /]# nano +/SSLCertificateFile /etc/httpd/conf.d/ssl.conf

81

Comentemos la siguiente línea: #SSLCertificateFile /etc/pki/tls/certs/localhost.crt E inmediatamente debajo de ella escribamos: SSLCertificateFile /etc/pki/tls/certs/ca.crt Comentemos la siguiente línea: #SSLCertificateKeyFile /etc/pki/tls/private/localhost.key E inmediatamente debajo de ella escribamos: SSLCertificateKeyFile /etc/pki/tls/private/ca.key Guardemos y salgamos. Reiniciemos Apache: /]# service httpd restart Verifiquemos que SSH esté instalado: /]# ssh root@localhost Debe aparecer la siguiente información: The authenticity of host ’localhost (::1)’ can’t be established. RSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx Are you sure you want to continue connecting (yes/no)? SSL se puede verificar de alguna otra forma?

82

12.8

Instalación desatendida kickstart Redhat Boot desde la red sin intervención.

12.8.1

Teoría

¿Qué es kickstart? El método de instalación Kickstart de Red Hat es usado principalmente (pero no de forma exclusiva) por el sistema operativo Red Hat Enterprise Linux para realizar la instalación desatendida y la configuración del sistema operativo de forma automática. 12.8.2

La comandería

1. Lo primero que haremos será copiar todos los archivos de la ISO CentOS 6.9 en una carpeta llamada centos en nuestro escritorio. 2. La llevamos al directorio: \var\www\html 3. Vamos al directorio donde están los repositorios de CentOS: /]# cd etc etc]# cd yum.repos.d 4. Los copiamos a /tmp: yum.repos.d]# cp * /tmp 5. en yum.repos.d creamos y editamos un repositorio propio llamado: centos.repo: yum.repos.d]# nano centos.repo En el cual escribimos: [cent os6] name=CentOS 6 Repositorio baseurl=file:///var/www/html/centos gpgcheck=0 enabled=1 Guardamos y salimos. 6. Actualizamos los repositorios: yum.repos.d]# yum repolist 7. Desde root instalamos los siguientes servicios: /]# yum install httpd dhcp tftp-server syslinux system-config-kickstart -y 8. Creamos los siguientes directorios: /]# mkdir -p /tftpboot/images /]# mkdir -p /tftpboot/pxelinux.cfg 9. Copiamos los siguientes directorios: /]# cp /var/www/html/centos/images/pxeboot/vmlinuz /]# cp /var/www/html/centos/images/pxeboot/initrd.img 10. Modificamos el fichero: tftp: /]# cd /etc etc]# cd xinetd.d xinetd.d]# nano tftp

83

/tftpboot/images /tftpboot/images

Modificamos las siguientes dos líneas (debe quedar como sigue): server args = -s /tftpboot disable = no guardamos y salimos. 11. Volvamos a root, reiniciemos y encendamos los siguientes servicios:: /]# service xinetd restart /]# chkconfig tftp on 12. Copiemos los siguientes archivos: /]# cp /usr/share/syslinux/menu.c32 /tftpboot/ /]# cp /usr/share/syslinux/pxelinux.0 /tftpboot/ /]# cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample Damos yes a: overwrite? 13. Editemos el archivo dhcpd.conf: /]# nano /etc/dhcp/dhcpd.conf borremos todo lo que contiene y escribamos: authoritative; log-facility local7; ###Servidor DHCP### subnet 192.168.8.0 netmask 255.255.255.0 { option subnet-mask 255.255.255.0; option domain-name "example.com"; range dynamic-bootp 192.168.8.11 192.168.8.254; default-lease-time 600; max-lease-time 7200; next-server 192.168.8.1; filename "pxelinux.0"; } Guardemos y salgamos. 14. Configuremos nuestra tarjeta de red: /]# cd /etc/sysconfig/network-scripts /]# nano ifcfg-eth0 BOOTPROTO=static IPADDR=192.168.8.1 NETMASK=255.255.255.0 y reiniciemos los servicios: /]# service network restart /]# service dhcpd restart /]# chkconfig dhcpd on 15. Creamos el GRUB de arranque de nuestro sistema

84

/etc/dhcp/dhcpd.conf

/]# cd tftpboot/ tftpboot]# cd pxelinux.cfg Creamos un fichero llamado default pxelinux.cfg]# nano default y dentro de él escribamos: default menu.c32 prompt 0 timeout 100 MENU TITLE INSTALACIONES DESATENDIDAS menu color border 0 #ffffffff #00000000 menu color sel 7 #ffffffff #00000000 menu color title 0 #ffffffff #00000000 menu color tabmsg 0 #ffffffff #00000000 menu color unsel 0 #ffffffff #00000000 menu color hotsel 0 #ff000000 #ffffffff menu color hotkey 7 #ffffffff #ff000000 menu color scrollbar 0 #ffffffff #00000000 LABEL CentOS 6.9 x64 EDITION MENU LABEL CentOS 6.9 x64 EDITION KERNEL images/vmlinuz append initrd=images/initrd.img Linux Guardamos y cerramos.

ks=http://192.168.8.1/centos/ks.cfg

16. Reiniciamos los servicios: pxelinux.cfg]# service httpd restart pxelinux.cfg]# chkconfig on 17. Ahora creamos el fichero para que tenga una instalación desatendida: Vamos a la raíz y ejecutemos el siguiente comando: /]# system-config-kickstart Se abre la ventana de configuración gráfica de Kickstart. Creemos una configuración (es fundamental que dentro del método de instalación seleccionemos "Realizar nueva instalación", elijamos "Configuración de red DHCP" y que marquemos HTTP con los parámetros: 192.168.8.1 y /centos. Démosle un formateo básico y seleccionemos paquetes mínimos) y guardémosla en documentos como: ks.cfg Guardemos el archivo ks.cfg en el escritorio. Salgamos del editor gráfico. 18. Copiamos el ks.cfg que tenemos en el escritorio dentro de la carpeta CentOS que tenemos en el directorio /var/www/html 19. Debemos configurar el Firewall de Linux /]# yum install system-config-firewall Si es necesario instalémoslo (no olvide dejar la tarjeta de red en static) /]# system-config-kickstart En servicios confiables damos un ticket a www (HTTP) 85

Vamos a otros puertos y en añadimos dando un ticket a Definido por el usuario: Puerto: bootps protocolo: udp Damos a aplicar y yes. Vamos a otros puertos y en añadimos dando un ticket a Definido por el usuario: Puerto: tftp protocolo: udp Damos a aplicar y aceptar. 20. Ahora debemos desactivar SELinux /]# setenforce 0 21. Le entregamos permisos al archivo ks.cfg Primero ubiquémosnos en el directorio adecuado: /]# cd /var/www/html/centos centos]# chmod 644 ks.cfg Ahora, desde otra máquina vitual en VMWare debemos hacer la instalación desatendida. 22. Abrimos otra máquina virtual en VMWare sin SO. Configuramos su tarjeta de red como: En network connection Damos click a Custom: Specific virtual network Seleccionamos: VMnnet4 Y en nuestro servidor: Configuramos su tarjeta de red como: En network connection Damos click a Custom: Specific virtual network Seleccionamos: VMnnet4 23. La máquina cliente debe ser encendida desde la BIOS. Para ellos seleccionamos: Power Power Om to BIOS Aparece la Bios En Boot, subimos : En primer lugar Hard Drive En segundo lugar Network boot from.. le damos a F10 y listo!!!

86

12.9

DHCPD

12.9.1

Teoría

blabla 12.9.2

La comandería

blabla

87

12.10

SAMBA (bidireccional)

12.10.1

Teoría

blabla 12.10.2

La comandería

1. Anotamos la IP de nuestra máquina física que va a ser el cliente de nuestro servidor: 192.168.1.157/24 2. La máquina virtual debemos configurarla en modo adaptador puente y nos fijamos que el adaptador sea la cableada física de nuestra máquina cliente, en nuestro caso: Realtek PCIe GBE Family Controller. 3 Con ifconfig podemos ver la IP de nuestra tarjeta enp0s3 de CentOS 7 y la anotamos: 192.168.1.188 4 Surge generalmente un problema en la máquina virtual porque asigna la misma IP en forma masiva. Debemos cambiar la MAC. Vamos a: Máquina Configuración Red Avanzadas Y en Dirección MAC damos a refrescar 5 Instalamos Samba: /]# yum -y install samba samba-common samba-client 6 Los archivos de configuración están en: /]# cd /etc/samba 7 Primero vamos a modificar el archivo lmhosts samba/]# nano lmhosts Debe aparecer sólo la IP de loopback. Vamos a añadir primero la IP de la máquina CentOS seguido de SERVERCASTRO, luego la IP de nuestra máquina física con el nombre de nuestra máquina física, que en Windows 10 está en: Panel de control Sistema y seguridad Sistema Debe quedar así: 127.0.0.1 192.168.1.188 192.168.1.157

localhost SERVERCASTRO DESKTOP-JNED12L

Guardamos y salimos. 8 El archivo que mantiene la configuración del servicio es el smb.conf, pero como una ayuda a la configu-

88

racion está el archivo smb.conf.example, que lo copiamos: samba/]# cp smb.conf.example smb.conf Damos sí a sobreescribir. 9 Ahora, editamos el archivo smb.conf samba/]# nano smb.conf 9.1 Editamos la línea que contiene la palabra workgroup y le ponemos GRUPOCASTRO 9.2 La línea netbios name es muy importante, porque es el nombre con el que las máquinas Microsoft se identifican dentro de una red. Nosotros ponemos el nombre del servidor que asignamos como windows: SERVERCASTRO. No se olvide de borrar el punto y coma que antecede a la línea. 9.3 Grabamos y salimos. 9.4 Ahora creamos una cuenta del usuario windows en el equipo. samba/]# useradd -s /sbin/nologin Christian Agregamos la contraseña del sistema Samba, no la habitual para linux. samba/]# smbpasswd -a Christian Ingresamos como contraseña: 123456 9.5 Ahora abriremos el acceso al servicio para que lo esté externamente con setsebool: samba/]# setsebool -P samba_enable_home_dirs on 9.6 Abrimos los puertos: samba/]# iptables -F 9.7 El servicio Samba en realidad consiste de dos. Uno es el que comparte los archivos y el otro es el que propaga los nombres de las máquinas a través de la red de Microsoft para que se hagan visibles. Entonces hay que iniciar dos servicios: El que transmite los nombres (que están en el archivo lmhosts) a la red Microsoft: samba/]# service nmb start El servicio del servidor propiamente tal: samba/]# service smb start 9.8 Los configuramos para que se inicien automáticamente: samba/]# chkconfig nmb on samba/]# chkconfig smb on 9.9 Probemos la conectividad desde nuestro Windows cliente haciendo a un ping a la IP del servidor: SERVERCASTRO (esto último indicaría que el servicio nmb está funcionando correctamente). Observe que debe resultar con la IP y el nombre del servidor:

89

>ping 192.168.1.188 >ping SERVERCASTRO 9.10 Desde la máquina windows cliente vamos a: Este equipo Red Damos click a nuestro PC Damos click a la barra del navegador, donde debe aparecer el nombre de nuestro equipo. Escribimos la dirección de nuestro server inmediatamente después de las dos barras. Se nos debe pedir las credenciales de red. Ingresamos: Christian y la contraseña: 123456 y entramos a la carpeta home dentro del servidor Samba, llamada Christian. 9.11 Podemos guardar cualquier cosa en esta carpeta y podemos verificar que queda en /home/Christian de nuestro servidor con: samba/]# cd /home/Christian Christian/]# ls

90

12.11

Motor de correo vía la web (SQmail)

12.11.1

Teoría

blabla 12.11.2

La comandería

blabla

91

12.12

Servidor de virtualización VMWare (con instancias virtuales funcionando)

12.12.1

Teoría

blabla 12.12.2

La comandería

blabla

92

12.13

TOMCAT (Con apps en JAVA funcionando)

12.13.1

Teoría

blabla 12.13.2

La comandería

blabla

93

12.14

MOTOR BD ORACLE (+consulta)

12.14.1

Teoría

blabla 12.14.2

La comandería

blabla

94

12.15

Firewall (programado con reglas)

12.15.1

Teoría

blabla 12.15.2

La comandería

blabla

95

12.16

SQUID (proxy)

12.16.1

Teoría

blabla 12.16.2

La comandería

blabla

96

12.17

Vsftpd (Usuario Enjaulado.)

12.17.1

Teoría

blabla 12.17.2

La comandería

blabla

97

12.18

Telnet

12.18.1

Teoría

blabla 12.18.2

La comandería

blabla

98

12.19

Antivirus

12.19.1

Teoría

blabla 12.19.2

La comandería

blabla

99

12.20

WINE (Ambiente de trabajo emulado para correr apps con tecnología MS)

12.20.1

Teoría

blabla 12.20.2

La comandería

blabla

100

12.21

VNC server

12.21.1

Teoría

blabla 12.21.2

La comandería

blabla

101

12.22

Configuración SElinux (privación ejecución módulos kernel)

12.22.1

Teoría

SELinux o "Security-Enhanced Linux" es un mecanismo que proporciona políticas de control de acceso obligatorio al sistema operativo, estas políticas definen como las aplicaciones y los usuarios pueden acceder a los archivos, directorios, etc. De esta manera se incorpora una capa de protección adicional, asignando un "Contexto de seguridad" a cada archivo, directorio y proceso; cuando un proceso accede a un archivos esta capa de seguridad verificará que el contexto de seguridad del mismo sea compatible con el contexto de seguridad del archivo al que desea acceder. 12.22.2

La comandería

blabla

102

References [1] Petersen, R. (2009). Linux: Manual de referencia, México DF, México: McGraw-Hill. [2] Apuntes de clases de Taller de Sistemas Operativos I: Linux, con Rubén Coello, Otoño del 2017, Inacap sede Santiago centro. [3] http://www.ereborlog.eu/10-ejemplos-del-comando-useradd-en-linux/ [4] http://linuxsuperuser07.blogspot.cl/2011/09/rhel-6-file-system.html [5] https://travesuras.wordpress.com/category/comandos/ [6] https://computernewage.com/2015/06/14/el-arbol-de-directorios-de-linux-al-detalle-que-contienecada-carpeta [7] http://www.ite.educacion.es/formacion/materiales/85/cd/linux/m1/administracin_de_usuarios_y_grupos.html [8] http://fraterneo.blogspot.cl/2012/01/administracion-de-usuarios-y-grupos.html Variables de entorno: [9] https://manuais.iessanclemente.net/index.php/Variables_de_contorno_en_Linux [10] https://travesuras.wordpress.com/2011/12/19/20111219-1/ Controles de formato para fecha y hora. [11] https://www.cyberciti.biz/faq/linux-unix-formatting-dates-for-display/ Claves y usuarios en linux: [12] http://rm-rf.es/comando-chage-tiempo-de-vida-de-claves-y-usuarios-en-gnulinux/ [13] //dep.fie.umich.mx/ stinoco/archivos/RutasAbsolutasYRelativas.pdf [14] //www.computerhope.com/unix/utar.htm [15] https://blog.desdelinux.net/cron-crontab-explicados/ [16] https://www.alvarolara.com/2014/05/12/diferencias-entre-bridge-nat-red-interna-y-adaptador-envirtualbox/ [17] https://www.linuxtotal.com.mx/?cont=info_admon_006 DNS [18] https://www.youtube.com/watch?v=Z7N2Na-7T6Y HTTPD [19] https://www.youtube.com/watch?v=3dXhLPiAUqg HTTPS [20] https://www.youtube.com/watch?v=8Qz5MILdxR4 Kickstart [21] https://www.youtube.com/watch?v=PI2VQ51UTLM

103

Appendix A

Listado de las variables de entorno en linux

CDPATH: Una lista de directorios separados por el signo ’:’ usada como ruta de acceso por el comando cd. HOME: El directorio principal del usuario. MAIL: Email del usuario. PATH: Una lista de directorios, separados por comas, en los cuales el intérprete de comandos busca por comandos. BASH: La ruta de acceso completa usada para ejecutar la instancia actual de bash. BASH_VERSION: El numero de versión de bash usada. GROUPS: Una matriz que contiene la lista de los grupos a que pertenece el usuario actual. HISTCMD: El índice del comando actual en la historia de comandos. HISTCONTROL: Define si un comando es añadido a la historia de comandos. HISTFILE: El nombre del fichero en el cual se graba la historia de comandos de comandos. El valor por defecto es /.bash_history. HISTFILESIZE: El número máximo de líneas contenidas en la historia de comandos, por defecto 500. HISTIGNORE: Una lista separada por comas de los patrones usados para definir que comandos deben de grabarse en la historia de comandos. HISTSIZE: El máximo numero de comandos a recordar en la historia de comandos, por defecto 500. HOSTFILE: Contiene el nombre de un fichero en el mismo formato que /etc/hosts que debería de usarse cuando el intérprete de comandos necesita completar un nombre de máquina (hostname). HOSTNAME: El nombre de máquina actual. OLDPWD: Directorio previo definido por el comando ’cd’. PWD: Directorio actual definido por el comando ’cd’. RANDOM: Cuando se llama esta variable un número entero entre 0 a 32767 es generado. SECONDS: Número de segundos desde que Bash fue arrancado. UID: El valor numérico real del usuario actual.

104

Appendix B

Listado de los formatos para los comandos de fecha y hora

%%: a literal %a: locale’s abbreviated weekday name (e.g., Sun) %A: locale’s full weekday name (e.g., Sunday) %b: locale’s abbreviated month name (e.g., Jan) %B: locale’s full month name (e.g., January) %c: locale’s date and time (e.g., Thu Mar 3 23:05:25 2005) %C: century; like %Y, except omit last two digits (e.g., 21) %d: day of month (e.g, 01) %D: date; same as %m/%d/%y %e: day of month, space padded; same as %_d %F: full date; same as %Y-%m-%d %g: last two digits of year of ISO week number (see %G) %G: year of ISO week number (see %V); normally useful only with %V %h: same as %b %H: hour (00..23) %I: hour (01..12) %j: day of year (001..366) %k: hour ( 0..23) %l: hour ( 1..12) %m: month (01..12) %M: minute (00..59) %n: a newline %N: nanoseconds (000000000..999999999) %p: locale’s equivalent of either AM or PM; blank if not known %P: like %p, but lower case %r: locale’s 12-hour clock time (e.g., 11:11:04 PM) %R: 24-hour hour and minute; same as %H:%M %s: seconds since 1970-01-01 00:00:00 UTC %S: second (00..60) %t: a tab %T: time; same as %H:%M:%S %u: day of week (1..7); 1 is Monday %U: week number of year, with Sunday as first day of week (00..53) %V: ISO week number, with Monday as first day of week (01..53) %w: day of week (0..6); 0 is Sunday %W: week number of year, with Monday as first day of week (00..53) %x: locale’s date representation (e.g., 12/31/99) %X: locale’s time representation (e.g., 23:13:48) %y: last two digits of year (00..99) %Y: year %z: +hhmm numeric timezone (e.g., -0400) %:z: +hh:mm numeric timezone (e.g., -04:00) %::z: +hh:mm:ss numeric time zone (e.g., -04:00:00) %:::z: numeric time zone with : to necessary precision (e.g., -04, +05:30) %Z: alphabetic time zone abbreviation (e.g., EDT)

105