Vous êtes sur la page 1sur 13

Taller 4: Enlaces, comandos de visualizacin, expresiones regulares, bsqueda de arc

hivos, usuarios y permisos, variables de entorno


################################################################################
####################################################
Enlaces de Archivos y Directorios:
---------------------------------------------Existen dos tipos de enlaces: blandos y duros
Crear un enlace blando (similar al acceso directo, si se borra el
archivo original el enlace se queda roto)
#############################################################
$> echo "date"> /usr/bin/fecha ---> creando archivo fecha
$> chmod 755 /usr/bin/fecha
---> dando permisos de ejecucin
$> fecha
---> ejecutando comando fecha
Creando enlace suave fechita
$> ln -s /usr/bin/fecha /usr/bin/fechita
Listar el enlace nuevo
$> ls -l /usr/bin/fechita
Comprobar los inodos del enlace y el archivo
$> ls -i /usr/bin/fecha
$> ls -i /usr/bin/fechita
Ejecutando comando fechita
$> fechita
Borrando archivo original
$> rm -f /usr/bin/fecha
Ejecutando fechita
$> fechita
Listando enlace roto
$> ls -l /usr/bin/fechita
Borrando enlace roto
$> rm -f /usr/bin/fechita
Crear un enlace duro (Es como una copia de archivo, si el archivo original se bo
rra, el enlace an funciona)
##################################################################
$> echo "date"> /usr/bin/fecha ---> creando archivo fecha
$> chmod 755 /usr/bin/fecha
---> dando permisos de ejecucin
$> fecha
---> ejecutando comando fecha
Creando enlace duro fechita
$> ln /usr/bin/fecha /usr/bin/fechita
Listar el enlace nuevo
$> ls -l /usr/bin/fechita
Comprobar los inodos del enlace y el archivo
$> ls -i /usr/bin/fecha
$> ls -i /usr/bin/fechita
Ejecutando comando fechita

$> fechita
Borrando archivo original
$> rm -f /usr/bin/fecha
Ejecutando fechita, vemos que an funciona
$> fechita
Listando enlace
$> ls -l /usr/bin/fechita
Enlace de Directorios
$> ln -s /usr/bin /programas
$> ls -l /
Comandos de Visualizacin y extraccin de informacin de archivos
################################################################################
###############
cat
tac
cut
ion
grep
egrep
s
fgrep
tail
head
more
less
wc
sed
tr
pr

--> muestra un archivo de arriba abajo


--> al reves del cat
--> extrae por columnas un archivo, en base a un caracter de separac
--> lista las lineas de un archivo que contenga una palabra como filtro
--> filtra como grep pero con un conjunto amplio de expresiones regulare
-->
-->
-->
-->
-->

filtra como grep pero sin expresiones regulares, es el mas rapido


muestra las ultimas lineas de un archivo
muestra las primeras lineas de un archivo
como cat pero con pausa
visualizacion con pausa y en modo interactivo
--> cuenta las lineas, palabras o caracteres
--> buscar y reemplaza cadena en un archivo
--> efecta transformacin de caracteres en la vista de un archivo
--> visualiza un archivo en formato de impresin

Redireccin y Tubera:
-------------------------------------------------------------------------------------->
Redicciona la salida estndar a un archivo, sobreescribindolo si existe
>> Redicciona la salida estndar a un archivo, aadiendo al final del mismo
<
Redirecciona la entrada estndar desde un archivo
| (Tuberia, concatenando comandos). permite combinar las salidas estndar de 2
o ms
comandos
---------------------------------------------------------------------------------------Ejercicios
---------------$> cat /etc/passwd
Muestra el contenido de un archivo sin pausa
$> tac /etc/passwd
Muestra el contenido de un archivo sin pausa pero al reves,
lo mismo que cat pero al reves
$> more /etc/services

