Você está na página 1de 102

Introduccin a UNIX

Sistemas Operativos 2016

Unix Programming Environment


Objectivos: Conocer las caractersticas bsicas
de Unix y la filosofa de Unix

Comandos bsicos
Sistema de archivos
Shell
Filtros (wc, grep, sort, awk)
Redireccin de archivos, Tuberas

Estructura de un Sistema
UNIX
Applications
Shell

Kernel\ (OS)

Aplicaciones estandar:
Comandos de
Sistema de archivos
editores de textos

Hardware

compiladores

procesadores de
texto

Unix y los Usuarios


La mayora de versiones de Unix proven
el mismo conjunto de aplicaciones
(comandos y shells).
A pesar de que sus interfaces de
usuario no son parte directa del SO,
estn estandarizados lo suficientemente
para que baste con aprender una
versin.

Versiones de Unix

SysV (AT&T)
BSD (Berkeley)
Solaris (Sun)
IRIX (SGI)
AIX (IBM)
LINUX (free software)

Logearse
Modos:

Desde la consola
Acceso remoto mediante SSH, telnet.

Los nombres y comandos son sensitivas


a maysculas o minsculas!

Username
(tipicamente) una secuencia de caracteres
alfanumricos de longitud no mayor a 8.
Identificacion primaria de la cuenta.
(usualmente) usada como direccion de
correo
El nombre del directorio home est
relacionado con el nombre de usuario.
Creacin de un usuario
adduser hernan

Password

20/04/2016

Cadena secreta que nadie debe conocer (ni el


sistema!)
Al pulsar la clave, el Sistema la encripta y la
compara con lo almacenado.
Debera tener al menos 6 caracteres
Es una Buena idea mezclar maysculas y
minsculas, nmeros y caracteres especiales
(asccii estandar)
Cambio de clave de un usuario
passwd hernan

Usuarios
Archivo: /etc/passwd
Visualizar:

cat /etc/passwd

Campos:

login name, encrypted password, numeric user ID(205),numeric group ID(105),a


comment eld, home directory (/home/sar), and shell program (/bin/ksh).

Ejemplo:

sar:x:205:105:Stephen Rago:/home/sar:/bin/ksh

shell

Intrprete de lnea de comandos que lee las entradas del usuario y los ejecuta

Archivos y nombre de archivos


Un archivo es la unidad bsica de
almacenamiento.
Son sensibles a maysculas! (case sensitive)
De hecho, todo es case sensitive!
Los archivos en Unix pueden contener cualquier
character, excepto el character null y slash (/).
Los nombres de archivos pueden ser largos!

Cuan largo depende de la version

Archivos y nombre de archivos


Cada archivo en el mismo directorio
debe tener un nombre nico.
Los archivos que inician con un '.' son
ucultos
ls lista el contenido de un directorio

-a all files
-l long listing

Unix Filesystem
El Sistema de archivos
Es un Sistema de organizacin jerrquica
de archivos y directorios.
El nivel superior de la jerarqua se llama la
raiz (root) y guarda todos los archivos y
directorios del Sistema de archivos.

El nombre del directorio root es /

Directorios
Un directorio es un clase especial de archivo Unix usa los directorios para almacenar
informacion acerca de los archivos.
Para crear
mkdir nombre
Ej:
cd
mkdir netprog
mkdir unix

Imprimir directorio de trabajo (actual)


pwd print working directory

Directorio home
Directorio personal del usuario,
/home/hernan
/home/prueba

A veces est montado en un file system


separado del SO

Directorio home
Directorio actual al logearse
Localizacion de varios archivos de inicio y
configuracin. :
.vimrc .bashrc .bash_profile .forward .plan .mozilla/
.elm/ .logout

Para cambiarse de carpeta


cd change directory
cd ruta
Ej: cd /home

Sin argumentos, lleva a home

Filesystem
/
bin

etc

hollid2
netprog

unix

home/
scully
X

tmp
bin
ls

usr
etc
who

Rutas (Pathnames)
La ruta de un archivo incluye el nombre
del archivo y el nombre de la carpeta
que lo contiene, y el nombre de la
carpeta que la contiene hasta llegar
a la raiz
Ej.
/home/hernan/trabajos/tarea1

Ejemplos de rutas
/
bin/

