Está en la página 1de 15

[root@blue ~]# echo "useradd userdel usermod"

useradd userdel usermod


[root@blue ~]# echo "groupadd groupdel groupmod"
groupadd groupdel groupmod
[root@blue ~]#
[root@blue ~]#
[root@blue ~]# ls /etc/passwd
/etc/passwd
[root@blue ~]# grep root /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@blue ~]#
[root@blue ~]# ls /etc/group
/etc/group
[root@blue ~]# ls /etc/shadow
/etc/shadow
[root@blue ~]# ls /etc/lo
locale.conf localtime login.defs logrotate.conf logrotate.d/
[root@blue ~]# ls /etc/lo
locale.conf localtime login.defs logrotate.conf logrotate.d/
[root@blue ~]# ls /etc/login.defs
/etc/login.defs
[root@blue ~]# ls /usr/bin/passwd
/usr/bin/passwd
[root@blue ~]# ls /usr/bin/su
/usr/bin/su
[root@blue ~]# ls /usr/bin/ssh
ssh ssh-add ssh-agent ssh-copy-id ssh-keygen ssh-keyscan
[root@blue ~]# ls /usr/bin/ssh
/usr/bin/ssh

escenario

Crear un grupo llamado developments


Crear un grupo llamado hpe
Crear los usuario daniel, pedro marisol, alberto, configurar para que grupo secundario sea
developments y el grupo primario hpe.
Configurar el password qwerty123 para daniel y pedro
Configurar el password asdf431 para marisol y alberto.
Asegurarse que los usuarios pedro y alberto no tengan acceso por shell.

TEST
¿Saber si el grupo se dio de alta correctamente?
Ejecutar un cat /etc/passwd y localizar los usuarios visualmente, observar sus
especificaciones.
Ejecutar id user para validar nombre, grupos primarios y secundarios.
Hacer una prueba por ssh (valida password)

Al estilo redhat
Crear los usuario daniel, pedro marisol, alberto, membership, grupo primario hpe y grupo
secundario developments
Configurar el password qwerty123 para daniel y pedro
Configurar el password asdf431 para marisol y alberto.
Asegurarse que los usuarios pedro y alberto no tengan acceso por shell.

[root@blue ~]# groupmod develments -n developments


groupmod: el grupo «develments» no existe
[root@blue ~]# grep devel /etc/group
develpments:x:1001:
[root@blue ~]# groupmod develpments -n developments
[root@blue ~]# grep devel /etc/group
developments:x:1001:
[root@blue ~]# grep hpe /etc/group
hpe:x:1002:
[root@blue ~]# useradd daniel -g hpe -G developments
[root@blue ~]# id
uid=0(root) gid=0(root) grupos=0(root)
contexto=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[root@blue ~]# id daniel
uid=1001(daniel) gid=1002(hpe) grupos=1002(hpe),1001(developments)

[root@blue ~]# useradd pedro -g hpe -G developments


[root@blue ~]# useradd marisol -g hpe -G developments
[root@blue ~]# useradd alberto -g hpe -G developments

[root@blue ~]# id pedro


uid=1002(pedro) gid=1002(hpe) grupos=1002(hpe),1001(developments)
[root@blue ~]# id marisol
uid=1003(marisol) gid=1002(hpe) grupos=1002(hpe),1001(developments)
[root@blue ~]# id alberto
uid=1004(alberto) gid=1002(hpe) grupos=1002(hpe),1001(developments)

[root@blue ~]# echo "qwerty123" | passwd daniel --stdin


Cambiando la contraseña del usuario daniel.
passwd: todos los tokens de autenticación se actualizaron exitosamente.
[root@blue ~]# echo "qwerty123" | passwd pedro --stdin
Cambiando la contraseña del usuario pedro.
passwd: todos los tokens de autenticación se actualizaron exitosamente.
[root@blue ~]# usermod -s /sbin/nologin pedro
[root@blue ~]# usermod -s /sbin/nologin alberto
[root@blue ~]# grep pedro /etc/passwd
pedro:x:1002:1002::/home/pedro:/sbin/nologin
[root@blue ~]# grep alberto /etc/passwd
alberto:x:1004:1002::/home/alberto:/sbin/nologin

