LINUX - EJERCICIO 1 (FÁCIL)
Tras haber seguido el manual con comandos de linux, reaiza los siguientes ejercicios intentado resolverlos sin mirar las soluciones:
LINUX - EJERCICIO 2
Ejercicios para practicar comandos de consola de Linux:
Listar todos los archivos del directorio bin.
ls /bin
Listar todos los archivos del directorio tmp.
ls /tmp
Listar todos los archivos del directorio etc que empiecen por t en orden inverso.
ls –r /etc/t*
Listar todos los archivos del directorio dev que empiecen por tty y tengan 5 caracteres.
ls /dev/tty??
Listar todos los archivos del directorio dev que empiecen por tty y acaben en 1,2,3 ó 4.
ls /dev/tty*[1-4]
Listar todos los archivos del directorio dev que empiecen por t y acaben en C1.
ls /dev/t*c1
Listar todos los archivos, incluidos los ocultos, del directorio raíz.
ls –a /
Listar todos los archivos del directorio etc que no empiecen por t.
ls –d /etc/[^t]*
Listar todos los archivos del directorio usr y sus subdirectorios.
ls –R /usr
Cambiarse al directorio tmp, crear directorio PRUEBA.
cd /tmp mkdir PRUEBA
Verificar que el directorio actual ha cambiado.
pwd
Mostrar el día y la hora actual.
date
Con un solo comando posicionarse en el directorio $HOME.
cd /home
Verificar que se está en él.
pwd
Listar todos los ficheros del directorio HOME mostrando su número de inodo.
ls -i
Borrar todos los archivos y directorios visibles de vuestro directorio PRUEBA.
rm -rf PRUEBA/*
Crear los directorios dir1, dir2 y dir3 en el directorio PRUEBA. Dentro de dir1 crear el directorio dir11. Dentro del directorio dir3 crear el directorio dir31. Dentro del directorio dir31, crear los directorios dir311 y dir312.
mkdir PRUEBA/dir1
mkdir PRUEBA/dir1/dir11
mkdir PRUEBA/dir2
mkdir PRUEBA/dir3
mkdir PRUEBA/dir3/dir31
mkdir PRUEBA/dir3/dir31/dir311
mkdir PRUEBA/dir3/dir31/dir312
Copiar el archivo /etc/motd a un archivo llamado mensaje de vuestro directorio PRUEBA.
sudo touch /etc/motd PRUEBA/mensaje
Copiar mensaje en dir1, dir2 y dir3.
cd PRUEBA
cp mensaje dir1/mensaje && cp mensaje dir2/mensaje && cp mensaje dir3/mensaje
Comprobar el ejercicio anterior mediante un solo comando.
ls -R PRUEBA
Copiar los archivos del directorio rc.d que se encuentra en /etc al directorio dir31.
cp -r /etc/rc.d dir31
Copiar en el directorio dir311 los archivos de /bin que tengan una a como segunda letra y su nombre tenga cuatro letras.
cp -r /bin/?a?? PRUEBA/dir3/dir31/dir311
Copiar el directorio de otro usuario y sus subdirectorios debajo de dir11 (incluido el propio directorio).
sudo cp -r ../usuario2 PRUEBA/dir1/dir11
Mover el directorio dir31 y sus subdirectorios debajo de dir2.
mv PRUEBA/dir3/dir31 PRUEBA/dir2
Mostrar por pantalla los archivos ordinarios del directorio HOME y sus subdirectorios.
ls -R $HOME
Ocultar el archivo mensaje del directorio dir3.
mv PRUEBA/dir3/mensaje PRUEBA/dir3/.mensaje
Borrar los archivos y directorios de dir1, incluido el propio directorio.
rm -rf PRUEBA/dir1
Copiar al directorio dir312 los ficheros del directorio /dev que empiecen por t, acaben en una letra que vaya de la a a la b y tengan cinco letras en su nombre.
cp /dev/t???[a*b] /home/ubuntu/PRUEBA/dir3/dir31/dir312
Borrar los archivos de dir312 que no acaben en b y tengan una q como cuarta letra.
rm -r PRUEBA/dir2/dir31/dir312/???q[^b]
Mover el directorio dir312 debajo de dir3.
mv PRUEBA/dir2/dir31/dir312 PRUEBA/dir3
Crear un enlace simbólico al directorio dir1 dentro del directorio dir3 llamado enlacedir1.
ln -s /home/ubuntu/PRUEBA/dir1 PRUEBA/dir3/enlacedir1
Posicionarse en dir3 y, empleando el enlace creado en el ejercicio anterior, crear el directorio nuevo1 dentro de dir1.
cd dir3 mkdir enlacedir1/nuevo1
Utilizando el enlace creado copiar los archivos que empiecen por u del directorio /bin en directorio nuevo1.
cp -r /bin/u* enlacedir1/nuevo1/
Crear dos enlaces duros del fichero fich1, llamarlo enlace, en los directorios dir1 y dir2.
ln fich1 dir1/enlace ln fich1 dir2/enlace
Borrar el archivo fich1 y copiar enlace en dir3.
rm fich1 cp dir1/enlace dir3/
Crear un enlace simbólico (llamado enlafich1) al fichero enlace de dir2 en dir1.
ln -s /home/ubuntu/PRUEBA/dir2 /home/ubuntu/PRUEBA/dir1/enlafich1
Posicionarse en dir1 y, mediante el enlace creado, copiar el archivo fichl dentro de dir311.
cd dir1 cp enlafich1 ../dir2/dir31/dir311/fich1
Seguir en dir1 y, mediante el enlace creado, sacar por pantalla las líneas que tiene el archivo fich1.
cat enlafich1
Borrar el fichero fich1 de dir2.
rm dir2/fich1
Borrar todos los archivos y directorios creados durante los ejercicios. rm -r *
Crear el directorio dir2 y dir3 en el directorio PRUEBA ¿Cuáles son los actuales permisos del directorio dir2?
mkdir dir1 mkdir dir2 ls -l
Utilizando la notación simbólica, eliminar todos los permisos de escritura (propietario, grupo, otros) del directorio dir2.
chmod 555 dir2
Utilizando la notación octal, eliminar el permiso de lectura del directorio dir2, al resto de los usuarios.
chmod 551 dir2
¿Cuáles son ahora los permisos asociados a dir2?
ls -l
Crear bajo dir2, un directorio llamado dir2l.
mkdir dir2/dir21 no se puede crear perniso denegado
Concederse a sí mismo permiso de escritura en el directorio dir2 e intentar de nuevo el paso anterior.
chmod 751 dir2 mkdir dir2/dir21
¿Cuáles son los valores por omisión asignados a los archivos?
ls -l dir2
Cambiar el directorio actual al directorio dir3. Imprimir su trayectoria completa para verificar el cambio.
cd .. cd dir3 ls -lR
¿Cuáles son los permisos asignados en su momento a este directorio?
ls -lR
Reiniciar el ordenador.
reboot
Crear cuatro nuevos directorios llamados dira, dirb, dirc, y dird bajo el directorio actual.
mkdir dira mkdir dirb mkdir dirc mkdir dird
Comprobar los permisos de acceso de los directorios recién creados para comprobar el funcionamiento del comando umask.
ls -l
Crear el fichero uno . Quitarle todos los permisos de lectura. Comprobarlo. Intentar borrar dicho fichero.
touch uno chmod a-r uno ls -l rm uno
Quitarle todos los permisos de paso al directorio dir2 y otorgarle todos los demás.
chmod = dir2 chmod o=rwx dir2
Crear en el directorio propio:
El directorio carpeta1 con los tres permisos para el propietario, dentro de él fich1 con lectura y escritura para todos y fich2 con lectura y escritura para el propietario y solo lectura para el resto.
El directorio carpeta2 con todos los permisos para el propietario y lectura y ejecución para los del mismo grupo. Dentro file1 con lectura y escritura para el propietario y los del grupo y file2 con los mismos para el propietario y solo lectura para el grupo.
mkdir carpeta1 chmod u=rwx,g=,o= carpeta1 touch carpeta1/fich1 touch carpeta1/fich2 chmod = carpeta1/fich1 chmod = carpeta1/fich2 chmod o=rw carpeta1/fich1 ls -l
mkdir carpeta2 chmod u=rwx,g=rx,o= carpeta2 touch carpeta2/file1 touch carpeta2/file2 chmod = carpeta2/file2 chmod = carpeta2/file1 chmod u=rw,g=rw carpeta2/file1 chmod u=rw,g=r carpeta2/file2 ls -l
Desde otro usuario probar todas las operaciones que se pueden hacer en los ficheros y directorios creados.
ls -lR
Visualizar la trayectoria completa del directorio actual. Crear dos directorios llamados correo y fuentes debajo del directorio actual.
mkdir correo mkdir fuentes
Posicionarse en el directorio fuentes y crear los directorios dir1, dir2, dir3.
cd fuentes mkdir dir1 mkdir dir2
Crear el directorio menus bajo correo sin moverse del directorio actual.
mkdir ../correo/menus
Posicionarse en el directorio HOME. Borrar los directorios que cuelgan de fuentes que acaben en un número que no sea el 1.
cd $HOME
Ver si existe el archivo tty2 en el directorio dev. En caso de que exista, ver su fecha de creación o actualización.
find PRUEBA/fuentes -type d -name "tty2" -exec ls -l {} ;
Ver los permisos que tienen los archivos que empiecen por tt del directorio /dev.
ls -l /dev/tt*
Visualizar la lista de los archivos ordinarios que están en el directorio /usr/bin.
find /usr/bin -type d -name "*" -exec ls -l {} ;
Visualizar la lista de todos los directorios que cuelgan del raíz.
find / -type d -name "*" -exec ls {} ;
Visualizar la lista de todos los ficheros que pertenezcan a root.
find / -user root -type f
Visualizar la lista de todos los ficheros .h del directorio /usr/include.
find /usr/include -type f -regex ".*.h"
Ejecutar todos los comandos que empiecen por ls del directorio /bin.
ls /bin/ls*
Visualizar de qué tipo son todos y cada uno de ficheros de todo el árbol del sistema propiedad de un usuario conocido.
find /home/ubuntu -exec file --mime-type -0 '{}' ;
Crear el directorio uno en el directorio HOME con permiso de escritura y paso para el propietario, de lectura y paso para los usuarios de su mismo grupo y ningún permiso para el resto de usuarios.
mkdir uno chmod u=rw,g=rw,o= uno ls -ld uno
Crear el directorio uno1 dentro del directorio creado en el ejercicio anterior con todos lo permisos para el usuario, ninguno para los usuarios del grupo y permiso de escritura para el resto de usuarios.
chmod u=rwx,g=rwx,o= uno mkdir uno/uno1 chmod u=rwx,g=,o=w uno/uno1 ls -ld uno/uno1
Copiar todos los ficheros propiedad de un usuario conocido que acaben en un número en el directorio menus.
find /home/usuario2 -type f -regex ".*[0-9]" -exec cp -r '{}' PRUEBA/correo/menus/ ;
Visualiza con la orden who la relación de usuarios conectados y sus terminales. Mediante la orden cat, crea un pequeño mensaje desde tu consola y redirígelo a uno de los terminales conectados.
sudo -s
Crea un archivo de tamaño 0
touch archivo_tamaño_cero
Visualiza el archivo /etc/motd, que contiene el "mensaje del día".
cat /etc/motd
Utilizando de entrada la información de los usuarios conectados al sistema, guardar, ordenadas por el campo hora, las líneas correspondientes al usuario que se desee en el archivo persona.
who | grep $USER | sort -k 4 > persona
Crear el directorio carpeta debajo del directorio PRUEBA. Quitarle todos los permisos de lectura. A continuación, buscar todos los directorios que cuelguen del directorio propio y guardarlos en el archivo direc.
mkdir carpeta chmod a-r carpeta find ~ -type d > direc
Volver a realizar la segunda parte del ejercicio anterior, pero redireccionando los errores al fichero malos. Comprobar la información del fichero malos.
find ~ -type d 2> malo
Añadir al fichero direc la lista de todos los ficheros ordinarios que cuelguen de /etc.
find /etc -type f >> direc
Añadir al archivo nuevalista el/los nombre/s de el/los fichero/s del directorio PRUEBA que contengan en su nombre la cadena "ai", añadiendo el posible error al fichero malos.
find ./ -type f -not -iname ai 1> nuevalista 2> malos find ./ -type f -iname ai 1> nuevalista 2> malos
Sacar por pantalla únicamente el tiempo (buscar comando time) que tarda en ejecutarse el comando who.
time 'sleep 3' time who -p %e
Sacar por pantalla un listado completo (buscar comando ps) de los procesos que está realizando el usuario root.
ps -U root -u root u
Crear el archivo proceso con los procesos que no tienen ningún terminal asignado.
ps -U root -u root u | grep -v "'ls /dev'"
Añadir al fichero anterior la fecha actual y la trayectoria completa del directorio actual.
echo "'date +"%A %D"' - 'pwd'" >>nuevalista
Sacar por pantalla el listado de todos los usuarios conectados ordenados por número de proceso asignado.
ps axu
Averiguar cuál es la actividad actual del sistema. Para ello visualice un listado completo del estado de todos los procesos que se están ejecutando en el sistema.
top -d 1 -n 10
Obtener un listado con los siguientes datos de los procesos de su shell actual.
ps -e
Mostrar cuantos usuarios tiene registrados el sistema (el registro de usuarios está en el archivo /etc/passwd)
cat /etc/passwd | wc -l
Mostrar cuántos usuarios tiene registrados el sistema y que utilizan el intérprete bash (debe aparecer al final de la línea /bin/bash o similar)
cat /etc/passwd | grep bash
Mostrar cuantos usuarios hay conectados
who -q
Mostrar las líneas, de un archivo de texto, empiecen por L (mayúscula o minúscula)
man gcc > gcc.man_page cat gcc.man_page | sed -e 's/ //g' > file.filled cat file.filled | grep ^[Ll]
Contar las líneas, del ejemplo anterior
cat file.filled | grep ^[Ll] | wc -l
Extraer los nombres de usuario (primer campo) del sistema
cat /etc/passwd | cut -d ':' -f 1
Extraer los nombres de usuario y el shell que utilizan (último campo)
gawk -F: '{print $1, $7}' /etc/passwd
Cambiar la fecha de creación de un archivo ya previamente creado
touch -t 8810011101 good ls -l good
Calcular la firma md5 de un archivo
md5sum good
Modificar la firma md5 y detectar que se ha cambiado (revisión de firma)
md5sum -c good.MD5 md5sum good md5sum -c good.MD5 md5sum good
Monitorear la ocupación de las particiones en los discos
df -lh
¿Cual es el proceso que más carga el procesador?
for x in seq 1 10; do ps -eo pid,pcpu,pmem,user,args | sort -r -k 2 | head -n 2; sleep 3; done
¿Está corriendo el proceso bash?
ps -eo pid,pcpu,pmem,user,args | grep bash ps a | grep bash
¿Cuántos procesos que empiecen por k están corriendo?
ps -eo args | cut -d ' ' -f 1 | grep ^g | wc -l
LINUX - EJERCICIO 3
EJERCICIO DE COMANDOS CONSOLA LINUX
# 1. Listar todos los archivos del directorio bin.
ls /bin
# 2. Listar todos los archivos del directorio tmp.
ls /tmp
# 3. Listar todos los archivos del directorio etc que empiecen por t en orden inverso.
ls /etc/t* -r
b) ls –r /etc | grep ^t
# 4. Listar todos los archivos del directorio dev que empiecen por tty y tengan 5 caracteres.
ls /dev/tty??
# 5. Listar todos los archivos del directorio dev que empiecen por tty y acaben en 1,2,3 ó 4.
ls /dev/tty[1,2,3,4]
ls /dev/tty[1-4]
ls /dev/tty*[1-4]
# 6. Listar todos los archivos del directorio dev que empiecen por t y acaben en C1.
ls /dev/t*[C1]
ls /dev/t*C1
# 7. Listar todos los archivos, incluidos los ocultos, del directorio raíz.
ls -la /
# 8. Listar todos los archivos del directorio etc que no empiecen por t.
ls -I “t*” /etc
b) ls --ignore=t* /etc
c) find /etc/ -maxdepth 1 -name '[!t]*'
# 9. Listar todos los archivos del directorio usr y sus subdirectorios.
ls -R /usr
# 10. Cambiarse al directorio tmp.
cd /tmp
# 11. Verificar que el directorio actual ha cambiado.
pwd
# 12. Mostrar el día y la hora actual.
date
# 13. Con un solo comando posicionarse en el directorio $HOME.
Si home -> cd /home Si Carpeta personal usuario -> cd
# 14. Verificar que se está en él.
pwd
# 15. Listar todos los ficheros del directorio HOME mostrando su número de inodo.
ls -i /home
b) ls -lai ~/
# 16. Borrar todos los archivos y directorios visibles de vuestro directorio PRUEBA.
rm -R PRUEBA
rm -rf PRUEBA
buena: rm –r ./PRUEBA/[!.]*
# 17. Crear los directorios dir1, dir2 y dir3 en el directorio PRUEBA. Dentro de dir1 crear el directorio dir11.
# Dentro del directorio dir3 crear el directorio dir31. Dentro del directorio dir31, crear los directorios
# dir311 y dir312.
cd
mkdir dir1 & mkdir dir2 & mkdir dir3
mkdir dir1/dir11 & mkdir dir3/dir31
mkdir dir31/dir311 & mkdir dir31/dir312
b) ~/PRUEBA$ mkdir -p
{dir1,dir1/dir11,dir2,dir3,dir3/dir31,dir3/dir31/dir311,dir3/dir31/dir312}
# 18. Copiar el archivo /etc/motd a un archivo llamado mensaje de vuestro directorio PRUEBA.
cp /etc/motd /home/usuario/PRUEBA/mensaje
b) cat /etc/motd > ~/PRUEBA/mensaje
# 19. Copiar mensaje en dir1, dir2 y dir3.
cp mensaje /home/usuario/PRUEBA/dir1 & cp mensaje /home/usuario/PRUEBA/dir2 & cp mensaje /home/usuario/PRUEBA/dir3
b) ~/PRUEBA$ echo dir1 dir2 dir3 | xargs -n 1 cp ~/PRUEBA/mensaje
# 20. Comprobar el ejercicio anterior mediante un solo comando.
ls -R /PRUEBA
# 21. Copiar los archivos del directorio rc.d que se encuentra en /etc al directorio dir31.
cp /etc/rc[1-6].d /home/usuario/PRUEBA/dir31
b) cp -r /etc/rc0.d/* ~/PRUEBA/dir3/dir31 (mas exacta)
# 22. Copiar en el directorio dir311 los archivos de /bin que tengan una a como segunda letra y su nombre tenga cuatro letras.
cp /bin/?[a]?? /home/usuario/PRUEBA/dir3/dir311
# 23. Copiar el directorio de otro usuario y sus subdirectorios debajo de dir11 (incluido el propio directorio).
sudo cp /home/otro_usuario /home/usuario/PRUEBA/dir1/dir11
b) cp -R /home/otrouser /home/tutorialvirtual/PRUEBA/dir1/dir11
# 24. Mover el directorio dir31 y sus subdirectorios debajo de dir2.
mv /home/usuario/PRUEBA/dir3/dir31 /home/usuario/PRUEBA/dir2
b) mv –r ~/PRUEBA/dir3/dir31 ~/PRUEBA/dir2/
# 25. Mostrar por pantalla los archivos ordinarios del directorio HOME y sus subdirectorios.
ls -R /home
# 26. Ocultar el archivo mensaje del directorio dir3.
mv /home/usuario/PRUEBA/dir3/mensaje /home/usuario/PRUEBA/dir3/.mensaje
# 27. Borrar los archivos y directorios de dir1, incluido el propio directorio.
rm -rf /home/usuario/PRUEBA/dir1
rm -R dir1
# 28. Copiar al directorio dir312 los ficheros del directorio /dev que empiecen por t, acaben en una letra que vaya de la a a la b y tengan cinco letras en su nombre.
cp /dev/t???[a-b] /home/usuario/PRUEBA/dir3/dir312
# 29. Borrar los archivos de dir312 que no acaben en b y tengan una q como cuarta letra.
ls --ignore=???qb /home/usuario/PRUEBA/dir3/dir31/dir312 < rm -rf /home/usuario/PRUEBA/dir3/dir31/dir312
rm dir2/dir31/dir312/???q*[a,c-z] or rm ./???q*[a,c-z] #(Si estuvieramos en el dir312)
b) rm ~/PRUEBA/dir3/dir31/dir312/???q*[ac-z0-9] (mas exacto) ¿?not b
#30. Mover el directorio dir312 debajo de dir3.
mv /home/usuario/PRUEBA/dir3/dir31/dir312 /home/usuario/PRUEBA/dir3/dir312
# 31. Crear un enlace simbólico al directorio dir1 dentro del directorio dir3 llamado enlacedir1.
ln -s /home/usuario/PRUEBA/dir1 /home/usuario/PRUEBA/dir3/enlacedir1
# 32. Posicionarse en dir3 y, empleando el enlace creado en el ejercicio anterior, crear el directorio nuevo1 dentro de dir1.
cd dir3; mkdir enlacedir1/nuevo1 #(como habiamos borrado en el #27 el dir1), he tenido que crearlo de nuevo, para que funcionara correctamente.
# 33. Utilizando el enlace creado copiar los archivos que empiecen por u del directorio /bin en directorio nuevo1.
cp /bin/u* enlacedir1/nuevo1/
ls /bin/u* > cp /home/usuario/PRUEBA/dir3/enlacedir1
# 34. Crear dos enlaces duros del fichero fich1, llamarlo enlace, en los directorios dir1 y dir2.
touch /home/usuario/fich1
ln -d /home/usuario/fich1 /home/usuario/PRUEBA/dir1/enlace & ln -d /home/usuario/fich1 /home/usuario/PRUEBA/dir2/enlace
b) touch fich1; ln fich1 dir1/enlace; ln fich1 dir2/enlace
#35. Borrar el archivo fich1 y copiar enlace en dir3.
rm fich1; cp dir1/enlace dir3/
# 36. Crear un enlace simbólico (llamado enlafich1) al fichero enlace de dir2 en dir1.
ln -s /home/usuario/PRUEBA/dir2/enlace /home/usuario/PRUEBA/dir1/enlacefich1
# 37. Posicionarse en dir1 y, mediante el enlace creado, copiar el archivo fichl dentro de dir311.
cd /home/usuario/PRUEBA/dir1
cp enlacefich1 /home/usuario/PRUEBA/dir3/dir31/dir311
b) cp ../fich1 enlafich1/dir31/dir311
#38. Seguir en dir1 y, mediante el enlace creado, sacar por pantalla las líneas que tiene el archivo fich1.
cd /home/usuario/PRUEBA/dir1
cat enlacefich1
# 39. Borrar el fichero fich1 de dir2
rm enlafich1/dir31/dir311/fich1
#40. Borrar todos los archivos y directorios creados durante los ejercicios.
rm -rf /home/usuario/PRUEBA/
b) rm -R PRUEBA
#41. Crear el directorio dir2 y dir3 en el directorio PRUEBA ¿Cuáles son los actuales permisos del directorio dir2?
mkdir /home/usuario/PRUEBA/dir2 & mkdir /home/usuario/PRUEBA/dir3
Permisos: drwxrwxr-x 2 inigo inigo 4096 abr 6 18:18 dir2
# 42. Utilizando la notación simbólica, eliminar todos los permisos de escritura (propietario, grupo, otros) del directorio dir2.
chmod u-w,g-w,a-w /home/usuario/PRUEBA/dir2
b) chmod ugo-w dir2
c) chmod a-w
# 43. Utilizando la notación octal, eliminar el permiso de lectura del directorio dir2, al resto de los usuarios.
chmod 111 /home/usuario/PRUEBA/dir2
b) chmod +005 dir2
c) chmod 554 dir2
# 44. ¿Cuáles son ahora los permisos asociados a dir2?
d--x--x--x 2 inigo inigo 4096 abr 6 18:18 dir2
# 45. Crear bajo dir2, un directorio llamado dir2l.
mkdir /home/usuario/PRUEBA/dir2/dir2l
no se puede hacer!
# 46. Concederse a sí mismo permiso de escritura en el directorio dir2 e intentar de nuevo el paso anterior.
chmod 771 /home/usuario/PRUEBA/dir2
mkdir /home/usuario/PRUEBA/dir2/dir2l
b) chmod u+w dir2; mkdir dir2/dir2l d-w----r-x
# 47. ¿Cuáles son los valores por omisión asignados a los archivos?
umask
para dir 777 - umask
para archivos 666 -umask
¿sticky bit y primer bit de umask 0022?
drwxrwxr-x 2 inigo inigo 4096 abr 6 19:32 dir2l
# 48. Cambiar el directorio actual al directorio dir3. Imprimir su trayectoria completa para verificar el cambio.
cd ../dir3
pwd
# 49. ¿Cuáles son los permisos asignados en su momento a este directorio?
drwxrwxr-x 2 inigo inigo 4096 abr 6 18:18 dir3
# 50. Establecer mediante el comando umask (buscar este comando) los siguientes valores por omisión: rwxr--r-- para los directorios y rw-r--r-- para los archivos ordinarios.
umask 033 --> para directorios y para archivos
# 51. Crear cuatro nuevos directorios llamados dira, dirb, dirc, y dird bajo el directorio actual.
pwd --> nos encontramos /home/usuario/PRUEBA/dir3
mkdir dira & mkdir dirb & mkdir dirc
b) mkdir {dira,dirb,dirc,dird}
# 52. Comprobar los permisos de acceso de los directorios recién creados para comprobar el funcionamiento del comando umask.
ls -la
drwxr--r-- 2 inigo inigo 4096 abr 6 19:54 dira
drwxr--r-- 2 inigo inigo 4096 abr 6 19:54 dirb
drwxr--r-- 2 inigo inigo 4096 abr 6 19:54 dirc
# 53. Crear el fichero uno. Quitarle todos los permisos de lectura. Comprobarlo. Intentar borrar dicho fichero.
touch uno
chmod u-r,g-r,a-r uno
ls -l uno
rm uno --> no se puede
b)touch uno; chmod -rwx uno; ls -l; rm uno; SÍ SE PUEDE
# 54. Quitarle todos los permisos de paso al directorio dir2 y otorgarle todos los demás.
chmod 666 /home/usuario/PRUEBA/dir2
drw-rw-rw-
# 55. Crear en el directorio propio: El directorio carpeta1 con los tres permisos para el propietario, dentro de él fich1 con lectura y escritura para todos y fich2 con lectura y escritura para el propietario y solo lectura para el resto. El directorio carpeta2 con todos los permisos para el propietario y lectura y ejecución para los del mismo grupo. Dentro file1 con lectura y escritura para el propietario y los del grupo y file2 con los mismos para el propietario y solo lectura para el grupo.
cd --> localizarse en el directorio propio
mkdir carpeta1; chmod 777 carpeta1
cd carpeta1
touch fich1; chmod 666 fich1
touch fich2; chmod 644 fich2
cd .. --> localizarse en el directorio propio
mkdir carpeta2; chmod 750 carpeta2
touch file1; chmod 660 file2
touch file2; chmod 640 file2
b) mkdir carpeta1; chmod u+rwx; mkdir carpeta2; chmod u+rwx g+rx; touch carpeta1/fich1; chmod +rw carpeta1/fich1; touch carpeta1/fich2; chmod u+rw o+wx;
touch carpeta2/file2; chmod u+rwx g+r;
# 56. Desde otro usuario probar todas las operaciones que se pueden hacer en los ficheros y directorios creados.
t@t-VirtualBox:~/PRUEBA/propio/carpeta2$ su kk
Contraseña:
kk@t-VirtualBox:/home/t/PRUEBA/propio/carpeta2$ ls
ls: no se puede abrir el directorio .: Permiso denegado
kk@t-VirtualBox:/home/t/PRUEBA/propio/carpeta2$ cd ..
bash: cd: ..: Permiso denegado
kk@t-VirtualBox:/home/t/PRUEBA/propio/carpeta2$ cd /home/t/PRUEBA/
kk@t-VirtualBox:/home/t/PRUEBA$ ls
dir2 dir3 jj propio
kk@t-VirtualBox:/home/t/PRUEBA$ cd propio
bash: cd: propio: Permiso denegado
kk@t-VirtualBox:/home/t/PRUEBA$ cd dir2
bash: cd: dir2: Permiso denegado
kk@t-VirtualBox:/home/t/PRUEBA$ cd dir3
kk@t-VirtualBox:/home/t/PRUEBA/dir3$ ls
dira dirb dirc dird kk
kk@t-VirtualBox:/home/t/PRUEBA/dir3$ cd dira
bash: cd: dira: Permiso denegado
kk@t-VirtualBox:/home/t/PRUEBA/dir3$
# 57. Visualizar la trayectoria completa del directorio actual. Crear dos directorios llamados correo y fuentes debajo del directorio actual.
pwd
b) ls -R;
mkdir correo; mkdir fuentes
# 58. Posicionarse en el directorio fuentes y crear los directorios dir1, dir2, dir3.
cd fuentes
mkdir dir1; mkdir dir2; mkdir dir3
# 59. Crear el directorio menus bajo correo sin moverse del directorio actual.
mkdir ../correo/menus
# 60. Posicionarse en el directorio HOME. Borrar los directorios que cuelgan de fuentes que acaben en un número que no sea el 1.
cd home/
find PRUEBA/fuentes/ -name "*1" > rm -rf;
b) rm -d PRUEBA/fuentes/*[2-9,0]
C) rm -r ./PRUEBA/propio/carpeta2/fuentes/*[!1]
# 61. Ver si existe el archivo tty2 en el directorio dev. En caso de que exista, ver su fecha de creación o actualización.
find /dev -name "tty2" > ls -l
b) ls /dev/tty2 | ls --full-time /dev/tty2
C) ~$ ls -l /dev/tty2 | cut -c26-
2 abr 25 22:56 /dev/tty2
# 62. Ver los permisos que tienen los archivos que empiecen por tt del directorio /dev.
find /dev -name "tty*" > ls -l
b) ls -l /dev/tt*
C) $ ls -l /dev/tt* | cut -c-11
# 63. Visualizar la lista de los archivos ordinarios que están en el directorio /usr/bin.
ls /usr/bin
B) sudo find /usr/bin/ -maxdepth 1 -type f
# 64. Visualizar la lista de todos los directorios que cuelgan del raíz.
ls /
b) ls -D / #(tambien muestra los links)
C) ls -RD / (no va bien)
vale find / -type d
# 65. Visualizar la lista de todos los ficheros que pertenezcan a root.
find / -user root
# 66. Visualizar la lista de todos los ficheros .h del directorio /usr/include.
find /usr/include -name "*.h"
B) ls /usr/include/*.h
# 67. Ejecutar todos los comandos que empiecen por ls del directorio /bin.
find /bin -user pp -exec {} \;
# 68. Visualizar de qué tipo son todos y cada uno de ficheros de todo el árbol del sistema propiedad de un usuario conocido.
sudo find / -user juan -exec file {} \; 2>/dev/null
b) sudo find / -user juan | xargs file 2>/dev/null
# 69. Crear el directorio uno en el directorio HOME con permiso de escritura y paso para el propietario, de lectura y paso para los usuarios de su mismo grupo y ningún permiso para el resto de usuarios.
mkdir /home/uno
chmod 350 uno
b) chmod u+wx,g+rx,o+w
# 70. Crear el directorio uno1 dentro del directorio creado en el ejercicio anterior con todos lo permisos para el usuario, ninguno para los usuarios del grupo y permiso de escritura para el resto de usuarios.
mkdir uno/uno1
chmod 702 uno/uno1
b) chmod u+rwx,o+w
# 71. Copiar todos los ficheros propiedad de un usuario conocido que acaben en un número en el directorio menus.
C) find / -user 't' -exec ls -l {} ./ \;
# 72. Visualiza con la orden who la relación de usuarios conectados y sus terminales. Mediante la orden cat, crea un pequeño mensaje desde tu consola y redirígelo a uno de los terminales conectados..
touch mensaje
who > mensaje ; cat mensaje
B) ~$ who
t tty7 2014-04-25 22:56
t pts/1 2014-04-25 22:56 (:0)
$ cat kk > tty7
# 73. Crea un archivo de tamaño 0
touch arch_tam0
# 74. Visualiza el archivo /etc/motd, que contiene el "mensaje del día".
cat /etc/motd
# 75. Utilizando de entrada la información de los usuarios conectados al sistema, guardar, ordenadas por el campo hora, las líneas correspondientes al usuario que se desee en el archivo persona.
who | grep $USER | sort -k 4
# 76. Crear el directorio carpeta debajo del directorio PRUEBA. Quitarle todos los permisos de lectura. A continuación, buscar todos los directorios que cuelguen del directorio propio y guardarlos en el archivo direc.
mkdir PRUEBA/carpeta
chmod ugo-r PRUEBA/carpeta
find $HOME -type d > direc
¿está carpeta?
sí
ahora podemos entrar en carpeta
sí
podemos hacer un ls o find de carpeta? NO
si le ponemos los permisos de lectura y le quitamos los de ejecucion al dir carpeta
chmod a+r,a-x PRUEBA/carpeta
¿podemos entrar en carpeta? NO
¿podemos hacer un ls o find dentro de carpeta? NO find SÍ ls
# 77. Volver a realizar la segunda parte del ejercicio anterior, pero redireccionando los errores al fichero malos. Comprobar la información del fichero malos.
find /home/usuario_actual/-name "*" >direc 2>malos
# 78. Añadir al fichero direc la lista de todos los ficheros ordinarios que cuelguen de /etc.
ls etc/ >> direc
B) sudo find /etc -maxdepth 1 -type f >> direc
# 79. Añadir al archivo nuevalista el/los nombre/s de el/los fichero/s del directorio PRUEBA que contengan en su nombre la cadena "ai", añadiendo el posible error al fichero malos.
find /home/usuario_actual/PRUEBA -iname "*ai*" 1 > nuevalista 2 > malos
b) ls *ai* > nuevalista 2> malos
C) find ./ -name *ai* 2>/dev/null 1>nuevalista
# 80. Sacar por pantalla únicamente el tiempo (buscar comando time) que tarda en ejecutarse el comando who.
time who -p
# 81. Sacar por pantalla un listado completo (buscar comando ps) de los procesos que está realizando el usuario root.
ps -u root
# 82. Crear el archivo proceso con los procesos que no tienen ningún terminal asignado.
ps "t?" > proceso
b) ps -A | grep ? > proceso
ps -aux | awk ‘{print $1, $7, $11}’ | grep ?
busca los procesos sin terminal, eligiendo solo tres acmpos awk, el cut solo permite un caracter como delimitador
el awk es configurable, por defecto pone el tabulador, sino ofcione -F o FS=”caracteres”
# 83. Añadir al fichero anterior la fecha actual y la trayectoria completa del directorio actual.
date >> proceso; pwd >> proceso
# 84. Sacar por pantalla el listado de todos los usuarios conectados ordenados por número de proceso asignado.
ps axu
b) who -all or who -u
# 85. Averiguar cuál es la actividad actual del sistema. Para ello visualice un listado completo del estado de todos los procesos que se están ejecutando en el sistema.
ps -aux
b) ps -A # Si añadimos F nos muestra que archivo ejecuta ese proceso
# 86. Obtener un listado con los siguientes datos de los procesos de su shell actual.
ps -A | grep tty1
b) ps -t o ps -A | grep tty1 #(O el numero de terminal que estes usando)
# 87. Mostrar cuantos usuarios tiene registrados el sistema (el registro de usuarios está en el archivo /etc/passwd)
cat etc/passwd | wc -l
# 88. Mostrar cuántos usuarios tiene registrados el sistema y que utilizan el intérprete bash (debe aparecer al final de la línea /bin/bash o similar)
cat /etc/passwd | grep "bin/bash" | wc -l
# 89. Mostrar cuantos usuarios hay conectados
who -q
B) who | wc -l
# 90. Mostrar las líneas, de un archivo de texto, empiecen por L (mayúscula o minúscula)
man ls > arch_texto
cat arch_texto | grep ^[Ll]
b) grep -i '^l' texto (Siendo texto un archivo editado que contenga lineas que empiecen por l o L)
C)
# 91. Contar las líneas, del ejemplo anterior
cat arch_texto | grep ^[Ll] | wc -l
# 92. Extraer los nombres de usuario (primer campo) del sistema
cat etc/passwd | cut -d ':' -f 1
B) who | cut -d ' ' -f1
# 93. Extraer los nombres de usuario y el shell que utilizan (último campo)
$ cat /etc/passwd | cut -d':' -f1,7
C) gawk -F: '{print $1, $7}' /etc/passwd
b) cat /etc/passwd | awk '{print $1, $7}' FS=":"
# 94. Cambiar la fecha de creación de un archivo ya previamente creado
touch -t 451212221050.45 malo
#formato mmddhhmm (tambien acepta yyyymmddhhmm) Pero si solo quieres modificar la fecha no te deja debes darle tambien una hora, si es en el mismo año en el que
#estas, usamos el 1 formato.
touch -t 01121200 texto (ene 12 12:00 texto) #o si queremos darle otro año, solo añadimos el año antes del mes. (Es interesante percatarse que apesar de
#que esto funciona, si hacemos un ls -lh en el campo de la hora nos aparecera el año, pero podemos comprobar que lo hace correctamente con un ls -lh -full-time,
#tambien nos ha añadido el tiempo.
# 95. Calcular la firma md5 de un archivo
md5sum archivo
# 96. Modificar la firma md5 y detectar que se ha cambiado (revisión de firma)
md5sum proceso > proceso.MD5
echo "hola mundo" >> proceso
md5sum -c proceso.MD5
md5sum proceso
# 97. Monitorear la ocupación de las particiones en los discos
df -lh
# 98. ¿Cual es el proceso que más carga el procesador?
top
# 99. ¿Está corriendo el proceso bash?
ps -aux | grep "bash"
# 100. ¿Cuántos procesos que empiecen por k están corriendo?
ps -aux | grep "k*"
b) ps -A | grep -c ' k' #(Con -c para contarlos, sin la -c para mostrarlos)
C) ps aux | awk '{ print $11 }' | grep ^k | wc -l
LINUX - EJERCICIO 4
Ejercicio de repaso
Usa un comando para mostrar por pantalla la frase: Hola soy tuNombre
Usa un comando para mostrar la fecha actual
Crea un directorio (carpeta) que se llame: examen
Situate dentro del directorio que has creado.
Comprueba que el directorio creado está vacío.
Dentro del directorio examen crea estos directorios:
tuNombre_1
tuNombre_2
Dentro del directorio tuNombre_1 crea estos ficheros (archivo) vacíos:
fichero_11.txt
fichero_12.txt
Crea una copia de fichero_11.txt en otro llamado: fichero_11_copia.txt
Situate en el directorio examen
Encuentra todos los ficheros que haya bajo el directorio examen cuyo nombre contenga 11
Encuentra todos los ficheros que haya bajo el directorio examen cuyo nombre empiece por una letra seguida de la cadena: iero_
Muestra el contenido del directorio en forma de árbol
Dentro del directorio tuNombre_2 crea estos archivos mediante una redirección del comando ls -l:
fichero_21.txt
fichero_22.txt
Dentro del directorio tuNombre_2 crea una carpeta llamada tuNombre_22
Mueve el fichero: tuNombre_2/fichero_21.txt a la carpeta: tuNombre_2/tuNombre_2/
Limpia el terminal
Llena de información el fichero fichero_11.txt haciendo una redirección del comando ls con su opción -l.
Realiza la misma acción anterior para el fichero fichero_12.txt
Muestra el contenido del fichero fichero_12.txt
Situate en el directorio examen
Usando un comando muestra los procesos que se están ejecutando en el ordenador
Usando un comando muestra por pantalla cuál es tu usuario
Situate en el directorio tuNombre_1 y borra los ficheros que hay dentro
Situate en el directorio examen
Borra el directorio tuNombre_1
Recorre los 3 últimos comandos del historial de comandos
Crea un fichero llamando fich_man_cp.txt con el contenido en el manual del comando cp