etc/

Hollid2/
netprog

home/

tmp/

scully/

unix/

usr/

bin/ local/
ls

Syllabus

who

/usr/bin/ls

/home/hollid2/unix/Syllabus
Crear usuarios y su estructura con su nombre en vez de Hollid2

Rutas Absolutas
Las que se especifican desde la raiz.
/home/hernan

Absolutas especiales :

~ es el directorio home de $USER

Para ver el contenido de las variables de entorno

~hernan/ /home/hernan (solo para el


directorio home del usuario)

echo $USER

Otras variables

env

Rutas relativas
Prefijadas con el directorio actual ( $PWD )
Relativas a la carpeta de trabajo actual
$ cd /home/hernan
$ pwd
/home/hernan
$ ls unix/Sillabus
unix/Sillabus
$ ls X
ls: X: No such file or directory
$ ls /home/scully/X
/home/scully/X

Rutas relativas especiales


. Directorio actual
.. Directorio padre
$ pwd
/home/hernan
$ ls ./netprog
./netprog
$ ls ../scully
X

Disco vs. Sistema de archivos


La jerarqua completa puede incluir varios
discos fsicos.

Algunas carpetas pueden estar en otras


computadoras

bin

etc

hollid2

Tarea:
1. Investigar y aprender
/
a usar vi
2. Resumen sobre
seguridad unix
3. Leccion ejecutando
y utilizando
users comandos
tmp
usr
vi para editar textos

scully

21/04/2016

Pginas de ayuda
Informacin detallada de comandos:
man ls
man cat
man man

Se puede buscar por palabras clave:


man -k

buscado

Los programas y los I/O


estandar

Standard Input
(STDIN)

Program

Standard Output
(STDOUT)

Standard Error
(STDERR)

Standard I/O
Cuando se ingresa un commando, el
shell crea un subshell para ejecutar el
proceso o script.
El shell establece e canales I/O:

Entrada estndar (0) teclado


Salida estndar (1) pantalla
Error estndar
(2) pantalla

Esos flujos pueden ser redireccinados a


y desde un archivo, o incluso a otro
comando

Terminal de acceso
Consola:
Pantalla y teclado conectado fsicamente al servidor

Consolas virtuales
CTRL + ALT + F1 a F8 o CTRL + F1 a F8

Interfaz grfica
CTRL +ALT+ F9

Terminal Serial
Terminal tonto
por moden
Hyperterminal (emulador)

Terminal de acceso
Conexion remota via red
Telnet (Telecommunication Network )
SSH (Secure SHell)

Programas
Tinyterm
putty

Terminar un flujo en la entrada


estandar
Para indicar el fin de la entrada pulsar Ctrl-D (^D),
que es la seal EOF de la lnea, esto Cierra el flujo de
entrada (stream).
El shell es un programa que lee desde la entrada
estndar.
Qu sucede al pulsar ^D en el shell?
(Ver el comando set e ignoreeof)

Ingreso de commandos
El shell imprime el prompt y espera que
se escriba un comando.
El primer element se espera sea el
commando. Pueden ser:

Incorporados del shell - comandos que el


shell interpreta directamente.
Programas externos (utilidades)
programas independientes en el disco (se
busca en el orden especificado de las
carpetas en $PATH - &Path en win)

Interpretar un Comando - type


Cuando se encuentra un comando, el shell:
1.
2.
3.
4.

Busca por alias


Busca funciones definidas por el usuario
Busca si es incorporado
Busca utilidades en los directorios especificados
en $PATH

Se puede usar type para saber que usa el


shell:
type echo
echo is a shell builtin
type chmod
chmod is /bin/chmod

Comandos Sintaxis Bsica


El Shell considera el primer elemento como un
comando. Los siguientes elementos son argumentos
Los Argumentos que inician con un son llamados

opciones

Las opciones modifican la forma en la cual trabaja


un comando, frecuentemente un guin y una letra
(puede combinarse luego del guin)
Sintaxis de comandos:
command [option1] [option2] . . . [optionN]
grep "Hernan" /etc/passwd
ls -o /home/hernan /home/prueba/Public

-o lista larga
Los 2 parmetros son directorios

Opciones de lnea de commandos


Se puede modificar el formato de salida de ls
mediante opciones.