Directorio colaborativo

user1
user2
user3 users
user4

documents/

Herramientas.

ls, mkdir, rm, tree. chgrp, chmod

ESCENARIO:

Crear un directorio colaborativo en /hpedocuments para el grupo hpe.

chown -v root:hpe /hpedocuments.


chmod -v 770 /hpedocuments/
chmod -v g+s /hpedocuments/

ls -ld /hpedocuments/
drwxrws---. 2 root hpe 6 ago 4 10:43 /hpedocuments/

s = Set Group id (permiso especial para directorio colaborativo)

Pruebas:
Switchearse con un usuario y crear un archivo, salir, y validar que otro usuario lo pueda leer.
[root@blue ~]# su - marisol
[marisol@blue ~]$ cd /hpedocuments/
[marisol@blue hpedocuments]$ ls .
[marisol@blue hpedocuments]$ ls -ld .
drwxrws---. 2 root hpe 6 ago 4 10:43 .
[marisol@blue hpedocuments]$ touch text1
[marisol@blue hpedocuments]$ ls -ld
drwxrws---. 2 root hpe 19 ago 4 10:56 .
[marisol@blue hpedocuments]$ ls -al
total 0
drwxrws---. 2 root hpe 19 ago 4 10:56 .
dr-xr-xr-x. 19 root root 255 ago 4 10:43 ..
-rw-r--r--. 1 marisol hpe 0 ago 4 10:56 text1
[marisol@blue hpedocuments]$ exit
cerrar sesión
[root@blue ~]# su - daniel
[daniel@blue ~]$ cd /hpedocuments/
[daniel@blue hpedocuments]$ ls -al
total 0
drwxrws---. 2 root hpe 19 ago 4 10:56 .
dr-xr-xr-x. 19 root root 255 ago 4 10:43 ..
-rw-r--r--. 1 marisol hpe 0 ago 4 10:56 text1
[daniel@blue hpedocuments]$ touch image1
[daniel@blue hpedocuments]$ ls -al
total 0
drwxrws---. 2 root hpe 33 ago 4 10:57 .
dr-xr-xr-x. 19 root root 255 ago 4 10:43 ..
-rw-r--r--. 1 daniel hpe 0 ago 4 10:57 image1
-rw-r--r--. 1 marisol hpe 0 ago 4 10:56 text1
[daniel@blue hpedocuments]$ cat text1
[daniel@blue hpedocuments]$
[daniel@blue hpedocuments]$
[daniel@blue hpedocuments]$
[daniel@blue hpedocuments]$

Habilitar repositorios.

Activar los repositorios base y appstream de las siguientes urls:


1. BaseOS file:///mnt/cdrom/BaseOS/
2. AppStream lenguajes (interpretes y compiladores), bases de datos, otros.Modulos
file:///mnt/cdrom/AppStream/

cd /etc/yum.repos.d
vim default.repo
[baseOS]
name=RHEL 9 Base OS
baseurl=file:///mnt/cdrom/BaseOS/
enable=1
gpgcheck=0

[AppStream]
name=RHEL 9 AppStream OS
baseurl=file:///mnt/cdrom/AppStream/
enable=1
gpgcheck=0

yum repolist
yum list
yum install git

Estudio:
Conectar el CDROM a la VM
[root@red ~]# mkdir /mnt/cdrom
[root@red ~]# mount /dev/sr0 /mnt/cdrom
mount: /mnt/cdrom: ATENCIÓN: origen protegido contra escritura; se monta como solo
lectura.

Tuned

Instalar tuned
dnf install -y tuned
Iniciar y habilitar el servicio:
systemctl enable --now tuned
Ver el perfil activo
tuned-adm profile
Current active profile: virtual-guest
Perfil recomendado
tuned-adm recommend
Cambiar al perfil de desktop
tuned-adm profile desktop
Quitar el perfil aplicado
tuned-adm off