Muestra un archivo con pausa por pagina, enter para seguir avanzando
$> less /etc/services
Muestra un archivo en modo interactivo
Su principal uso es para visualizar archivos grandes como los logs
$> less /var/log/messages
Visualiza los logs del sistema
$> tail /etc/passwd
Muestra las ultimas 10 lineas de un archivo
$> tail -1 /etc/passwd
Muestra la ultima linea de un archivo
$> tail -5 /etc/passwd
Muestra las ultimas 5 lineas de un archivo
$> tail -f /var/log/messages
Muestra en forma interactiva los cambios en las ultimas lineas
de un archivo: ctrl+c para salir
Sirve para ver los logs en tiempo real
$> tail -f /var/log/squid/access.log | grep pepito
Este ejemplo me mostrara la navegacin del usuario pepito en
tiempo real
$> cat /etc/services | less
visualiza el contenido del archivo /etc/services y el resultado
se concatena en less
$> less /etc/services
Tiene el mismo resultado que el comando anterior
$> cat -n /etc/services | less
Lo mismo que los archivos anteriores pero mostrando los numeros de
linea
$> cat /etc/hosts /etc/redhat-release
Concatena la visualizacion de los dos archivos en una sola salida
por el stdout (pantalla)
$> cat>archivo
hola mundo
linux es chevere
ctrl+c
usado de esta forma cat acta como un editor de texto
$> cat archivo
Muestra lo que se escribio anteriormente
$> cat /etc/passwd > passwords
Creando archivo a partir de la salida estandar
$> cat /etc/group >> passwords
Aade al final del archivo
$> grep imap /etc/services ; echo hola
Filtra por palabra la visualizacion del archivo ";" se usa para

ejecutar otro comando en la misma linea


$> wc /etc/services
Cuenta el numero de lineas palabras y caracteres del archivo
$> wc -l /etc/services
Cuenta solo numeros de lineas
$> tail /etc/services
Visualiza las 10 ultimas lineas
$> tac /etc/services
Visualiza de abajo hacia arriba el contenido del archivo
$> head /etc/services
Visualiza las 10 primeras lineas
$> head -8 /etc/services
Visualiza las 8 primeras lineas
$> tail -1 /etc/passwd
Muestra el ultimo usuario creado
$> head -30 /etc/services | tail -5
Muestra las lineas de la 25 a la 30
$> cat /etc/group | tee -a passwords
Aade al final del archivo y muestra la salida estandar
$> cut -d ":" -f1 /etc/passwd
Corta las lineas por columna separandolas por ":" y muestra la primera
columna
$> cut -d ":" -f1,3 /etc/passwd
Corta las lineas por columna separandolas por ":" y muestra la primera y tercera
columna
$> sed -e "s/smtp/correo/g" /etc/services | less
Reemplaza la palabra smtp por correo (solo en la salida estndar)
$> sed -e "s/telnet/conexion remota/g" \
-e "s;smtp;correo;g" /etc/services
Reemplaza la palabra telnet y smpt por correxion remota y correo
$> sed -i "s;smtp;correo;g" /etc/services
NO EJECUTAR
Reemplaza la palabra smtp por correo (modifica el archivo)
$> cat /etc/services | tr a-z A-Z
Transforma las letras minusculas a mayusculas
$> cat /etc/passwd | tr -d "[0-9]"
Borra los numeros
$> cat /etc/passwd | tr -c "[a-z A-Z]" "-"
Transforma los caracteres que no sean letras en "-"
$> cat /etc/services |tr -s "\n*"
Transforma los saltos de lineas consecutivas en uno solo (elimina
linea en blanco)

$> pr /etc/services
Visualiza en formato de impresion
$> pr /etc/services | less
$> pr /etc/services > /dev/lp0
Impresion del archivo /etc/services lp0 es el puerto paralelo
Expresiones Regulares:
------------------------------------------------------------------*
--> 0 o mas coincidencias
+
--> 1 o mas coincidencias
?
--> una coincidencia
{1,}
--> equivalente a +
{0,}
--> equivalente a *
{1}
--> equivalente a ?
{2,5}
--> de 2 a 5 coincidencias
^
--> que comienza
$
--> que termina
[a-z]
--> solo letras minusculas
[A-Z]
--> solo letras mayusculas
[a-zA-Z]
--> solo letras
[a-zA-Z]
--> alfabeto espaol
[0-9]
--> solo numeros
( )
--> bloque de expresiones
(exp1 |exp2)
--> coincidencia de exp1 o exp2
[^exp]
--> negacion de la expresion
\
--> caracter de escape
.
--> cualquier caracter
$> grep alumno /etc/passwd
Muestra todas las lineas en el fichero /etc/passwd que contengan la
expresion alumno
$> grep -v alumno /etc/passwd
Filtra las lineas que no contengan la expresion alumno
$> grep "^a" /etc/passwd
Busca las lineas que comienzan con a
$> egrep "[0-9]" /etc/hosts
Acepta un mayor conjunto de expresiones regulares, filtra las lineas
que contengan numeros
$> fgrep alumno /etc/passwd
Filtra por palabras no por expresiones regulares, es ms rpido que
grep y egrep
$> fgrep -R alumno /etc 2>/dev/null
Buscamos la palabra alumno en cualquier archivo del /etc direccionando la salida
de error al /dev/null
Ejercicio: Arma una expresion regular para validar numeros de ips
Solucion:[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}
$> egrep -R "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}" /etc 2>/dev/null
Ejercicio: Escribe una expresion regular para validar emails en

