Documentos de Académico
Documentos de Profesional
Documentos de Cultura
COMANDO FUNCION
date Muestra el día y la hora del sistema
cal Muestra un calendario
who Quien esta conectado en el sistema
whoami Muestra el nombre del usuario
man Muestra una ayuda detallada del comando
clear Borra la pantalla
alias Asigna un nombre a la ejecución de uno o varios comandos
con sus respectivas opciones y argumentos
unalias Elimina el alias especificado
uname Muestra información sobre el sistema operativo
passwd Cambia la contraseña del usuario
history Muestra los comandos utilizados
exit Termina la sesión del usuario
ls Muestra información sobre ficheros y directorios
pwd Muestra la ruta absoluta del directorio donde nos encontramos
mkdir Crea directorio
cd Cambia de directorio
rmdir borra directorios si están vacios
rm Borra ficheros y directorios
cp Copia uno o varios ficheros en otro fichero o en un directorio
mv mueve uno o varios ficheros en otro fichero o en un directorio
file Muestra el tipo de fichero
du Muestra el espacio que ocupa el fichero o directorio
df Muestra el espacio libre en los dispositivos de almacenamiento
y en las particiones montadas
cat Muestra el contenido de los ficheros que se pasen como
argumentos
head Muestra las 10 primeras filas de los ficheros que se le indiquen
tail Muestra las 10 ultimas filas de los ficheros que se le indiquen
wc Muestra el numero de lineas, palabras, caracteres y bytes de
los ficheros que se le indiquen, o el tamaño de la linea mas
larga
more Muestra el contenido de los ficheros pero de forma paginada
less Igual que more pero podemos movernos con las flechas del
cursor
sort Muestra en orden ascendente el contenido de los ficheros que
se le pasen por parámetro
ln Crea un enlace a un fichero o directorio
cut Muestra solo ciertas líneas verticales de los ficheros que se le
pasen como argumento
grep muestra
whereis Localiza los ficheros ejecutables o binarios
which Muestra la ruta absoluta del archivo/s que se le pase/n como
argumento/s
locate Busca archivos dentro del sistema de archivos. Solo puede
hacer búsquedas por nombre de archivo
find Busca ficheros en un arbol de directorios. Muestra el nombre
de los archivos encontrados que se corresponden con cierto
conjunto de criterios
su Cambia de usuario o nos permite ser root
sudo Para ejecutar comandos como si fuesemos root
Adduser Añade usuarios
deluser Borrar usuarios
addgroup Añadir grupo
delgroup Borrar grupo
usermod Modificar usuario
groupmod Modificar grupo
Chown Cambia el propietario de un archivo. También puede cambiar el
grupo
Chgrp Cambia el grupo de un archivo
sed "1d" temp.dat | tr -s " " | sort -t" " -k6 | cut -d" " -f6 | uniq -c
Mayusculas a Minusculas
usuario=`echo $user|tr [:upper:] [:lower:]`
tr A-Z a-z
Sustituir caracteres
user=`echo $user | sed 'y/ÁáÉéÍíÓóÚú/AaEeIiOoUu/'`
TODO JUNTO
echo $user | tr áéíóú aeiou | tr -d " " | tr A-Z a-z
egrep -v '^(#|$)'
grep –E -v '^(#|$)'
Random entre 0 y 9
Num=$((RANDOM % 10))
Procesos
ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 1 13:10 ? 00:00:01 /sbin/init 3 splash
por usuario (pongo el espacio para filtrar apariciones en el proceso)
ps -ef | grep "alberto "
FIND
Para buscar en el directorio root (/) archivos (-type) con más de 9 megas (-
size): (directorios –d)
por usuario
Ocultos
find / -type f –empty (o –size 0) (size numero bytes, +numero kb, +nºM
megas)
Para buscar todos los archivos con extensión .txt (-iname) abiertos (-atime)
en los últimos dos días:
Para buscar todos los archivos modificados o creados (-mtime) en los últimos
dos días:
FILTROS o TUBERIAS
Las tuberías o filtros se utilizan en una línea de comandos para conectar la
salida estándar de un comando con la entrada estándar de otro. Para ello se
utiliza el carácter “|”.
ls –li | cut –d” “ –f1,2,4
REDIRECCIONAMIENTOS
Cualquier proceso tiene una entrada estándar, stdin, y dos salidas, la salida
estándar, stdout, y la salida de errores, stderr.
Normalmente la entrada estándar, es el teclado y la salida estándar, es la
pantalla. Pero si produce un error la salida por pantalla corresponderá a la
salida de errores
Sin embargo podemos cambiar la entrada o salidas estándar y de errores, por
un fichero, por lo que habrá que usar redireccionamientos.
- “<” redirecciona la entrada estándar sustituyéndola por el archivo que
se le indique
- “>” redirecciona la salida de un proceso al fichero que se le indique,
borrando la información que el fichero contenía.
- “>>” redirecciona la salida de un proceso al fichero que se le indique,
pero añadiéndola al final del fichero, por lo que no borra el contenido.
- “2>” redirecciona la salida de errores de un proceso al fichero que se
le indique, borrando la información que el fichero contenía.
- “2>>” redirecciona la salida de errores un proceso al fichero que se le
indique, pero añadiéndola al final del fichero, por lo que no borra el
contenido.
USUARIOS y GRUPOS
- /etc/passwd: contiene en cada una de sus lineas información sobre
los usuarios. Separados por :
- /etc/shadow: contiene las contraseñas de cada usuarios encriptadas.
- /etc/group: fichero donde se encuentran los grupos definidos en el
sistema
- /etc/gshadow: se guardan las contraseñas de los grupos del sistema
- /etc/skel: directorio que contiene el contenido del directorio de los
nuevos usuarios que se vayan añadiendo al sistema.
PERMISOS
-rwxrwxrwx
drwxrwxrwx
1º tipo de archivo o directorio
2,3,4 permisos para el propietario del archivo o directorio
5,6,7 permisos para el grupo al que pertenece el propietario del archivo o
directorio
8,9,10 permisos para el resto de usuarios
r (read) lectura
w (write) escritura
x (execution) ejecución
SHELL SCRIPTS
VARIABLES
Variable local:
variable=”valor”
mostrar:
echo $variable
COMANDOS IMPORTANTES
set: muestra las variables locales y las de entorno
env: muestra las variables de entorno
export: exporta una variable local al entorno
unset: elimina una variable
echo: para mostrar una cadena de texto por pantalla, que puede ser el valor de
una variable si lleva el $ delante
SCRIPTS EN LINUX
Es una archivo de texto plano que contiene órdenes o comandos para realizar
una o varias tareas.
Comienzan con la cadena:
#!/bin/bash
Ejemplo:
nano borra.sh
#!/bin/bash
#borra la pantalla
clear
#muestra la fecha
date
Guardar fichero.
Asignar permisos de ejecución: chmod +x borra.sh
Ejecutarlo: ./borra.sh
VARIABLES
Existen unas variables específicas para ser utilizadas dentro de los shell
scripts:
Variable Función
$0 Nombre del shell script
$1,$2…. Parámetros o argumentos posicionales que se introducen
$n desde la linea de comandos
$# Numero de parámetros o argumentos posicionales
$* Variable que recoge el valor de todos los argumentos
$? Valor devuelto por el ultimo comando ejecutado
$$ PID del shell script
Estructuras de control
Las estructuras de control las usaremos para que, dependiendo de un
determinado valor de una variable o resultado de una condicion, se ejecuten
unos comandos u otros, o bien para que se ejecuten unos comandos un
número determinado de veces, según las expresión que usemos
if-then-fi
if [ condicion ]
then
comando/s
fi
if-then-else-fi
if [ condicion ]
then
comando/s
else
comando/s
fi
if-then-elif-then-else-fi
if [ condicion ]
then
comando/s
elif [ condicion ]
then
comando/s
else
comando/s
fi
case-in-esac
case $variable in
expre1) comando/s;;
expre2) comando/s;;
expre3) comando/s;;
......
*) comando/s;;
esac
Ejemplo de case:
#!/bin/bash
echo MENU DE OPCIONES
echo 1º borrar la pantalla. escribe: borra
echo 2º muestra la fecha. escribe: fecha
echo 3º listar el contenido del directorio. escribe: lista
echo 4º ver las variables de entorno. escribe: entorno
echo si no se cumple ninguna muestra un mensaje
read opcion
case $opcion in
"borra")clear;;
"fecha")date;;
"lista")ls;;
"entorno")env;;
*)echo No has elegido ninguna opcion permitida;;
esac
for-in-do-done
for $variable in valores
do
comando/s
done
#!/bin/bash
for i in $( ls ); do
echo item: $i
done
#!/bin/bash
for ((i=100;i<=115;i+=1)); do
echo $i
sleep 1
echo $i > /dev/ttyS1
done
#!/bin/bash
for i in `seq 1 10`;
do
echo $i
done
while-do-done
while [condicion]
do
comando/s
done
Recorrer parámetros
while [ $# -ne 0 ]
do
opera $fichero $1
shift
done
Para leer un de un fichero externo línea a línea
while read line
do
…..
done < fichero.txt
Expresiones condicionales
Para evaluar el valor devuelto por la condición usaremos las siguientes
expresiones dentro de los corchetes [] que representan al comando test, que
realiza la misma función.
Cadenas
Descomponer ruta y coger archivo solo basename path
Fichero=ejemplo.txt
nombre=${fichero%%.*} ejemplo
ext=${fichero##*.} txt
Asignación
nom=valor
Mostrar contenido
echo $nom
tamaño
echo ${#nom}
eliminar espacios en blanco
nombre=`echo $nombre | tr -d ' '`
Cambiar acentos y mayúsculas
nom_user=`echo $nom_user | sed 's/á/a/' | sed 's/é/e/' | sed 's/í/i/' | sed
's/ó/o/' | sed 's/ú/u/'`
#une cadenas y cambia mays por mins
nom_user=`echo $nom1$apell1$apell2 | tr [:upper:] [:lower:]`
Funciones
Las funciones son trozos de código que se ejecutarán cada vez que las
llamemos. Al llamar a una función podemos enviarle parámetros, al igual que
cuando llamamos a un shell script desde la linea de comandos.
Para definir una función usaremos el siguiente código:
function
se utiliza para definir una función
Declaración:
function nombre
{
Comando/s
}
Llamada a la función:
nombre_de_la_funcion
Actividad:
Cambia el valor de la variable PATH para que incluya tu directorio personal. A
continuación crea un shell script, param.sh, que muestre los parámetros que ha
recibido, cuantos parámetros son, el nombre del shell script y el PID del
proceso.
PATH=$PATH ”
param.sh
#!/bin/bash
echo “parametros: $*”
echo “numero de parámetros: $#”
echo “nombre del script: $0”
echo “PID: $$”
$? Nos devuelve el resultado del último comando, 0 si fue bien, 1 o mas si dio
error
Actividad
Crea una shell script, fich.sh que te pregunte el nombre de un fichero. Si el
fichero existe, te debe mostrar información sobre el en formato largo. Si no
existe o no es un fichero te mostrara un mensaje de error
#!/bin/bash
echo Escribe el nombre del fichero
read fichero
if [ -f $fichero ];then
ls –l $fichero
else
echo el fichero $fichero no existe o no es un fichero
fi
Actividad
Crea un shell script, fichodir.sh, que reciba una serie de parámetros por la linea
de comandos, los muestre y te diga si son ficheros o directorios
Ayuda
-d $variable : para comprobar si es un directorio
#!/bin/bash
if [ $# -eq 0 ]; then
echo No me vaciles y pon algun parametros
else
while [ $# -ne 0 ]
do
if [ -f $1 ];then
echo “$1 es un fichero”
elif [ -d $1 ]; then
echo “$1 es un directorio”
else
echo “$1 no es ni fichero ni directorio”
fi
shift
done
fi
#!/bin/bash
echo –e “escribe el nombre de un fichero: \c”
read fichero
#recorre todos los componentes de un directorio y los va asignando a var
for var in *
do
if [ $var –nt $fichero ];then
echo “$var es mas reciente”
fi
done
Scripts del sistema
Cuando el sistema arranca, se ejecutan una serie de shell scripts cuya función
es ejecutar ciertos comandos iniciales y asignar valores a las variables de
entorno necesarias. Al salir del sistema, se ejecutan otros shell scripts cuya
función es dejar el sistema preparado para la próxima vez que se inicie sesión.
Cuando salimos del sistema el fichero que lee el shell bash es .bash_logout.
Podemos utilizarlo para incluir comandos que queremos que se ejecuten
cuando salimos.
Servicios
Los scripts que se encargan de arrancar y parar los servicios o reiniciarlos se
encuentran en el directorio /etc/init.d . los parámetros que se le pueden pasar
dependen del script, pero normalmente son start, stop, restart y status
Parada
Para apagar el sistema sin que cause ningun problema al apagarse utilizamos
los comandos:
halt o poweroff -> apagan
reboot –> reinicia
shutdown -> para (-h) y reinicia (-r) se debe añadir now (ahora) o (numero)
minutos
Comando apt-cache
El comando apt-cache trabaja con la caché de los paquetes de APT
buscando información. Simplemente muestra información sobre los paquetes,
así que lo pueden usar usuarios normales.
Comando apt-cdrom
El comando apt-cdrom permite añadir un CD o DVD al fichero
/etc/apt/sources.lst
Comando dpkg (para instalar paquetes si lo tenemos descargado)
dpkg –l : lista todos los paquetes instalados
Ficheros bz2
Comprimir
bzip2 fichero
Descomprimir
bzip2 –d fichero.bz2
Ficheros zip
Ficheros rar
Ficheros tar
Empaquetar ficheros o directorios
empaquetar
tar –vcf archivo.tar fich1 fich2 ….
Desempaquetar
tar –xvf archivo.tar
Paquetes rpm
rpm: instala, desinstala y actualiza paquetes rpm
Programación de tareas
Por usuario
crontab –e editar
crontab –l listar
crontab –r borrar
Programar una tarea es planificar que dicha tarea se ejecute en un
instante determinado o cada cierto tiempo de forma periódica. Para ello se
pueden utilizar los siguientes comandos:
at: permite planificar la ejecución de tareas
cron, anacron, crontab: permite planificar ordenes o procesos de forma
periódica en el tiempo o ver los procesos planificados.
Ficheros:
/etc/crontab (el genérico, hay que poner usuario)
Campo Funcion Valores
Minuto Minuto en que se ejecutara el comando 0-59
Hora Hora en que se ejecutara el comando 0-23
Dia Dia del mes en que se ejecutara el 1-31
comando
Mes Mes en que se ejecutara el comando 1-12
Dia de la Dia de la semana en que se ejecutara el 0-6
semana comando
Usuario Usuario que ejecuta el comando Nombre del
usuario
Comando Comando o script a ejecutar Comando o
script
Un script llamado /etc/ll.sh por usuario root, a todas las horas en punto y a y
media, el primer, undecimo y vigesimo primero dia de cada mes, de todos los
meses menos agosto.
m h dom mon dow user command
00,30 * 1,11,21 1-7,9-12 * root /etc/ll.sh
Un script llamado /etc/rr.sh por usuario root, todos los primeros, decimos y
vigesimos dias de cada mes que sean lunes o domingo, a las 3:13 de la
mañana.
m h dom mon dow user command
13 3 1,10,20 * 0-1 root /etc/rr.sh
Actualizar cambios
/etc/init.d/networking restart
Asignar IP
ifconfig eth0 192.168.1.23 netmask 255.255.255.0 up
puerta de enlace
route add –net 0/0 gw 192.168.1.1 eth
ifconfig eth0 up
ifconfig eth0 down
IPTABLES
Iptables puede manejar varias tablas. Las más importantes son:
1. Filter. Es la tabla predeterminada que permite el filtrado de las
comunicaciones. La tabla Filter está compuesta por tres pilas.
a. INPUT. Referencia el tráfico de entrada
b. OUTPUT. Referencia el tráfico de salida
c. FORWARD. Referencia el tráfico que el router reenvía a otros
equipos.
2. NAT. El servicio que permite dar acceso a internet a una red interna.
Esta tabla permite definir el tipo de comunicaciones entre la red externa
y las redes internas. La tabla NAT tiene dos pilas.
a. POSTROUTING. Permite establecer las comunicaciones desde la
red interna al exterior. Por ejemplo, para hacer que la red interna
tenga internet.
b. PREROUTING. Permite establecer las comunicaciones desde la
red externa a la red interna. Por ejemplo, se utiliza para que
desde el exterior se tenga acceso a un servidor interno.
Comandos básicos
Ver el estado de la tabla predeterminada (filter).
iptables –L
Si queremos ver el estado de la tabla NAT.
iptables –t nat –L
Añadir una regla para que el cortafuegos realice una acción sobre un
tráfico predeterminado
iptables –A <parámetros> -j <acción>
Quitar una regla del cortafuegos
iptables –D <parámetros> -j <acción>
Limpiar la tabla de cortafuegos
iptables –F
Limpiar la tabla de NAT
iptables –t nat –F
Establecer por defecto una acción determinada sobre una pila.
iptables –P <cadena> <acción>
Por ejemplo, si quiere que por defecto el router deniegue todo el tráfico
de la pila FORWARD iptables –P FORWARD DROP
Acciones sobre la tabla Filter
-j ACCEPT acepta el tráfico
-j DROP elimina el tráfico
-j REJECT rechaza el tráfico e informa al equipo de origen
-j LOG –log-prefix “IPTABLES_L” registra el tráfico que cumple los
criterios en /var/log
Acciones en la tabla NAT
-j MASQUERADE hace enmascaramiento del tráfico (NAT) de forma
que la red interna sale al exterior con la dirección externa del router.
-j DNAT –to <ip> se utiliza para que desde el exterior se tenga acceso
a un servidor que se encuentra en la red interna.
Parámetros para especificar las reglas de iptables
Element Sintaxis Ejemplo Descripción
o
Interfaz -i <interfaz> -i eth0 Interfaz de entrada
-o <interfaz> -o eth1 Interfaz de salida
Dirección -s <dir_red> -s 10.0.0.0/24 Red de origen
-d <dir_red> -d 0/0 Red de destino
-p <tipo> -p TCP Tipo de protocolo.
Opciones: TCP,
UDP, ICMP.
Puerto --dport <puerto> -p TCP --dport 80 Indica el puerto de
destino. Ejemplo http
(80/TCP)
--sport <puerto> -p UDP –sport 53 Indica el puerto de
origen. Ejemplo DNS
(53/UDP)
Estado -m state –state -m state --state Indica el estado de la
<tipo> ESTABLISHED conexión. Los
posibles estados
son: NEW, INVALID,
RELATED y
ESTABLISHED
Acción -j <acción> -j ACCEPT Indica la acción que
se va a realizar con
un determinado
tráfico. Las posibles
acciones son:
ACCEPT, DROP,
REJECT, LOG,
DNAT y
MASQUERADE
De esta forma puedes "jugar" con los parámetros de una determinada regla
para poder especificar la acción que se aplica. A continuación, puedes ver tres
reglas, para permitir el tráfico que reenvía el router, que van desde la más
general a la más específica:
iptables -A FORWARD -j ACCEPT. Permite todo el tráfico.
iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT. Permite sólo el tráfico de
la red interna 192.168.0.0/24.
iptables -A FORWARD -s 192.168.0.0/24 -p TCP –dport 80 -j ACCEPT. Permite
sólo el tráfico de la red interna 192.168.0.0/24 en el puerto 80.
Si deseas bloquear comunicaciones por su país de origen te recomiendo que
visites la página web ipinfodb.com.
Reenvío de paquetes desde una interfaz local (eth1) a una red pública
(eth0)
iptables –a FORWARD –s eth1 –o eth0 –j ACCEPT
si es de conexiones existentes
iptables -A FORWARD -i eth0 -o eth1 -m state --state ESTABLISHED,RELATED -j
ACCEPT
Reglas generales:
Impedir que entre ningún paquete
iptables –P INPUT DROP (aceptar todos con ACCEPT)
Impedir que salga ningún paquete
iptables –P OUTPUT DROP (aceptar todos con ACCEPT)
Reenviar
iptables –P FORWARD DROP (ACCEPT)
Aceptar TODO el tráfico que venga a el puerto 5160 tcp (OJO, puerto de
destino)
iptables –A INPUT –s 0.0.0.0/0 –p tcp –dport 5160 –j ACCEPT (se podría
ahorrar el –s 0.0.0.0/0 porque aceptamos todo)