SCENARIO

Agregar memoria swap adicional de 512M, la memoria puede tener un rango válido entre
470 y 530M.

Revision rapida.
vgs
lsblk

126 dd if=/dev/zero /root/swap bs=1M count=512


127 dd if=/dev/zero of=/root/swap bs=1M count=512
128 mkswap /root/swap
129 chmod 0600 /root/swap
130 free -n
131 free -m
132 swapon /root/swap
133 free -m
134 bc
135 swapon -s

ESCENARIO: Establecer el password de root del sistema red a redhat.

PASSWORD=$(openssl rand -hex 12)


echo $PASSWORD | passwd root --stdin
reboot

procedimiento
reboot
Menu grub
seleccionar la entada rescue.
Presionar e
Ir al final de la linea de linux y agregar rd.break
Presionar CTRL-X
ENTER
mount -o remount,rw /sysroot
chroot /sysroot
passwd root
redhat
redhat
touch /.autorelabel
exit
exit
Correcto, Al autenticar con root, la autenticacion se rechaza.
- SSHD (ex200), Directivas podrian bloquear el acceso al usuario root.
- PAM (ex342)

ESCENARIO: Configurar la interfaz de red con la configuracion provista a continuacion:


Prep:
systemctl set-default multi-user.target
reboot

ip: 192.168.8.20
gw: 192.168.8.1
dns 192.168.8.1
hostname: blue.example.com

Autenticarse con root.


systemctl isolate graphical.target

nmtui
nmcli con show

hostnamectl set-hostname blue.example.com --static


reboot
Rev configuracion
ip a s
ip route
cat /etc/resolv.conf

Modificar los archivos de configuracion.


/etc/sysconfig/network-scripts/
nmcli --reload

Desactivar NetworkManager
systemctl disable --now networkManager
Crear los archivos en /etc/sysconfig/network-scripts/
systemctl enable --now Network

ESCENARIO

Con el usuario student, programar un trabajo que ejecute cada 5 minutos, el comando
“logger Hola”

CRON
AT
su - user
cat /etc/crontab
crontab -e

*/2 * * * * logger "Hola"

crontab -l
sudo su -
tail -f /var/log/cron
CRTL-C
crontab -e -u student

Buscar todos los archivos que se encuentren en /home/student, que pertezcan a student y
guardarlos en el directorio /root/backup.

find /home/student -user student -type f -exec cp {} /root/backup/ \;


ls /root/backup

Adicional
Buscar archivos por grupo, fecha de creación, por permisos.

fdisk ---> MBR 2TB, 15 particiones


gdisk gpt ----> GPT 1PT, 1024

fdisk /dev/vdb
n
p
1
ENTER
+520M
t
82
p
w
udevadm settle
mkswap /dev/vdb1
swapon /dev/vdb1
free -m

NOTA: Repaldar el fstab


cp /etc/fstab /root/

echo "/dev/vdb1 swap swap defaults 0 0" >> /etc/fstab


systemctl daemon-reload

systemctl restart swap.target


reboot
free -m

ESCENARIO:
Buscar en el archivo /usr/share/cracklib/cracklib.txt todas las lineas con la cadena ing y
rediccionar la salida al archivo /root/results, el archivo results no debe contener lineas en
blanco y el orden original debe respetarse en el archivo results.

cd /usr/share/cracklib
strings cracklib-small.pwd > cracklib.txt

solucion
cd /usr/share/cracklib/
grep ing cracklib.txt
grep ing cracklib.txt > /root/results

ESCENARIO:
Crear un archivor llamado /root/backup.tar.bz2 del directorio /usr/local/share.
tar cvfj /root/backup.tar.bz2 /usr/local/share/
c create
v verbose
f file
j bzip2, J xz, z, gzip
tar tvf /root/backup.tar.bz2 # comprobar
file /root/backup.tar.bz2