cualquier archivo del directorio /etc o sus subdirectorios


pepito@gmail.com
pepito_linux@gmail.com
pepito.linux@gmail.com
7318@gmail.com
Solucion: "[a-zA-Z0-9]?[a-zA-Z0-9\-\._]+@[a-zA-Z0-9]?[a-zA-Z0-9\-\.]+[a-zA-Z]{2,
4}"
$> egrep -R "[a-zA-Z0-9]?[a-zA-Z0-9\-\._]+@[a-zA-Z0-9]?[a-zA-Z0-9\-\.]+[a-zA-Z]{
2,4}" /etc 2>/dev/null | grep -v binario
Bsqueda de Archivos
-------------------------find,locate,whereis,which
-------------------------$> find ./ -name a\*
Busca archivos y directorios que comiencen con a, tomando como base el
directorio actual
$> find -name "a*"
Busca archivos y directorios que comiencen con a, tomando como base el
directorio actual
$> find /etc -name hosts
Busca desde el /etc el archivo o directorio interfaces
$> find /usr -size +300k
Busca todos los archivos en el /usr que pesen mas de 300K
$> find /etc -name passwd -exec cat {} \;
Busca todo los archivos llamados passwd dentro de /etc y luego visualiza
el contenido de cada uno de ellos con el comando cat
$> find /etc -exec sed -i "s/smtp/correo/g" {} \; NO EJECUTAR
Busca y reemplaza smtp por correo en todos los archivos dentro de /etc
$> find / -user alumno -size +3M
Busca archivos del usuario alumno que sean mayores a 3 Megas en
todo el sistema
$> find / -user root -size +3M
$> updatedb
Actualiza la base de datos de la lista de archivos y directorios
existentes en el sistema
$> locate interfaces
Busca en la base de datos el archivo interfaces
$> whereis vi
Muestra la ruta de binarios, librerias y documentacion del comando vi
$> which vi
Muestra la ruta del binario del comando vi
Usuarios y permisos:

################################################################################
########################
Archivos importantes de usuarios, grupos y contraseas
-------------------/etc/passwd
(lista de usuarios)
/etc/group
(lista de grupos)
/etc/shadow
(lista de contraseas de usuarios)
/etc/gshadow (lista de contraseas de grupos)
Crear usuarios
-------------crear un nuevo usuario, su directorio de trabajo y su grupo igual al nombre de u
suario
$> useradd -md /home/tuxito tuxito
crear o cambiar la contrasea de un usuario
$> passwd tuxito
* Plantilla de los home directory
--------------------------------------------------------Cuandro creamos un usuario; el home directory del mismo
se crea en base a la plantilla de directorio /etc/skel
Ej: al ejecutar el useradd -md /home/tuxito tuxito
es como si hubiese ejecutado:
$> cp -R /etc/skel /home/tuxito
$> chown -R tuxito.tuxito /home/tuxito
Ahora nos logueamos como tuxito
$> su - tuxito
mostrar informacin del usuario actual
$> id
salir de la sesion actual
$> exit
$> id
crear usario linuxero con descripcion, grupo principal y grupos adicionales,
as como su intrprete de comandos
$> useradd -md /home/linuxero -c "linuxero fanatico" \
-g users -G video,audio -s /bin/bash linuxero
$> passwd linuxero
$> grep linuxero /etc/passwd
linuxero:x:1003:100:linuxero fanatico:/home/linuxero:/bin/bash
Donde:
linuxero = nombre del usuario
x
= la clave del usuario esta en /etc/shadow
1003 = uid del usuario
100 = gid del usuario
linuxero fanatico = descripcin
/home/linuxero
= directorio de trabajo del usuario

/bin/bash = interpretes de comandos