-l long format (fechas, propietario y permisos).


Comparable a -o
-a
all (muestra tambin los archivos ocultos*)
-F incluye un caracter especial para indicar el tipo de
archivo.
-C lista en columnas

*los archivos ocultos inician con "."

Des logearse
exit (commando incorporado)

Sale del shell


Si se est en el shell de login (nivel
superior), nos desconecta del sistema

Al ser el shell un programa que se


ejecuta, puede ser invocado
recursivamente

Metacaracteres del Shell


Algunos caracteres tienen significados
especiales para el shell:

redireccin I/O
< > |
comodines
* ? [ ]
otros
& ; $ ! \ ( ) space tab newline

Deben usarse junto con caracteres de


escape o entre comillas para evitar
comportamientos indeseados

Comodines

27/04/2016

* iguala 0 o ms caracteres
? iguala exctamente 1 caracter
[<list>] iguala cualquier caracter dentro de
la lista
Ej.
ls *.cc lista todos los archivos fuente de C++ en la
carpeta
ls a* lista todos los archivos que inician con a
ls a*.jpeg lista todos las fotos JPEGs que inician
con a
ls * - lista todo dentro de subdirectorios inclusive

Comodines
ls file?
- busca file1, file2, pero no file o
file22
ls file?.*.DEL
- busca file1.h.DEL,
file9.cc.DEL, file3..DEL pero no
file8.DEL o file.html.DEL
Estas no son expresiones regulares!

Comodines
[abc] iguala cualquiera de los caracteres
ls T[eE][sS][tT].doc

[a-z] iguala cualquier caracter en el rango


ls [a-zA-Z]*
[!abc] iguala cualquier caracter except

aquellos en la lista.
ls [!0-9]*

Ver archivos
cat concatena, enva a la salida
estndar (stdout). Muestra el contenido
de un archivo
less, more utilidades de paginacin
od octal dump. Para ver el contenido
en octal, hex, control chars, etc.

Variables de Shell
bash usa variables shell para almacenar
informacin
Usadas para cambiar el comportamiento
del shell y de otros programas
Podemos acceder a esas variables:

Colocar nuevos valores para personalizar el


shell.
Ver el valor para ayudar a completar una
tarea.

Variables del Shell


Algunas comunes:
PATH lista de carpetas en donde buscar
commandos que no son incorporados al
shell
PS1 prompt primario
USER nombre del login del usuario
HOME carpeta home del usuario
PWD carpeta de trabajo actual

Otras importantes
SHELL el shell del login
TERM el tipo de terminal
HISTFILE en donde se almacena el
historial de comandos
EDITOR mantiene el editor preferido
del usuario
HOSTNAME nombre de la mquina
SHELLOPTS valor de varias opciones
del shell (ver set incorporado del shell
Bash)

Mostrar el valor de variables


de Shell
Colocar el Prefijo "$ a la variable.
El comando echo lo muestra:
$ echo $HOME
$ echo $PATH
Se puede usar estas variables en
cualquier comando:
$ ls -al $HOME

Cambiar/Ver las Variables


Para asignar (en sh, ksh, bash):
VAR=algunaCadena
OTRA_VAR=Con espacios
Nota, no usar espacio alrededor de =

Para ver :
$ echo $VAR
algunaCadena
$ echo $OTRA_VAR
Con espacios

Colocando valores en las


variables Shell
Se usa un comando de asignacin
incorporado: set
HOME=/etc
PATH=/usr/bin:/usr/etc:/sbin
NEWVAR=
Agregar directorio actual a PATH
PATH=$PATH:.

Comando set

Sin argumentos imprime el listado de


todas las variables de entorno.
Algunas opciones bash

noclobber no permite que la redireccin


sobreescriba un archivo existente
ignoreeof El Shell no sale con ctrl-D
vi usa una interfaz de estilo vi (se usa
emacs de forma predeterminada)
-n ejecucin en seco (solo ejecuta el parser,
pero no lo ejecuta). til para depuracin de
scripts

Caracter de escape \
Usar backslash para inhibir el
comportamiento especial del caracter a
continuacin :
$ echo $USER
hernan
$ echo \$USER
$USER
$ echo a\\b
a\b