ESCENARIO:
Crear un grupo llamado system76 con el guid 3307.

groupadd -g 3307 system76

Preparar ambiente:

fdisk /dev/vdb
n
p
2
ENTER
1.5G
t
2
8e
p
w
udevadm settle

pvcreate /dev/vdb2
vgcreate vg0 /dev/vdb2
vgs
lvcreate --name u01 -L 900M vg0
mkfs.xfs /dev/vg0/u01
mkdir -pv /u01
echo "/dev/vg0/u01 /u01 xfs defaults 0 0" >> /etc/fstab
systemctl daemon-reload
mount -a
df -h

systemctl enable --now debug-shell


echo “fail /fail ext4 defaults 0 0” >> /etc/fstab
reboot

TTY. TTY9 root


CTRL+ALT+F9

ESCENARIO: Extender la capacidad del LV u01 300M adicionales, ningun archivo del FS
original, debe perderse.

lvs vg0 #cual es el VG al que pertenece u01


vgs vg0 # mostrar el espacio libre
# observar y determinar si el VG cuenta con espacio para la extension.
lvextend -L+300M /dev/vg0/u01
lvs u01
mount | grep u01
#si es ext4
resize2fs /u01
# si es xfs
xfs_growfs /dev/vg0/u01
df -h
vgcfgrestore

ISSUE
lvextend -L 300M /dev/vg0/u01 #cambiar incorrectamente el tamaño del LV

lvextend -l 300 /dev/vg0/u01


vgcfgrestore -l vg0
vgcfgrestore -f /etc/lvm/backup/vg0/vg0 vg0
vgcfgrestore vg0