$> grep users /etc/group
users:x:100:pepito,tuxito,windozero
Donde:
users = nombre del grupo
x
= la clave del grupo esta en /etc/gshadow (no es comun)
100
= gid del grupo
pepito,tuxito,windozero = usuarios adicionales del grupo
$> grep linuxero /etc/shadow (archivo de contraseas)
linuxero:$6$qf7G8CbU$R9wiKgiN0rVaP1qsjQnzRsYfywP3L468:15297:0:99999:7:::
Donde:
linuxero = nombre del usuario
$6$qf7G... = contrasea encriptada en un algoritmo como MD5, SSHA,
si est vaco no requiere contrasea, si tiene un
asterisko al inicio, la cuenta est deshabilitada
15297
= El nmero de das desde la era Unix en que el password fue cambi
ado
0
a que puede ser

(01 de Enero de 1970).


= Nmero de das mnimo en que el password podr sea cambiado (0 indic
cambiado en cualquier momento)

99999

= El nmero de das mximo en que el password debe ser cambiado (999

99
indica que el password puede permanecer sin cambiar por much
os aos)
7
= El nmero de das de alerta al usuario antes que su clave expire
(7 es una semana)
= Nmero de das que se deshabilitar la cuenta, una vez que expire
el password
= Nmero de das desde la era Unix que la cuenta ser deshabilitada
= Campo reservado para futuro uso
Opciones del passwd para cambiar las opciones de la contrasea
#################################################################
$> passwd --help
-d, --delete
delete the password for the named account (root only)
-l, --lock
lock the named account (root only)
-u, --unlock
unlock the named account (root only)
-x, --maximum=DAYS
maximum password lifetime (root only)
-n, --minimum=DAYS
minimum password lifetime (root only)
-w, --warning=DAYS
number of days warning users receives before password
expiration (root only)
-i, --inactive=DAYS
number of days after password expiration when an accou
nt becomes disabled (root
only)
Ejemplo:
Modificamos la expiracion de contrasea del usuario linuxero a 30 das
$> passwd -x 30 linuxero

Verificamos el cambio
$> grep linuxero /etc/shadow
Bloqueamos el login del usuario linuxero, deshabilitando su contrasea
$> passwd -l linuxero
Verificamos el cambio
$> grep linuxero /etc/shadow
Desbloqueamos el login
$> passwd -u linuxero
Modificar usuarios
--------------------$> grep tuxito /etc/passwd
$> usermod -c "tuxito hacker" tuxito (modificamos a sus usuarios)
$> grep tuxito /etc/passwd
$> vim /etc/passwd (modifica el archivo de usuario)
Borrar usuarios
--------------------$> userdel linuxero (borra el usuario pero no su directorio de trabajo)
$> userdel -r tuxito (borra el usuario incluyendo su directorio)
Crear un Grupo
------------------------$> groupadd fanaticos
vuelvan a crear tuxito
Agregar un usuario a un grupo
---------------------------------------$> gpasswd -a tuxito fanaticos (agrega al usuario tuxito al grupo fanaticos)
$> grep fanaticos /etc/group
$> vim /etc/group
se puede agregar un usuario directamente a un grupo editando el archivo groups
Permisos de archivos y directorios
------------------------------------$> ls -l /etc/hosts
inodo tamao en bytes fecha y hora
|
|
|
|
|
|
-rw-r--r--. 2 root root 240 2009-05-04 08:15
|______ | |
|
|
|
| |
|
|
|
| dueo grupo
|
|
---> permiso especial
|
|---> triada de permisos para el archivo
|
y el resto del mundo

de modificacion
/etc/hosts
|
|
ruta del archivo
del dueo, usuario

|
--> r=read 4
|
--> w=write 2
|
--> x=exec 1
|
Informacin del tipo de archivo
############################################################
1. Regular file(-)
2. Directory files(d)
Special files
3. Block file(b)
4. Character device file(c)
5. Named pipe file or just a pipe file(p)
6. Symbolic link file(l)
7. Socket file(s)
$> su $> cd
$> ls -l saludo
$> chmod 664 saludo
(6=permiso dueo,6=permiso grupo,4=permiso de otros)
$> ls -l saludo
$> chmod 777 saludo

(permisos totales para todos)

