jueves, 2 de septiembre de 2010

Curso Básico de Unix (VI)

Hoy vamos a abordar la gestión y manejo de ficheros, y para ello vamos a ir mas a la parte practica, aunque seguimos necesitando la teoría. ¡Como no!

Ya hemos visto como se obtiene un listado con los ficheros de una carpeta, y hemos visto como hacer que además nos de información detallada, ahora veremos que quiere decir esa información.


El primer carácter nos indica el tipo de fichero, como ya vimos en el tema anterior, así que mejor no repetirse.

Los siguientes nueve caracteres, son los permisos. Los primeros tres son los del usuario, los siguientes tres los del grupo y los tres últimos los del resto de usuarios. Los premisos pueden ser, es este orden “r” para lectura, “w” para escritura y “x” para ejecución o acceso. Si está, significa que se tiene ese permiso, y si en su lugar tiene un “–“ significa que carece de ese permiso.

El siguiente número, indica cuantos enlaces tiene el fichero. Dicho de otro modo, nos indica si este fichero tiene otros nombres. Hay que destacar, que un único fichero puede tener varios nombres en el mismo o en distinto path, sin ocupar mas espacio en disco por ello.

Después se muestra el dueño del fichero.

Luego se muestra a que grupo pertenece el fichero

La siguiente cifra indica el tamaño del fichero

También disponemos de la fecha de la última modificación del fichero.

Y como final, tenemos el nombre del fichero. Recuerda, se distinguen mayúsculas y minúsculas.

Y empieza la práctica. Vamos a suponer que queremos cambiar los permisos de un fichero, para que otros puedan leerlo, para hacerlo ejecutable, para que otros no puedan borrarlo…

Vamos a utilizar el comando chmod, indicar  que permisos vamos a cambiar y a quien se los damos o quitamos. Así podemos referirnos al usuario con “u”, al grupo con “g”, al resto con “o” y a todos con “a”. Usamos “+” para añadir un permiso y “-“ para quitarlo, y los permisos, son los ya citados “r”, “w” y “x”. Vamos con unos ejemplos.


chmod u+x fichero  Se aplica al propietario, para dar un permiso, de ejecución a fichero.
chmod g-w fichero Se aplica al grupo, para quitar un permiso de escritura de fichero.
chmod a+r fichero Se aplica a todos, para dar permiso de lectura de fichero

El comando chmod también puede asignar todos los permisos de una vez para usuario, grupo y resto. Para ello, se le da 4 al permiso  “r”, 2 al permiso “w” , 1 al permiso “x” y 0 a los permisos que no se dan. Sumamos el valor de los permisos que queremos dar al usuario, y nos da un número. Hacemos lo mismo con los del grupo y luego con los del resto. Y ahora que tenemos estos tres números, solo tenemos que poner “chmod nºnºnº” y habremos asignado los permisos que queramos.

Un ejemplo para aclarar. Queremos que el usuario tenga permiso de lectura y escritura, el grupo solo de lectura y el resto, ninguno. Para el usuario, sumamos 4 de lectura y 2 de escritura, obtenemos 6. Para el grupo solo tenemos el cuatro de lectura, y para el resto, cero porque no queremos dar derechos. Con ello tenemos chmod 640 fichero, el comando que nos asignara todos los permisos de una vez.



Ahora vamos a oxigenarnos un poquito, con un comando bastante más sencillo. Vamos a suponer que necesitamos crear un  directorio dentro de la carpeta donde estamos, para almacenar el curso. Fácil:
mkdir nombredeldirectorioquequierocrear
Y si el directorio no esta en la carpeta donde me encuentro, puedo moverme a la carpeta donde va a estar el directorio, o escribir el path completo del directorio para crearlo sin moverme del sitio.
mkdir /home/carlos/Curso/nombredeldirectorioquequierocrear
Si lo que queremos es borrar un directorio, en lugar de mkdir, usamos rmdir. La única pega es que el directorio debe estar vacío para poder borrarlo.

rmdir directoriovacio

Bueno, supongo que ya sabes que para moverte por los directorios, lo haces con el comando “cd”.

Y ahora vamos a copiar un fichero, que también es muy fácil, y se hace con cp origen destino. Además, si en “destino” ponemos un nombre, se creara la copia con ese nombre, y si no, lo copiara con el mismo nombre que tiene en origen
cp unficheroqueestaaqui /backup/
¿Borrar un fichero? Seguro que ya has adivinado que se hace con rm nombre de fichero.
rm esteficherovaadesaparecer
Mover o renombrar un fichero tampoco tiene el mas mínimo problema, para ello empleamos el comando mv. Si especificamos un nombre de destino, nos sirve para renombrar el fichero, y si no, para mover. Y si queremos rizar el rizo, podemos incluso mover y renombrar a la vez.
mv fichero ficheroconnuevonombre
mv fichero ./otracarpeta/
mv fichero ./otracarpeta/otronombre
Ya nombramos al principio, que un fichero puede tener varios nombres. En una carpeta podemos tener varios nombres que se refieren al mismo fichero, o podemos tener los nombres en diferentes path… Y no es como un enlace directo de Windows que en realidad lo que hace es apuntar al nombre real del fichero. Aquí, hay un solo fichero, pero con varios nombres por los que le podemos llamar.

Así podemos tener un fichero en nuestra carpeta home y tenerlo también en una subcarpeta
ln fichero ./Curso/
Con ello tengo “fichero”  en la carpeta actual, y también en la carpeta “Curso”, pero solo ocupa espacio una vez.

Y como fin de fiesta, por este capítulo,  vamos a ver los permisos por defecto de los ficheros que creemos.

Cuando creamos un fichero, ya hemos dicho que se crea como fichero de texto, y sin permiso de ejecución, pero… ¿y el resto de permisos?

Pues el resto de los permisos los establece umask. Si lo ponemos sin mas en un terminal  “umask” nos indicara la mascara que se aplica por defecto al crear un archivo.


Esta mascara, restada al máximo que se puede dar por defecto a un fichero o directorio, nos da los derechos que tendrá el fichero. Tratare de aclararlo. En chmod, vimos que un fichero puede tener permiso de lectura (4) escritura (2) y ejecución (1) para el usuario, e igual para grupo y resto. Es decir, un fichero puede tener como máximo el valor 777. Como por defecto no se pueden crear ejecutables, su valor máximo por defecto es 666 para los ficheros y 777 para los directorios. Si a este 777 o 666 restamos el valor que nos dio umask, tendremos el valor que por defecto tendrá un fichero o directorio al crearlo.

Así, en este ejemplo, los ficheros se crearan por defecto con los permisos 644 ( el máximo 666 – la mascara 022) y los directorios con permisos 755 (el máximo 777 – la mascara 022). Esto lo podemos modificar cambiando el valor de la mascara poniendo umask y el valor de la mascara que queramos.

Vamos con un ejemplo:


Primero muestro la mascara y después creo un fichero y un directorio. Listo sus propiedades y vemos que efectivamente, se han creado con permisos 666 ó 777 menos la mascara.
Luego cambio la mascara por una nueva y repito la creación de archivo y directorio.
Finalmente listo las propiedades de ficheros y directorios, para que se vea que los nuevos se crean restando a 666 ó 777 el nuevo valor de la mascara.

Vamos a descansar un poquito, que por hoy ya esta bien la clase.

No hay comentarios:

Publicar un comentario

prekes sodui