Comillas dobles
Inhibe todos los comportamientos,
excepto sustitucin de variables,
sustitucin de comandos, y el caracter
de escape \
$ echo $USER es $USER
hernan es hernan
$ echo \$USER es $USER
$USER es hernan
$ echo He dicho, \Espera un
momento\
He dicho, Espera un momento

Comillas simples
Inhibe casi todos los comportamientos
especiales
No puede contener una comilla simple
$ echo he dicho espera!
he dicho espera!
$ echo Mi nombre es $USER
Mi nombre es $USER

Copiar, borrar, enlazar


rm borrar (del en win)
rm ~/tmp/download

mv mover (renombrar) un archivo (move en win)


mv ant.arch ../otroDir/nuevo.arch

cp copiar (copy en win)


cp dirOrigen/arch dirDest/arch

ln crea un enlace duro (inode) o suave (symbolic) a


un archivo
ln archivoOrigen archivoNuevo

Opcion recursivo
-R (/s en win)

28/04/2016

Comandos para directorios


mkdir crear directorio (make directory
md o mkdir en win)
rmdir borrar un directorio (remove
directory rmdir o rd en win)

Comandos
filtrar datos
grep "Hernan" /etc/passwd
Versin de Linux
uname -srv
Leer un archivo
more /etc/passwd
cat /etc/passwd

Comandos
Buscar archivos
find /usr -name nombre archivo
Espacio de disco y filesystems
montados
df
df h
Uso de espacio
du
du h usr/home/

Redireccionamiento
Entrada de un comando desde un archivo:
ordenar
sort < /etc/passwd
Guardando el resultado en un archivo
grep uucd /etc/passwd > usuario
sort /etc/passwd > ~/ordenado.text
Entrada y salida desde y hacia un archivo
sort < /etc/passwd > ordenado

Redireccionamiento
Agregando datos a un archivo

echo hola >> usuario

Leyendo datos a un archivo hasta cierta condicin


cat <<zz > input.txt
Encontrar / Buscar
find / -name COPYING -print
Enviar el error a un archivo
find / -name COPYING -print 2> finderr

Desechar el error
find / -name COPYING -print 2> /dev/null

Redireccionamiento

Comandos
Atajo con TAB
cat /etc/mod{TAB}
Conteo de lneas palabras y caracteres
wc /etc/passwd
wc l /etc/passwd
cat /etc/passwd | wc
ej. Cuantos archivos existen?

Atributos de los archivos


Cada archivo tiene algunos atributos:

Fechas de acceso:
Creacion del archivo
ltimo cambio
ltima lectura

Tamao
Propietarios (usuario y grupo)
Permisos
Tipo directorio, enlace, norlam, etc.
ACLs lista de control de acceso

Atributos de los archivos


Atributos de fecha:

Cuando fue cambiado ls -l


Ordenar por fecha de modificacin

ls -lt

Propietarios
Cada archivo es propiedad de un
usuario.
Se puede ver con ls y la opcin -l o -o:
ls -l
total 24
drwxr-xr-x
-rw-------rw-r--r--

7 jjohnson users
1 jjohnson users
1 jjohnson users

80 Jan
8258 Jan
8261 Jan

3
3
3

2015 cs265/
2015 cs265.html
2015 cs265.html~

ls -l
$ ls -l foo
-rw-rw----

permisos

1 hollingd grads 13 Jan 10 23:05 foo


tam

propiet

nombre

grupo
fecha

Permisos
Cada archivo tiene permisos especficos
Hay tres tipos de permisos:

read
r
write
w
execute x

Hay 3 conjuntos de permisos:


1.
2.
3.

Usuario / propietario
grupo
otros (los dems)

ls -l y los permisos

-rwxrwxrwx
User
Tipo de archivo:
- archivo normal
d directorio
s enlace simblico
(otros)

Group

Others

rwx
archivos:

r permitido leer.
w - permitido escribir / editar
x - permitido ejecutar

Directorios:

r - permitido ver el contenido (nombres)


w - permitido agregar o eliminar archivos.
x - permitido a ingresar al directorio

Cambio de permisos
El commando chmod cambia permisos
de archivos y directorios.
forma:
chmod modo archivo

chmod modos numericos


Permisos para cada conjunto de usuarios
(user, group, other) como nm de 3-bit

r4
w2
x1

