Configuración del entorno de trabajo.
Si no se configura bien el entorno de trabajo, se rendirá mucho
menos en la realización de las prácticas. Primero hay que
configurar el terminal. Para ello, hay que poner de acuerdo
al programa de terminal que tenéis instalado en el aula de
informática con la configuración que tiene el
servidor donde se realizarán las prácticas.
Antiguamente los servidores eran accedidos mediante un
dispositivo denominado terminal. Fundamentalmente constaban
de un monitor y un teclado y la suficiente electrónica para
recoger los caracteres tecleados y mostrar otros por la
pantalla. Los caracteres recogidos se enviaban a través de
una línea de conexión (normalmente serie) hasta el servidor
y, la respuesta de este llegaba al terminal por la misma
línea.
Actualmente, el esquema es diferente. En lugar de un terminal
se dispone de PCs de propósito general y un programa que
emula el comportamiento de los antiguos terminales.
La conexión en lugar de hacerse a través de una
línea dedicada,
se realiza por Internet y siguiendo un protocolo, que normalmente
para conexiones de texto será SSH, la versión
con transmisión codificada del viejo TELNET.
Programas para PC emuladores de los distintos modelos de
terminales existen muchos.
Debéis usar aquel que más os guste y que mejor sepáis
configurar. Aquí se os dan tres ejemplos que os pueden servir
de guía para configurar cualquier otro programa, aunque os
recomiendamos que uséis el primero, pues usa SSH en lugar de
TELNET.
- PuTTY (SSH) [Recomendado]
- Programa TELNET por defecto de
Windows NT 4.x y sucesivos
- Wyse Term (Algunas aulas
de informática)
No se atenderán dudas relativas a la
presentación, falta de caracteres en español,
descolocación de
las pantallas del editor de quienes utilicen programas emuladores
distintos o no los
configuren del modo antedicho. Trabajar con
una mala configuración entorpece la
programación.
Si usáis Linux, no necesitáis
ningún
programa externo. Os basta con abrir un terminal y poner:
ssh -l vuestro_login_de_encina encina.fis.usal.es
La huella digital que os debe poner la primera vez que os
conectéis es:
4D:FE:15:17:09:18:41:30:2E:0A:E4:38:73:42:45:29
Verificar esta huella sirve para evitar ataques al protocolo
de seguridad encriptado de SSH.
De trabajar en Linux, tenéis además la ventaja de que
las órdenes que veamos las podéis probar en el servidor
o en el propio Linux, que también es UNIX. Además,
para trabajar en casa, lo mejor es que os instaléis un Linux
del mismo tipo que hay en las aulas (Ubuntu).
Encina usa la codificación iso8859-1 para tratar con los
caracteres propios del español (ñ, acentos, aperturas de
interrogación y exclamación, etc.). Vuestro Linux, sin
embargo, usa UTF-8, que es mejor, como ya se vio en Computadores I.
Para que podáis ver bien
estos caracteres en el terminal de Linux, cambiad
la codificación en el menú de "Preferencias",
"Codificación",
"Europeo occidental (iso8859-1)"
Conexión con el servidor.
El servidor que usaremos para hacer las prácticas se llama
en Internet
encina.usal.es
.
En el programa emulador que uséis, o en el propio ssh,
debéis indicar el nombre del servidor, como se indicó
en el apartado anterior, para conectaros.
Teclead en el sitio apropiado encina.usal.es
. Si no
lograrais conexión, probad con la dirección IP de encina,
pues
puede que no funcione el servidor de nombres de la universidad.
Teclead en ese caso: 212.128.144.28
.
Os tiene que aparecer una pantalla parecida a esta:
###### # # #### # # # ##
# ## # # # # ## # # #
##### # # # # # # # # # #
# # # # # # # # # ######
# # ## # # # # ## # #
###### # # #### # # # # #
######## UNIVERSIDAD DE SALAMANCA ########
Departamento de Informática y Automática
Facultad de Ciencias
"Este ordenador sólo puede ser utilizado por personas debidamente autorizadas"
login:
Teclead ahora vuestro login, intro, y contraseña.
En el caso de que estéis usando el programa TELNET de
Windows, aumentad el tamaño de
la ventana de modo que no queden barras de desplazamiento ni
horizontales ni verticales en la ventana del terminal.
¿Quién soy? ¿Dónde estoy?
Una vez os habéis conectado correctamente al servidor,
encina os va a recibir con un mensaje parecido a este:
Last login: Sun Aug 14 20:29:20 2011 from avellano.fis.us
Sun Microsystems Inc. SunOS 5.10 Generic January 2005
<gyermo@ENCINA>/usuarios/profes/gyermo$
En la primera línea os dice cuándo fue la última
vez que os conectasteis y desde qué ordenador. En la siguiente,
el servidor se presenta y nos dice la versión del sistema
operativo que tiene instalado (SunOS 5.10
, en el
caso del ejemplo).
Acto seguido, se queda esperando a que le demos órdenes y
nos lo indica mediante el prompt o indicador. Vuestro
indicador será seguro distinto del del ejemplo. Este que
veis ha sido reconfigurado para que dé más
información: usuario, máquina y directorio donde
nos encontramos. Aprenderéis cómo hacerlo más
adelante.
Sin embargo, vosotros os encontráis como quien se despierta
en una isla desierta y no recuerda cómo llegó allí,
ni siquiera recuerda quién es. Pues se lo preguntamos al
servidor:
<gyermo@ENCINA>/usuarios/profes/gyermo$ whoami
gyermo
<gyermo@ENCINA>/usuarios/profes/gyermo$
Teclead la orden toda junta, en minúsculas y os pondrá
quiénes sois, esto es, vuestro identificador de usuario dentro
de la máquina. A continuación, el servidor se queda
esperando a que le deis más órdenes.
Si os equivocáis al teclear y aún no habéis
pulsado Intro, basta con que rectifiquéis con la tecla de
retroceso, como es costumbre. Incluso podéis usar las flechas
del cursor. Si ya habéis pulsado Intro, podéis revisar
y cambiar las órdenes anteriores con las flechas de arriba y
abajo.
Los usuarios de UNIX se agrupan en grupos para poder organizarse
mejor. Preguntemos cuál es nuestro grupo:
<gyermo@ENCINA>/usuarios/profes/gyermo$ groups
profes
Cada usuario, y cada grupo, tiene un número identificador
propio, algo asó como su DNI:
<gyermo@ENCINA>/usuarios/profes/gyermo$ id
uid=108(gyermo) gid=101(profes)
Vemos que el identificador del usuario gyermo
en
esta máquina es el 108 y el del grupo profes
es el 101.
Una vez hemos resuelto la importante cuestión de quiénes
somos (a qué hemos venido no hace falta responderla: es
evidente...), pasemos a ver dónde estamos:
<gyermo@ENCINA>/usuarios/profes/gyermo$ hostname
encina
Aunque para este viaje es evidente que no necesitamos estas alforjas.
Hace tiempo que sabemos que estamos en encina. Pero, dentro de
encina, que es muy grande, ¿dónde nos encontramos?
<gyermo@ENCINA>/usuarios/profes/gyermo$ pwd
/usuarios/profes/gyermo
pwd
significa print working directory.
No es nuevo para vosotros que el ordenador organiza sus ficheros
en una estructura de carpetas (directorios), unas dentro de otras,
formando lo que se denomina el sistema de ficheros.
Una ruta (o path) nos permite localizar un fichero o
directorio concreto dentro del sistema se ficheros. Así,
la ruta /usuarios/profes/gyermo
nos dice que nos
encontramos en una carpeta (o directorio) llamada gyermo
que se encuentra dentro de otra llamada profes
, dentro
de otra llamada usuarios
, dentro de la carpeta principal
o directorio raíz.
En UNIX no existen las letras de las unidades, por lo que las
rutas no las contienen. El directorio de trabajo es aquel directorio
(o carpeta) en el que estamos situados en este momento.
Existe dos tipos de rutas:
- Absolutas: comienzan con el símbolo
"
/
"
y localizan el fichero o directorio a partir
del directorio raíz.
- Relativas: no comienzan con el símbolo
"
/
" y localizani
el fichero o directorio a
partir del directorio de trabajo actual.
La orden pwd
nos ha dado una ruta absoluta. Existen
dos abreviaturas que pueden incluirse como si fueran un directorio
dentro de una ruta. Son:
- . (punto): equivale al directorio actual
- .. (dos puntos seguidos): equivale al directorio
padre del directorio actual,
esto es, al directorio que lo contiene
¿Quién está conmigo?
Para saber si hay alguien más trabajando en el servidor,
usamos la orden who
:
<gyermo@ENCINA>/usuarios/profes/gyermo$ who
gyermo pts/1 ago 16 17:36 (mirto.fis.usal.es)
Siendo agosto, la hora de los toros, en plena canícula,
es normal que el servidor esté más solo que la una.
En clase, podréis observar la lista de las personas que
se encuentran en esos momentos conectados y el nombre del ordenador
desde dónde se conectan. Pero existe otra orden que nos
da algo más de información para satisfacer esa
vocación de periodista del corazón que todos tenemos
dentro:
<gyermo@ENCINA>/usuarios/profes/gyermo$ finger
Login Name TTY Idle When Where
gyermo ??? pts/1 4 Tue 17:36 mirto.fis.usal.es
La orden finger
nos da el nombre de usuario, el nombre
real, el identificador del terminal, el tiempo en minutos que lleva
inactivo
el usuario, cuándo se conectó y desde dónde.
Además, si añadimos un nombre, nos dará
información acerca de las cuentas que coincidan con
ese nombre:
<gyermo@ENCINA>/usuarios/profes/gyermo$ finger lalonso
Login name: lalonso In real life: Director Depto
Directory: /usuarios/profes/lalonso Shell: /bin/ksh
Last login Wed Feb 10, 2010 on pts/5 from lilo3.fis.usal.
No unread mail
No Plan.
Una vez conocemos quién está con nosotros en el
servidor, podemos intentar comunicarnos con él. Nosotros
os recomendamos que vayáis donde se encuentre y habléis
en vivo y en directo.
Es un protocolo maduro, más depurado e interactivo. Pero,
en su defecto,
disponéis de la orden write
. Es complicado poner
un ejemplo de esto estando solo. Hablaremos solos en este ejemplo,
aunque dicen que
es síntoma de locura. Vosotros no os arriesguéis y
probadlo con un compañero de clase. En el ejemplo, nos
vamos a conectar desde
otra ventana otra vez con el servidor. Desde la ventana de la
primera conexión,
podemos ver que ahora estamos dos, dos yoes, vamos:
<gyermo@ENCINA>/usuarios/profes/gyermo$ who
gyermo pts/1 ago 16 17:36 (mirto.fis.usal.es)
gyermo pts/2 ago 16 18:36 (mirto.fis.usal.es)
Nos escribimos a nuestro otro yo (el situado en el terminal
pts/2
en el ejemplo):
<gyermo@ENCINA>/usuarios/profes/gyermo$ write gyermo pts/2
Hola...
COmo andamos?
<CTRL-D>
En vuestro caso no hace falta que pongáis el terminal de la
persona a la que queráis mandar el mensaje. El mensaje puede
tener todas las líneas que queráis. Para que el ordenador
sepa que habéis acabado, pulsad al inicio de la línea
las teclas CTRL
y D
. Esto es lo que
recibió mi otro yo:
Message from gyermo on encina (pts/1) [ mar ago 16 18:49:54 ] ...
Hola...
COmo andamos?
<EOT>
Este mensaje aparece de golpe en el terminal de la otra persona,
por lo que, a veces, puede resultar molesto. Le podemos decir al
servidor que no queremos que nos molesten con mensajes, mediante
la orden mesg n
. Si, más tarde, deseamos
volver a permitirlos, teclearemos mesg y
.
Existe otra orden que permite a dos usuario escribirse interactivamente
(al modo del un chat). Se llama talk
, pero no suele
estar activada por defecto en los servidores de hoy en día.
¿Qué puedo hacer?
Hay infinidad de órdenes que podemos pedir al sistema que
ejecute. Vamos a centrarnos en una para ir sintiendo el modo en que
se trabaja en una máquina UNIX. La orden elegida es de las
más usadas: ls
. Adelante con ella:
<gyermo@ENCINA>/usuarios/profes/gyermo$ ls
backup PRIVADO
bin public_html
chgrp.2 SESION3
gyermo-encina-2005-03.tar.gz SESION6
mail TEMP
MANTEJO
La orden ls
muestra el contenido (ficheros y directorios)
del directorio de trabajo. Esta cuenta es más bien viejuna,
por lo que tiene bastantes ficheros y directorios. Vuestra cuenta
seguro que no es tan interesante. De hecho, si en vuestro directorio
no hay nada, ls
, como es costumbre en UNIX, no
imprimirá nada. Si todo va bien, no se avisa de ningún
modo al usuario. Algunas diferencias entre el tratamiento de ficheros
en UNIX y Windows (algunas ya comentadas) son las siguientes:
- El separador en las rutas es "/" en UNIX y
"\" en Windows
- UNIX sí que distingue entre mayúsculas y
minúsculas en el nombre de directorios y ficheros
- Si el nombre de un fichero o directorio empieza por
"." (un punto), el fichero o directorio es
oculto y no aparecerá en los listados hechos
con
ls
por defecto
Los ficheros ocultos existen solo para organizarnos mejor. De hecho,
es muy fácil verlos. Lo hacemos con ls -a
:
<gyermo@ENCINA>/usuarios/profes/gyermo$ ls -a
. .ssh
.. .sunw
.bash_history .Xauthority
.cshrc backup
.gconf bin
.gconfd chgrp.2
.gnome gyermo-encina-2005-03.tar.gz
.gnome2 mail
.gnome2_private MANTEJO
.login PRIVADO
.mozilla public_html
.pinerc SESION3
.profile SESION6
.recently-used TEMP
.sh_history
Seguro que ahora sí que os sale algún fichero...
El hecho de añadir opciones, como en este caso -a
,
a las órdenes de UNIX, es muy típico. Estas opciones
hacen que el comportamiento de la orden varíe un poco.
Podemos pedir a ls
que nos muestre un fichero o directorio
concreto. Si es un fichero, lo muestra tal cual:
<gyermo@ENCINA>/usuarios/profes/gyermo$ ls chgrp.2
chgrp.2
Si es un directorio, nos muestra su contenido:
<gyermo@ENCINA>/usuarios/profes/gyermo$ ls bin
Arbol borrarIPCs make matarIPCs tocar
Arbol_dominO c89 mantejo policia
Y si es algo desconocido, se produce un error:
<gyermo@ENCINA>/usuarios/profes/gyermo$ ls VillaRatOn
VillaRatOn: No such file or directory
Las rutas que se indican pueden ser absolutas o relativas.
Movámonos un poco. Para movernos (cambiar el directorio
de trabajo), se usa la orden cd
, que son las siglas
de change directory:
<gyermo@ENCINA>/usuarios/profes/gyermo$ pwd
/usuarios/profes/gyermo
<gyermo@ENCINA>/usuarios/profes/gyermo$ cd ..
<gyermo@ENCINA>/usuarios/profes$ pwd
/usuarios/profes
Nos hemos movido al directorio padre del directorio de conexión
con los dos puntos (..
). Podríamos haber conseguido
el mismo efecto con cd /usuarios/profes
Curioseemos... ¿qué más profes habrá?
<gyermo@ENCINA>/usuarios/profes$ ls
abg enrique gyermo lalonso mara roberto susana
adeluis evacc inavia lancho mjpm rodrigo
angelica figue jcotobal luis nines sergio
Vosotros, en vuestra cuenta, veréis qué otros alumnos
hay (al menos, sus directorios de conexión). Si nos perdemos,
podemos volver a nuestro directorio de conexión (a
nuestra casa), simplemente tecleando cd
:
<gyermo@ENCINA>/usuarios/profes$ cd
<gyermo@ENCINA>/usuarios/profes/gyermo$
Probad a crear un directorio nuevo en vuestra cuenta. La orden es
mkdir
:
<gyermo@ENCINA>/usuarios/profes/gyermo$ mkdir PRUEBA
<gyermo@ENCINA>/usuarios/profes/gyermo$ ls
backup PRIVADO
bin PRUEBA
chgrp.2 public_html
gyermo-encina-2005-03.tar.gz SESION3
mail SESION6
MANTEJO TEMP
<gyermo@ENCINA>/usuarios/profes/gyermo$ cd PRUEBA
<gyermo@ENCINA>/usuarios/profes/gyermo/PRUEBA$ ls
<gyermo@ENCINA>/usuarios/profes/gyermo/PRUEBA$ cd ..
Si no os gusta cómo os ha quedado, lo borráis con
rmdir
, pero recordad que debe estar completamente
vacío, incluso de ficheros ocultos:
<gyermo@ENCINA>/usuarios/profes/gyermo$ rmdir PRUEBA
<gyermo@ENCINA>/usuarios/profes/gyermo$ ls
backup PRIVADO
bin public_html
chgrp.2 SESION3
gyermo-encina-2005-03.tar.gz SESION6
mail TEMP
MANTEJO
Ejercicio
Desde vuestro directorio de conexión, tratad de moveros
a los siguientes directorios, adivinad a dónde habéis
llegado y comprobadlo con pwd
:
/usr/bin
usr/bin
..
/usr/./bin
/usr/.bin
./.././..
/./.././..
¿Qué hay de lo mío?
Si se os pasa por la cabeza intentar curiosear en los ficheros
de otro usuario, la cosa no es tan fácil. Veamos el
directorio de conexión del usuario p1777000.
finger
nos viene al pelo:
<gyermo@ENCINA>/usuarios/profes/gyermo$ finger p1777000
Login name: p1777000 In real life: GYERMO GONZALEZ TALAVAN
Directory: /home/p1777000 Shell: /bin/bash
Last login Mon May 24, 2010 on pts/1 from tejo.fis.usal.e
No unread mail
No Plan.
Su directorio de conexión aparece a continuación de
la etiqueta Directory
: /home/p1777000
.
Vamos a intentar entrar en él:
<gyermo@ENCINA>/usuarios/profes/gyermo$ cd /home/p1777000
ksh: /home/p1777000: permission denied
Nuestro gozo en un pozo. Nos dice el servidor que no tenemos
permisos. En un servidor UNIX, los dueños de ficheros
y directorios deciden quiénes pueden hacer qué
cosas con ellos. Podemos ver los permisos que tiene un fichero
o directorio con la opción -l
de la orden
ls
:
<gyermo@ENCINA>/usuarios/profes/gyermo$ ls -l /home/p1777000
/home/p1777000: Permission denied
total 8
¡Ups! No nos da permiso porque ls
, al ser un
directorio, trata de ver lo que hay dentro y no tenemos permisos.
Debemos pedirle que nos dé la información del
propio directorio y no de su contenido. Lo logramos con la
opción -d
:
<gyermo@ENCINA>/usuarios/profes/gyermo$ ls -ld /home/p1777000
drwx------ 24 p1777000 usuarios 4096 feb 24 2010 /home/p1777000
ls
nos da mucha información del
fichero/directorio:
- El primer carácter nos dice qué tipo de
objeto es. "
d
" significa que es un
directorio, "-
", que es un fichero.
Y hay más tipos, que iréis aprendiendo.
- Los nueve siguientes caracteres nos muestra los permisos
que tiene el objeto. Se dividen en tres partes, de tres
caracteres cada una:
- Los tres primeros son los permisos que tiene el
dueño del fichero
- Los tres siguientes muestran los permisos que tiene
el grupo al que pertenece el fichero
- Los tres últimos son los permisos que tienen
el resto de usuarios
Cada una de las tres letras, indican un tipo de permiso.
Un guion (-
) quiere decir que no se tiene
permiso. El significado de las letras depende del tipo
de objeto. Para los ficheros:
r
: permiso para leer el fichero
(read)
w
: permiso para escribir en el fichero
(write)
x
: permiso para ejecutar el fichero
(execute)
Sin embargo, si se trata de un directorio, el significado es:
r
: permiso para ver qué ficheros
hay dentro del directorio
w
: permiso para borrar o renombrar o mover
los ficheros que hay dentro del
directorio
x
: permiso para moverse al directorio con
la orden cd
que hemos
visto
Por consiguiente, vemos que el usuario p1777000
es un tanto tacaño. Se deja a sí mismo hacer
todo (rwx
), a los miembros del grupo
usuarios
no hacer nada (---
) y
a los demás, un tanto de lo mismo (---
).
- El significado del siguiente número (24), lo veremos
más adelante
- A continuación, viene el nombre del propietario del
fichero (p1777000)
- Después, el grupo al que pertenece el fichero
(usuarios)
- El número que viene a continuación, es el
tamaño en bytes que tiene el fichero o directorio
- Acto seguido aparece la fecha en que se modificó el
contenido del fichero o directorio
- Finalmente, el nombre del fichero o directorio
Está claro el porqué no podíamos acceder a
él. Solamente si el dueño nos da permiso, podremos
acceder. ¿Cómo se puede hacer esto? Veamos una
orden relacionada con la propiedad en UNIX.
Vamos a crear un directorio de prueba y vamos a cambiarle sus permisos.
Primero lo creamos y vemos qué permisos tiene:
<gyermo@ENCINA>/usuarios/profes/gyermo$ cd
<gyermo@ENCINA>/usuarios/profes/gyermo$ mkdir PRUEBA
<gyermo@ENCINA>/usuarios/profes/gyermo$ ls -ld PRUEBA
drwxr-xr-x 2 gyermo profes 512 ago 18 02:24 PRUEBA
<gyermo@ENCINA>/usuarios/profes/gyermo$
Vemos que, si no hacemos nada, tenemos todos los permisos en
nuestro nuevo directorio. Tanto los usuarios de nuestro grupo
como los demás pueden acceder y ver el contenido del
directorio, pero no borrar ni renombrar sus ficheros.
Para cambiar los permisos del fichero se usa la orden
chmod
. En su primer parámetro pondremos
(codificados) los permisos que queremos que tenga el fichero
y el segundo parámetro es el nombre del fichero o
directorio. El código es muy fácil. Consta
de tres cifras, una para cada grupo de permisos (dueño,
grupo y demás). Las cifras se calculan mediante una
suma:
- Partimos de cero
- Sumamos cuatro, si queremos dar el permiso
r
- Sumamos dos, si queremos dar el permiso
w
- Finalmente, sumamos uno, si queremos dar
el permiso
x
Cambiemos los permisos de nuestro flamante directorio PRUEBA.
Como somos muy generosos, nos vamos a quitar todos los permisos,
vamos a dejar los permisos que tiene el grupo y vamos a dar
todos los permisos a los demás. Siguiendo el procedimiento
indicado más arriba, la primera cifra es 0 (ningún
permiso), la segunda es 5 (permisos r
y x
)
y la tercera es 7 (todos los permisos). Hagámoslo:
<gyermo@ENCINA>/usuarios/profes/gyermo$ chmod 057 PRUEBA
>gyermo@ENCINA>/usuarios/profes/gyermo$ ls -ld PRUEBA
d---r-xrwx 2 gyermo profes 512 ago 18 02:24 PRUEBA
Vamos a intentar ahora entrar en *nuestro* directorio:
<gyermo@ENCINA>/usuarios/profes/gyermo$ cd PRUEBA
ksh: PRUEBA: permission denied
Tener un directorio así es como tener un tío en
América. Mejor lo borramos.
En realidad, si somos algo más técnicos deberíamos
decir que los permisos son un campo de bits que, cuando se expresa en
octal (base 8), hace que la última cifra trate de los permisos
de los otros, la penúltima de los permisos del grupo y la
antepenúltima de los permisos del dueño del fichero o
directorio.
Hay otra sintaxis más flexible de la misma orden
chmod
para cambiar los permisos. Si estáis
interesados, podéis consultar la documentación de la
propia orden.
Existen órdenes en UNIX para cambiar el dueño
(regalar) un fichero (chown
) y el grupo
al que pertenece un fichero (chgrp
), pero están
restringidas por configuración en el servidor.
Existe tradicionalmente un usuario de UNIX, cuyo nombre es
root, que puede hacer de todo. En el servidor puede
también cambiar usuarios y grupos y puede saltarse todos
los permisos que tengan los ficheros y directorios. El nombre
de root proviene de que su directorio de conexión es
tradicionalmente el directorio raíz (/
).
Cuando seais mayores, llegaréis a ser root.
El mecanismos de permisos de UNIX muchas veces se queda corto.
Por ejemplo, podríais querer dejar entrar y ver los ficheros
de vuestro directorio de conexión a vuestra pareja de
prácticas. En la configuración clásica
de UNIX no podéis.
El que esté interesado en mayor flexibilidad en la
cesión de permisos, debe consultar las
listas de control de acceso (ACL), aunque no es un
mecanismo igualmente estandarizado en todos los tipos de UNIX.
Ejercicio
Pedid a un compañero, mediante write
, que os
cree y os deje acceder a un directorio dentro de su directorio de
conexión. Entrad en él. Mandad un mensaje de que
habéis entrado para que el usuario original deje todo como
estaba antes.
Configuración de la cuenta en el servidor.
Hay ocasiones en que desearéis no tener que dar siempre
las mismas órdenes según os conectáis para dejar
vuestra cuenta (que es como vuestra casa en el servidor) a vuestro
gusto. Los ficheros de configuración vienen en vuestra
ayuda. Existen varios, pero con que modifiquéis o creéis
uno de ellos os bastará. Elegimos un fichero oculto, que se
debe situar en vuestro directorio de conexión, que se llama
.bash_profile
. Dicho fichero es de tipo "script" y
se ejecutará cada vez que os conectéis al servidor.
Para poder hacer esto, necesitáis editar un fichero de texto especial y,
para ello, debéis elegir el método de edición de ficheros que mejor se
adapte a vuestro carácter. Aquí tenéis
cuatro posibilidades.
Así que, por el método de los anteriores que os resulte
más atractivo, debéis editar el fichero (pudiera ser
que incluso exista) y añadir las líneas siguientes
o modificar las que existan, si es que el fichero lo teníais
ya,
dependiendo de si queréis o no la posibilidad que os da.
Tened cuidado porque sólo tenéis que
copiar lo que aparece señalado en azul, no los signos de
puntuación que aparecen a continuación:
PATH=/usuarios/profes/gyermo/bin:$PATH:.
:
añade a
los directorios de búsqueda de ejecutables (PATH) los
directorios /home/gyermo/bin
y el
directorio de trabajo. Colocadlo inmediatamente
después de la última modificación de la variable
PATH
.
export PS1='<\h>$PWD$ '
:
para que aparezca el nombre del directorio de trabajo en la
línea de órdenes.
export TERM=vt100
:
para que encina trabaje con un terminal sencillo compatible.
export LANG=es_ES.UTF-8
export LC_CTYPE=es_ES.UTF-8
export LC_NUMERIC=es_ES.UTF-8
export LC_TIME=es_ES.UTF-8
export LC_COLLATE=es_ES.UTF-8
export LC_MONETARY=es_ES.UTF-8
export LC_MESSAGES=es_ES.UTF-8
:
para que el servidor use la codificación UTF8 de modo que
case con la configuración por defecto del terminal de
Linux de clase.
alias vi=vim
: para
que usemos el editor vim
al teclear
vi
, que es más fácil, como hemos visto.
echo Bienvenido a mi cuenta.
:
o cualquier otro mensaje de bienvenida que queráis.
Probad si os funciona la tecla de borrado. Si no es así, volved
a editar el fichero .profile
. Añadid una línea que
diga: stty erase
<CTRL+V><TECLA_DE_RETROCESO>
.
Debéis pulsar primero las teclas "Control" y "V" y,
a continuación, pulsar la tecla de retroceso.
Comprobad que las modificaciones que habéis hecho funcionan
desconectándoos y volviéndoos a conectar para que se ejecute el
fichero .bash_profile
. También podéis, alternativamente,
teclear exec login
.
¿Quién me puede ayudar?
Son tantas las órdenes de UNIX y tantas sus opciones que
es improbable que nadie las controle todas. ¿Cómo
puedo pedir ayuda al sistema? Existe una orden que nos ofrece
documentación acerca de cualquier otra orden. Se llama
man
. Para asustarnos un poco, veamos el inicio de
la página de manual de ls
:
<gyermo@ENCINA>/usuarios/profes/gyermo$ man ls
Reformatting page. Please Wait... done
User Commands ls(1)
NAME
ls - list contents of directory
SYNOPSIS
/usr/bin/ls [-aAbcCdeEfFghHilLmnopqrRstuvVx1@] [file]...
/usr/xpg4/bin/ls [-aAbcCdeEfFghHilLmnopqrRstuvVx1@]
[file]...
/usr/xpg6/bin/ls [-aAbcCdeEfFghHilLmnopqrRstuvVx1@]
[file]...
DESCRIPTION
For each file that is a directory, ls lists the contents of
the directory. For each file that is an ordinary file, ls
repeats its name and any other information requested. The
output is sorted alphabetically by default. When no argument
is given, the current directory (.) is listed. When several
arguments are given, the arguments are first sorted
appropriately, but file arguments appear before directories
--More--(2%)
Podéis contar hasta 31 opciones. Las páginas de
manual de UNIX tienen fama de ser muy completas. Están
organizadas en secciones, de las cuales, la primera es la
que nos interesa. En ella se encuentras las órdenes
que vamos a ver.
A veces, el problema es que no recordamos cómo se llama
la orden que hacía según qué cosa.
Una opción de man
, -k
, acude
en nuestra ayuda. Veamos un ejemplo en un Linux.
No nos acordamos de la orden que se usa para cambiar el propietario
de un fichero:
gyermo@saturno\:~$ man -k owner
chgrp (1) - change group ownership
chown (1) - change file owner and group
chown (2) - change ownership of a file
chown32 (2) - change ownership of a file
dpkg-statoverride (8) - override ownership and mode of files
faked (1) - daemon that remembers fake ownership/permissions of files manipul...
faked-sysv (1) - daemon that remembers fake ownership/permissions of files manipul...
faked-tcp (1) - daemon that remembers fake ownership/permissions of files manipul...
fchown (2) - change ownership of a file
fchown32 (2) - change ownership of a file
fchownat (2) - change ownership of a file relative to a directory file descriptor
lchown (2) - change ownership of a file
lchown32 (2) - change ownership of a file
lspgpot (1) - extracts the ownertrust values from PGP keyrings and list them in...
ownership (8) - Compaq ownership tag retriever
XGetSelectionOwner (3) - manipulate window selection
XSetSelectionOwner (3) - manipulate window selection
XtDisownSelection (3) - set selection owner
XtOwnSelection (3) - set selection owner
XtOwnSelectionIncremental (3) - set selection owner
Ahí aparece la orden que buscamos, en la sección 1
del manual: chown
. Se puede limitar la sección de
manual donde se busque. Para más detalles, consultad
la página de manual de la propia orden man
.
Ejercicio
Cread un directorio. Con ls
, mirad la fecha y hora
en que lo habéis creado y anotadla. Esperad un minuto y
entrad en el directorio. Cread otro directorio dentro de él.
Salid afuera y mirad la fecha que aparece ahora. Será la
fecha actual, pues habéis modificado el directorio al
crear otro dentro de él y ls
nos da la fecha
de la última modificación.
Consultad ahora la página de manual de ls
hasta
encontrar una opción que os permita volver a ver la fecha
en que se creó el directorio, no la fecha de su última
modificación.
¿Pero es que nadie habla mi idioma?
El origen y el desarrollo fundamental de la informática
se encuentra en EE.UU. Es por ello que la lengua franca en
informática es actualmente el inglés. Cualquier
trabajo serio se debe realizar en ese idioma. Sin embargo, los
usuarios de la informática no tienen por qué conocer
la lengua de Shakespeare. UNIX usa para ello la configuración
regional o internacionalización, más conocida como
locales. El locale
especifica, entre otras cosas, el idioma que prefiere el usuario,
cómo dar formato a las fechas, la moneda preferida,
la codificación de los caracteres, etc.
Para ver los locales de que dispone nuestro servidor, disponemos
de la orden locale -a
:
<gyermo@ENCINA>/usuarios/profes/gyermo$ locale -a
C
POSIX
[...]
es
es.ISO8859-15
es.UTF-8
es_ES
es_ES.ISO8859-1
es_ES.ISO8859-15
es_ES.ISO8859-15@euro
es_ES.UTF-8
es_ES.UTF-8@euro
iso_8859_1
[...]
Para ver la configuración que tenéis actualmente,
se usa la orden locale
sin más:
<gyermo@ENCINA>/usuarios/profes/gyermo$ locale
LANG=es_ES.ISO8859-1
LC_CTYPE=es_ES.ISO8859-1
LC_NUMERIC=es_ES.ISO8859-1
LC_TIME="es_ES.ISO8859-1"
LC_COLLATE=es_ES.ISO8859-1
LC_MONETARY=es_ES.ISO8859-1
LC_MESSAGES=es
LC_ALL=
No basta con tener la configuración establecida a un locale
específico. Es necesario que los programas o paquetes
usados estén cargados o tengan la posibilidad de
internacionalización. Así, en el servidor,
aunque por defecto vuesto locale es el correspondiente al
español de España con un juego de caracteres
ISO-8859-1, las respuestas del servidor y las páginas de
manual son en inglés.
Veamos la salida de la página de manual de la orden
ls
en un Linux configurado con un locale chino y
con los paquetes necesarios instalados:
Basta ya por hoy, ¿no?
Esta sesión de trabajo ha sido extensa, aunque no muy
difícil y ya toca a su fin. Es muy conveniente que, si no
os ha dado tiempo en clase, la completéis en casa, salvo,
como siempre, los apartados de color sepia, que son opcionales.
Para salir del servidor, debéis hacerlo ordenadamente.
Teclead para ello la orden exit
.
Y esto, ¿lo puedo trabajar en casa?
Como mejor se aprende a manejar con soltura la interfaz de texto
de UNIX es con la práctica. Es muy recomendable que os
instaléis una versión de Linux en vuestro ordenador.
Tratad de que coincida en el tipo con la que tenéis en
clase, para facilitaros el manejo. Elegid, pues, una versión
de Ubuntu (http://www.ubuntu.com/).
Una vez la tengáis instalada, podéis practicar
abriendo una sesión de terminal. Las órdenes
del servidor y las de vuestro Linux serán muy similares,
si no prácticamente iguales. Podéis incluso
establecer vuestro locale al español y tener las
páginas de manual en la lengua de Cervantes.
Esta distribución de Linux funciona mediante paquetes
de programas que podéis instalar sin más que tener
conexión a internet. Desde vuestro terminal, para instalar
el paquete de páginas de manual en español, no
tenéis más que teclear:
fulano@miordenador\:~$ sudo apt-get install manpages-es
Metéis vuestra contraseña, esperáis a que
se descarguen e instalen y... ya está.
Podéis descargaros de este modo toda una serie de paquetes:
editores de texto, compiladores, juegos, navegadores, ... Todo ello
gratis y legalmente. Linux (nombre cariñoso con el que
conocemos al sistema GNU/Linux) y las aplicaciones que se distribuyen
con él es software libre. Esto significa que
estos programas han sido desarrollados de un modo altruista por
personas conectadas a través de Internet y ofrecidos a los
demás.
Órdenes de la shell vistas.
whoami
- muestra el nombre del usuario
groups
- imprime los grupos a los que pertenece el usuario
id
- muestra los identificadores del usuario y del grupo
hostname
- da el nombre del servidor
pwd
- imprime el directorio de trabajo
who
- muestra los usuarios que se encuentran conectados
finger
- da información acerca del usuario
write
- permite enviar mensajes a otro usuario
mesg
- visualiza o permite cambiar el estado de recepción de
los mensajes
talk
- chat interactivo entre dos usuarios
ls
- muestra el contenido de un directorio
cd
- cambia el directorio de trabajo
mkdir
- crea un nuevo directorio
rmdir
- borra un directorio, que debe estar vacío
chmod
- cambia los permisos de un fichero o directorio
chown
- cambia el propietario de un fichero o directorio
chgrp
- cambia el grupo al que pertenece el fichero
man
- muestra la página de manual de una orden
locale
- imprime los locales disponibles
o la configuración actual
exit
- nos desconecta del servidor
Funciones de biblioteca relacionadas.
-
-
LPEs.
- El terminal se desorganiza, ¿qué puedo hacer?
Solución.
- No está la orden
whoami
en el servidor.
Solución: En realidad sí que
está. Lo que ocurre es que el ordenador no
la encuentra. Ayudadle poniendo la ruta completa
de la orden: /usr/ucb/whoami
. En las
siguientes sesiones aprenderéis cómo
decirle
al ordenador que, cuando le deis órdenes,
también las busque en ese directorio.