$> ls -l saludo
Se pueden usar letras para cambiar los permisos con chmod
u=user, g=group, o=others, a=all
r=read, w=write, x=execution
-=quita permisos , +=aade permisos
quitar al resto del mundo todos los permisos al archivo saludo
$> chmod o-rwx saludo
$> ls -l saludo
Agregar permisos de lectura escritura y ejecucion al dueo y grupo del archivo
$> chmod ug+rwx saludo
$> chown alumno saludo (cambia de dueo al archivo)
$> ls -l saludo
$> chgrp alumno saludo (cambia de grupo al archivo)
$> ls -l alumno
$> chown -R alumno.alumno /home/alumno
----- -----dueo grupo
cambia de dueo y grupo al directorio /home/alumno incluyendo sus subdirectorios
* Nota
------------------------------------------------------------------------el comando chmod lo puede ejecutar el dueo del archivo y el usuario root

el comando chown solo lo puede ejecutar root


Mscara de Permisos por Defecto
-----------------------------------muestra la mascara de permisos con que se crean archivos o directorios
$> umask
muestra los permisos con que se crea los directorios
u=rwx, g=rx, o=rx
$> umask -S
el umask con 0077 establece una nueva mascara
$> umask 0077
Cambio de mascara de permisos de usuarios de forma permanente
------------------------------------------------------------$> su - alumno
$> umask
$> vim ~/.bashrc
umask 0077
---> poner en la ultima linea
$> su - alumno
$> umask
Notas:
chmod = solo lo puede ejecutar el dueo del archivo y root
chown = solo lo ejecuta root
Mensaje de Bienvenida al iniciar una sesin
---------------------------------------------$> vim /etc/motd
# Este servidor esta mantenido por mi
# No intentes tocar nada, que despues te vas a arrepentir
ctrl+alt+f3
loguearse como root
o
$> vim /etc/motd
.888888:.
88888.888.
.8888888888
8' `88' `888
8 8 88 8 888
8:.,::,.:888
.8`::::::'888
88 `::' 888
.88
`888.
88' .::. .:888.
888.' :'
`'88:.
8888'
'
88:8
8888H,
.
88:8
8888HH, :
8:88'
:.8HH, .
.::88'
.:::::88H `
.:::::::.
.::::::.8
.:::::::::
:::::::::..
.:::::::::'
`:::::::::88888:::::::'

`:::'

`:'

BIENVENIDO A LA MATRIX
$> ssh root@localhost
Variables de entorno y alias
--------------------------------------$> set (variables del sistema,visualiza las variables de entorno existentes)
$> env (variables del usuario-similar al anterior)
$> export SALUDO="hola mundo" (define una variable de entorno)
$> echo $SALUDO (muestra el valor de la variable de entorno)
$> echo $SA----> TAB
$> echo $PATH
Variables de entorno predefinidas
###########################################################
Existen muchas variables de entorno del sistema, ej:
Variable que define las rutas de los directorios que guardan comandos ejecutable
s del sistema
$> echo $PATH
Variable que define la forma del prompt
$> echo $PS1
Alterando una variable predefinida
$> export PS1="[\u@\h \w]\$ "
Definiendo y modificando variables de entorno del usuario
##############################################################
$> su - alumno
$> vim .bashrc
.
.
export SALUDO="hola que tal" --> ultima linea
$> su - alumno
$> echo $SALUDO
Variables de Entorno globales
-------------------------------------------------/etc/bashrc -----> Fedora, CentOS
/etc/profile -----> Ubuntu o Debian
Archivo que se ejecutan en cada inicio de sesion para todos los usuarios, por ta
nto puedo definir variables de entorno y alias permanentes para todos los usuari
os.
$> su $> vim /etc/bashrc
.
.
.
export DESPEDIDA=chao
export PATH=/scripts:$PATH
export ORAHOME=/opt/oracle
$> su $> echo $DESPEDIDA

$> su - alumno
$> echo $DESPEDIDA
$> echo $PATH
/scripts:/bin...
$> echo $ORAHOME
$> su $> mkdir /scripts
$> cd /scripts
$> vim backuphome
#!/bin/bash
tar -zcpvf /backup/home.tgz /home
$>
$>
$>
$>

chmod 755 backuphome


mkdir /backup
/scripts/backuphome
backuphome

Alias de comandos
------------------------------------------------------Para ver los alias existentes
$> alias
Modificar y crear alias
$> vim /etc/bashrc (agregar al final)
alias listado="ls --color"
alias dir="ls --color"
$> su $> alias
$> listado
$> unalias listado (elimina un alias de manera temporal)
Para borrar permanenteme, borrar el alias del
/etc/bashrc
$> alias
Misc
###################################################################
Linux desde el navegador
http://angrave.github.io/sys/#playground

Vous aimerez peut-être aussi