El modo es un nmero octal de 3 dgitos #

755 rwxr-xr-x
644 rw-rr-700 rwx------

chmod - ejemplos

04/05/2016

$ chmod 700 CS571


$ ls o Personal
drwx------

10 kschmidt 4096 Dec 19 2004 CS571/

$ chmod 755 public_html


$ chmod 644 public_html/index.html
$ ls ao public_html
drwxr-xr-x
drwx--x--x
-rw-r--r--

16 kschmidt 4096 Jan 8 10:15 .


92 kschmidt 8192 Jan 8 13:36 ..
5 kschmidt 151 Nov 16 19:18 index.html

$ chmod 644 .plan


$ ls o .plan
-rw-r--r--

5 kschmidt

151 Nov 16 19:18 .plan

chmod modos simblicos


Usado para colocar, agregar, o
eliminar permisos
forma:
[ugoa][+-=][rwx]
u user
g group
+ agregar permisos
- quitar permisos
= colocar permisos

o other

a all

chmod ejemplos
$ ls -al foo
-rwxrwx--x
1 hollingd grads foo
$ chmod g-wx foo
$ ls -al foo
-rwxr----x
1 hollingd grads foo
$ chmod u-r .
$ ls
ls: .: Permission denied

Comandos para almacenar


tar

Crea un gran archivo a partir de muchos


archivos

gzip, gunzip

Utilidad de comprecin de archivos


tar realiza una compression gzip con la opcin z

Comprimir carpeta dir1


$ tar czf dir1.tgz dir1
Descomprimir
$ tar xzf dir1.tgz

Comandos
Concatenar comandos
cd; ls -l; pwd
Combinacin de comandos Shell:

uso de tubera (pipe)

ls /dev | grep sda

Entubamiento y combinacin
con filtros
Conectar la salida de un comando a la
entrada de otro para obtener filtros
compuestos
who | wc -l
ls | sort -f
ls -s | sort -n
ls -l | sort -nr -k4
ls -l | grep ^d

Filosofa Unix
La union de pequenas utilerias
mediante entubamiento y redireccin
para realizar fcilmente tareas no
triviales
Ej., encontrar los 3 subdirectorios ms
grandes:
$ du s * | sort nr | head -n3
120180
22652
9472

Files
Zaychik
tweedledee.tgz

Tarea:
Realizar
ejemplo de
cada uno de
los
comandos

Shell:
Personalizacin Inicio de sesin
Al iniciar el shell busca archivos de
configuracin y personalizacin en
home.

Se puede cambiar el prompt, PATH, etc.

parmetros.

Prompt de usuario
Dnde encontrar el correo
atajos

Se lo realiza en los archivos de inicio

Archivos de inicio
sh,ksh:
/etc/profile (predet del sistema)
~/.profile
bash:
~/.bash_profile
~/.bashrc
~/.bash_logout
csh:
~/.cshrc
~/.login
~/.logout

Control de procesos
Los Procesos se ejecutan en un subshell (de forma
predeterminada)
Los Subshell heredan las variables exportadas
Cada proceso tiene su ID (pid) y un padre (ppid)
Usar ps para verlos
$ ps
PID TTY
TIME CMD
350 pts/4
00:00:00 bash
22251 pts/4
00:00:00 vim
22300 pts/4
00:00:00 ps

Procesos en ejecucin
ps ax

Control de procesos (cont.)


Usar la opcin f para un listado largo :
$ ps f
UID
PID PPID C STIME TTY
hernan 350
349 0 10:06 pts/4
hernan 22251
350 0 17:32 pts/4
hernan 22437
350 0 17:36 pts/4

TIME CMD
00:00:00 -bash
00:00:00 vim tarea
00:00:00 ps -f

Usar e para listar los procesos de


todos los usuarios.
$ ps e | grep xmms
29940 pts/0
00:33:47 xmms

25/05/2016

Matar un proceso
El comando kill enva una senal al
proceso (al PID dado)
De forma predeterminada, enva TERM
(terminate), el que solicita que finalice
el proceso, de tal manera se lo haga de
forma limpia
usar -9 para enviar la senal KILL (no
ser ignorada), pero no de forma limpia
Ej:
$ kill -9 29940

Control de trabajo
El shell permite administrar trabajos

(jobs)