umount /u01
lvremove u01 vg0
lvcreate -L 1200M --name u01 vg0
lvs
grep u01 /etc/fstab
mkfs.xfs /dev/vg0/u01
mount -a
cp u01/* /u01/

Crear un Volume Group llamado vgdata con tamaño de 1GB, el tamaño de extension fisica
es de 16MB, y sobre este VG crear un Logical volume con 30 extensiones fisicas con el
nombre u02. Formatear dicho voluumen con XFS y montarlo de forma persistente en /u02.

Donde poder crear la partición de 1G???? lsblk

Crear la particion fdisk


Crear el PV pvcreate
Crear el VG vgcreate -s 16m vgdata /dev/vdb3 y vgdisplay vgdata
Crear el LV lvcreate -l 30 --name u02 vgdata y lvs
Formatear mkfs.xfs /dev/vgdata/u02
montar echo "/dev/vgdata/u02 /u02 xfs defaults 0 0" >> /etc/fstab mkdir /u02 systemctl
daemon-reload mount -a
reboot

getenforce
setenforce
getenforce
semanage port -l | grep http_port_t

Instalar httpd
yum -y install httpd

vim /etc/httpd/conf/httpd.conf
cambiar Listen 80 por Listen 82
systemctl start httpd
ERROR
Buscar el error
journalctl -f

semanage port -a -t http_port_t -p tcp 82


systemctl start httpd
systemctl enable httpd

man semanage-fcontext

semanage fcontext -a -t httpd_sys_content_t "/opt/www(/.*)?"


restorecon -RFv /opt/www/

mkdir /exports
[root@red html]# mkdir /documents
[root@red html]# mkdir -pv /exports/{sales,enginering,architect,chief}
mkdir: se ha creado el directorio '/exports/sales'
mkdir: se ha creado el directorio '/exports/enginering'
mkdir: se ha creado el directorio '/exports/architect'
mkdir: se ha creado el directorio '/exports/chief'

yum -y install nfs-utils


vim /etc/exports
/documents *(rw)
/exports/ *(rw)
/exports/architect *(rw)
/exports/chief *(rw)
/exports/enginering *(rw)
/export/sales *(rw)
systemctl enable --now nfs-server
systemctl enable --now rpcbind
showmount -e localhost # se muestran volumenes compartidos

del lado del cliente


sudo yum install -y nfs-utils
ESCENARIO:
Haga un montaje directo del export /documents que se encuentra en 192.168.8.13 en el
directorio /mnt/export.

prueba inicial

sudo mkdir -pv /mnt/testnfs


sudo mount -t nfs 192.168.8.13:/documents /mnt/testnfs

df -h

sudo umount /mnt/testnfs

AUTOFS
AUTOMATIC FILE SYSTEM
Montar automaticamente los FS bajo demanda.

- Cuando un usuario requiere el FS este se monta automaticamente en el server


- Cuando el usuario no tiene en uso el FS este se desmonta automaticamente del
server (timeout 300s)

sudo yum install -y autofs


sudo vim /etc/auto.master.d/direct.autofs
/- /etc/auto.direct
sudo vim /etc/auto.direct
/mnt/export -rw,sync,fstype=nfs4 192.168.8.13:/documents
sudo systemctl restart autofs

Usar bajo demanda


cd /mnt/export
df -h
192.168.8.13:/documents 26G 4.1G 22G 16% /mnt/export

# Crear un directorio o unos archivos en /mnt/export


touch carta
touch estados.txt
mkdir test
cd

#Esperar la desconexion

Asignación indirecta
/exports/ *(rw) AD
/exports/architect *(rw) AD
/exports/chief *(rw) AD Asignacion indirecta. (comodines)
/exports/enginering *(rw) AD
/export/sales *(rw) AD

ESCENARIO:

Crear una asignacion indirecta con la cual los directorios que estan bajo /exports puedan ser
automontados bajo demanda.

cat /etc/auto.master.d/indirect.autofs
/exports /etc/auto.indirect
sudo cat /etc/auto.indirect
* -rw,syn,fstype=nfs4 192.168.8.13:/exports/&

sudo systemctl restart autofs

Verificar

yum install container-tools

exit
podman login registry.redhat.io
username:
password:
Login sucedeed !!!

podman login registry.redhat.io --get-login


sudo vim /etc/containers/registries.conf
[registries.search]
registries = ['registry.redhat.io', 'quay.io', 'docker.io']

podman search docker.io/wordpress # buscar imagenes solo en docker.io


podman search registry.redhat.io/ubi-micro
podman search registry.redhat.io/ubi8-micro --list-tags # listar todas las versiones de la
imagen disponibles.
podman search docker.io/registry --list-tags
Obtener la version mas nueva de registry.
docker pull docker.io/library/registry:0.5.9
[student@blue ~]$ mkdir container
[student@blue ~]$ cd container/
[student@blue container]$ cat > Containerfile << EOF
> FROM registry.access.redhat.com/ubi8/ubi:latest
> RUN dnf install -y python3
> CMD ["/bin/bash", "-c", "echo hello"]
> EOF

mkdir container
vi Containerfile
FROM registry.access.redhat.com/ubi8/ubi:latest
RUN dnf install -y python3
CMD ["/bin/bash", "-c", "echo hello"]

podman build -t example-image .

podmain images
REPOSITORY TAG IMAGE ID CREATED SIZE
example-image latest 1534d68ce9d5 7 minutes ago 2

podman-build Compilar una imagen de contenedor con un archivo de contenedor.


podman-run Ejecutar un comando en un nuevo contenedor.
podman-images Enumerar las imágenes en el almacenamiento local.
podman-ps Imprimir información sobre los contenedores.
podman-inspect Mostrar la configuración de un contenedor, una imagen, un volumen,
una red o un pod.
podman-pull Descargar una imagen de un registro.
podman-cp Copiar archivos o carpetas entre un contenedor y el sistema de
archivos local.
podman-exec Ejecutar un comando en un contenedor en ejecución.
podman-rm Eliminar uno o más contenedores.
podman-rmi Eliminar una o más imágenes almacenadas localmente.
podman-search Buscar una imagen en un registro.

También podría gustarte