Coloca los trabajos en Segundo plano


(background)
mueve un trabajo a primer plano
(foreground)
suspende un trabajo
Mata un trabajo

Trabajos a Segundo plano


Se lo hace colocando un "& al final de la
lnea de comando.

No se necesita esperar que se termine el trabajo,


se puede escribir un Nuevo comando
inmediatamente.
Se puede tener un grupo de trabajos ejecutandose
al mismo momento.
Ej.
ls -lR > /home/hernan/listadoTotal.txt &

Listar los trabajos


El comando jobs listar los trabajos en
Segundo plano:
> jobs
[1] Running
ls -lR >
listadoTotal.txt &
>

El shell asigna un nmero a cada


trabajo (en este caso 1).

Suspendiendo y Reanudando
los trabajos en Segundo plano
Se puede suspender pulsando ^Z (Ctrl-Z).

Suspendido significa que se detiene el trabajo, pero no


finaliza.
El trabajo se mostrar en el listado obtenido con jobs.

Se usa fg y el nmero de trabajo, precedido por %.

Sin un argumento, fg trae el ultimo trabajo al primer plano

$ jobs
[1] Stopped
ls -lR > listadoTotal.txt &
$ fg %1
ls -lR > listadoTotal.txt

Colocar en el Segundo plano un


trabajo suspendido
Si est en primer plano, se debe
suspenderlo
Usar bg, tal como se lo hizo con fg,
para permitir que un trabajo suspendido
contine en el Segundo plano:
$ bg %3

Finalizar un trabajo
Kill puede tomar un nmero de trabajo
o incluso un nombre de trabajo,
usando %:
$ find . name core\* -print >
archivosCore &
$ firefox&
$ jobs
[1]+ Running
find . name
[2]+ Running
firefox
$ kill %2

Editores de texto
Un editor de texto se usa para crear y
modificar archivos.
Los ms comunes son:

vi (tambin vim en Linux)


$ vimtutor

emac
$ emacs
Entonces pulsar, ctrl-h t

VI comandos bsicos:

cambiar a modo comando: Esc


* Modo comando:
hacia arriba
hacia abajo
hacia la izquierda
hacia la derecha
Ir al final
Ir a la fila n (n=num)
Borrar letra actual
Eliminar linea
deshacer
Insertar texto
antes del cursor
luego del cursos

k
j
h
l
G
nG
x
dd
u
i
a

grabar
salir sin grabar

:w+Enter (write)
:q!+Enter

rehacer
escribir y salir
Salir grabando
Buscar

Ctrl+r
:wq+Enter
:x
/cadena+Enter

Permisos de superusuario
Agregar como miembro del grupo wheels
pw user mod hernan -G wheel
groups hernan
O editar /etc/group
y colocar usuario junto a grupo wheels (,usuario)

Quitar restriccion
# vi /etc/pam.d/su
Comentario a:
#auth requisite pam_group.so no_warn
group=wheel root_only fail_safe ruser

Conexin remota:
Configuracin de red
Utilizar conexin bridge (puente)
MV: Sin replica de direccin

Conexion remota
Verificar si est habilitado el servidor
# service sshd status
Si no est ejecutndose, agregar la siguiente
lnea a /etc/rc.conf para habilitar el demonio de
ejecucin al reiniciar.
sshd_enable="YES"

Para iniciar:
# service sshd start

Conexion remota
Verificar puertos
$ sockstat l
$ netstat l

Establecer IP
Automtica: DHCP (recomendable)
Manual
ifconfig em0 inet 192.168.0.254 netmask 255.255.255.0

route delete default; route add default 192.168.0.1


O cambiar /etc/rc.conf

Reiniciar servicios
$service netif restart
$service network restart
O reiniciar el huesped

(bsd)

Conexion remota
Verificar IP
Ifconfig
Ping desde BSD (ej. google)

Ping hacia BSD

Utilizar emulador
Ej. Putty
Direccion IP, tipo SSH

Transferir archivos
Uso de cliente de ftp
Ej. Filezilla
Archivo, gestor de sitios, Nuevo

Utilizar SFTP

Transferir archivos
Subir o bajar
Establecer permisos

Otros comandos
Apagar
Poweroff

shutdown p now

Reiniciar
shutdown r now

Você também pode gostar