Mostrando entradas con la etiqueta archivos. Mostrar todas las entradas
Mostrando entradas con la etiqueta archivos. Mostrar todas las entradas

miércoles, 16 de julio de 2014

Archivos de gestión de usuarios y grupos

Resto de entradas con intenciones didácticas en la etiqueta Aprendizaje.

A medida que vayamos adentrándonos en nuestro sistema Linux la gestión de usuarios y grupos se convertirá en un asunto capital. Antes de entrar a analizar los comandos que nos permiten crear y gestionar usuarios y grupos vamos a describir los archivos que intervienen en dichas operaciones.

/etc/skel/
Directorio donde se almacenan los archivos que se cargarán al crear un nuevo usuario.

/etc/default/useradd
Este es el fichero donde se guardan los ajustes de usuario.

/etc/logins.defs
Archivo que controla la vigencia de las contraseñas. Vamos a destacar tres variables de entorno relevantes para este aspecto:
PASS_MAX_DAYS: establece la vigencia de las contraseñas en nº de días.
PASS_MIN_DAYS: establece la vigencia mínima en nº de días de una contraseña. Si su valor es cero podremos cambiarla cuando lo queramos.
PASS:WARN_AGE: establece el nº de días a partir del cual se avisará al usuario de la caducidad de su contraseña.

Recordemos que sobre las variables de entorno hablamos aquí.

/etc/passwd
Archivo editable (como root) con la lista de usuarios del sistema. Debería tener permiso de lectura para todos pero solo de escritura para root. Veamos un ejemplo de línea de este fichero:

daemon:x1:1:daemon:/usr/sbin:/bin/sh

Desglose:

daemon: es el nombre de la cuenta.
x: es la clave encriptada.
1: es el UID (User IDentification, identificador de usuario). El UID de valor 0 pertenece al administrador. Por debajo de 100 es de sistema; por encima, de los usuarios.
1: es el GID (Group IDdentification, identificador de grupo).
daemon: es el GECOS o campo destinado a un comentario descriptivo del usuario o grupo.
/usr/bin: directorio del usuario.
/bin/sh: terminal por defecto.

Si quisiéramos crear un usuario manualmente sin recurrir a los comandos al uso, tendríamos que añadir al fichero /etc/psswd una línea similar a la que sigue:

manuel::523:100:ManuelPerezAdministrativo:/home/manuel:bin/Bash

Así, habríamos creado un usuario cuya cuenta recibe el nombre de manuel, con el UID 523, el GID 100, con ManuelPerezAdministrativo como campo GECOS o de comentarios, siendo /home/manuel su directorio de usuario y /bin/Bash su shell por defecto. No tendría contraseña, la cual había que crear con el comando passwd.

/etc/group
Archivo con la lista de grupos y los miembros de cada uno de ellos. Este sería un ejemplo de contenido:

daemon:x:1:<otro>

Desglose:

daemon: nombre del grupo; no puede repetirse y ha de tener un máximo de ocho caracteres.
x: contraseña que permite acceder a un usuario con el comando newgrp (las contraseñas ocultas se sustituyen por una x y se almacenan en el fichero /etc/gshadows).
1: GID, identificador de grupo, que debe ser único.
<otro>: aquí vendrán los nombres de los usuarios miembros del grupo.

Ejemplo de línea añadida manualmente: Compras::1020:Pablo:Silvia:Pedro:Sergio.

/etc/shadow
Archivo donde se almacenan las contraseñas de los usuarios y que solo es accesible como root. Ejemplo de contenido:

daemon:*:14889:0:99999:7:::

Desglose:

daemon: nombre de usuario.
*: contraseña.
14889: fecha de la última modificación de contraseña.
0: nº de días que tardará la contraseña en expirar.
99999: periodo de aviso en días de expiración de contraseña.
7: nº de días que trascurren desde que expira la contraseña hasta que se desactiva la cuenta.
Fecha de desactivación de la cuenta (en caso de proceder).

El campo que lleve un carácter ¡ o un asterisco * indica cuanta bloqueada. Si lleva los caracteres !! o el asterisco * es una cuenta no asignada.

/etc/gshadow
Es el archivo donde se almacenan las contraseñas para los grupos y solo es accesible para root.

Finalizamos con un par de comandos relacionados con todo lo que hemos visto:

grpconv
Sirve para crear el archivo /etc/gshadow y cambiar las contraseñas del archivo /etc/group por una x.

grpunconv
Revierte el resultado de grpconv.

En otro post hablaremos más en profundidad de la creación y gestión de usuarios y grupos. Mientras, escuchemos a este grupo progresivo noruego, Airbag, interpretando "Redemption".


jueves, 12 de junio de 2014

Esquema de sistema de directorios

Resto de entradas con intenciones didácticas en la etiqueta Aprendizaje.

Para complementar la anterior entrada les dejo con este esquema de un sistema de directorios GNU/Linux estándar, con sus archivos y subdirectorios más importantes. Algo muy útil para un vistazo rápido, sobre todo para usuarios bisoños.


sábado, 9 de noviembre de 2013

Más comandos para operar con archivos y directorios

Resto de entradas con intenciones didácticas en la etiqueta Aprendizaje.

Ya hemos hablado de como trabajar con archivos y directorios pero no es posible condensar todo el material que bajo ese título podría caber sin convertir la entrada en interminable. De tal modo, nuevamente vamos a vernos las caras con mandatos de terminal que nos ofrecen distintas prestaciones según la tarea que estemos realizando.

alias
Este comando ya fue tratado en el blog para un ejemplo concreto, pero no quiero que se quede fuera del tratamiento general que es la tónica del blog. Sirve para crear un atajo a un comando fijándole un nombre.
alias -a: elimina las definiciones de alias en el entorno de ejecución actual.
alias -p: muestra la lista de alias existente en el archivo .bashrc con el formato nombre_alias=valor.
alias instalar="sudo apt-get install":  crea un atajo para el comando sudo apt-get install llamado instalar.
alias lhost="cd /var/www/html": crea un atajo de acceso al directorio /var/www/html/ llamado lhost.
/comando_alias: tecleado de esta manera, en caso de invocar un alias cuyo nombre coincida con el de otro comando, no se tiene en cuenta dicho alias.
~/.bashrc: archivo oculto donde se incluyen los alias que deseamos que se vuelvan permanentes. 
unalias
Sirve para eliminar un alias existente.

ln
Comando para crear enlaces a archivos. Hay enlaces dos tipos de enlaces: duros y simbólicos. El enlace duro es un duplicado del archivo al que enlaza pero con otro nombre. Comparte inodo (estructura de datos que conserva cada archivo) con el original por lo que no pueden crearse en particiones o unidades distintas. El enlace simbólico funciona como un acceso directo de Windows, tenga o no el mismo nombre. Pueden crearse al margen de la unidad o partición donde se encuentren.
ln archivo1 archivo2: crea el enlace duro archivo2 a partir de archivo1.
ln -s archivo1 archivo2: crea el enlace simbólico archivo2 a partir de archivo1.
stat
Comando que muestra una serie de datos precisos acerca de un archivo o un directorio como nombre, tamaño, bloques que ocupa, tipo de archivo, inodo, enlaces, ID, GUID, propietario, grupos y fechas de acceso y modificación.

file
Comando simple que nos informa de si un objeto es un directorio o un archivo, y de qué tipo si es lo segundo.

cmp
Compara dos archivos y nos dice si son o no distintos. Nos informa en qué número de línea está la diferencia.

diff
Compara dos archivos línea a línea y nos dice las diferencias, algo que resulta más útil cuando se trata de archivos de texto.

wc
Cuenta las líneas, palabras y caracteres de un archivo.
wc -c: muestra solo el número de caracteres.
wc -w: muestra solo el número de palabras.
wc -l: muestra solo el número de líneas.
alien
Este comando no siempre viene por defecto en nuestra distribución por lo que, en tal caso, hay que instalarlo si lo queremos usar. Sirve para convertir paquetes de software de, entre otros, formato .deb (Debian), .rpm (Red Hat) y .tar.gz (Slackware).
alien -d archivo.rpm/tar.gz: para generar un paquete .deb a partir de un .rpm o un .tar.gz. (opción por defecto).
alien -t archivo.deb/rpm: para generar un paquete .tar.gz a partir de un .deb o un .rpm.
alien -r archivo.deb/tar.gz: para generar un paquete .rpm a partir de un .deb o un .tar.gz.
Nuevamente les recuerdo que solo una pequeña muestra de las opciones existentes son las mostradas aquí. Acudan a la ayuda del terminal para recabar más información.

Y como hemos hablado del comando alien, nada más apropiado que evocar el trailer original de 1979 de la mítica película de Ridley Scott.


miércoles, 10 de julio de 2013

Ver el contenido de los archivos

Resto de entradas con intenciones didácticas en la etiqueta Aprendizaje.

Lo que vamos a tratar ahora son los distintos comandos de que disponemos para visualizar el contenido de un archivo.

cat (concatenate)
Sirve para listar el contenido de un archivo. Sintaxis: cat nombre_de_archivo.
  • cat > archivo.txt : crea archivo.txt con el contenido que vayamos tecleando (Enter para saltar a siguiente línea y Ctrl + d para finalizar). Recordemos que la extensión no tiene otra finalidad que aclarar que tipo de archivo es, ya que el GNU/Linux no es necesaria, como ocurre en Windows.
  • cat archivo1 > archivo2 : crea archivo2 duplicando archivo1.
  • cat archivo1 archivo2 > archivo3 : crea archivo3 con el contenido de archivo1 y archivo2.
tac
Idéntico a cat pero comenzando por el final del archivo.

more
Lista el contenido de un archivo con pausas en caso de no entrar en pantalla en su totalidad. Especialmente indicado para archivo extensos (barra espaciadora para pasar a la siguiente pantalla).

less
Muy similar a more, lista el contenido de un archivo por páginas (barra espaciadora para pasar a la siguiente página, tecla B para volver hacia atrás).

head
Para ver las primeras líneas de un archivo.
  • head -5 archivo : visualiza las 5 (o las que el usuario quiera) primeras líneas de archivo.
tail
Para ver las últimas líneas de un archivo.
  • tail -7 archivo : visualiza las 7 últimas líneas de archivo.
  • tail +15 archivo : visualiza a partir de la línea 15 de archivo hasta el final.
touch
Comando para cambiar la fecha y la hora de un archivo.
  • touch -a : cambia la fecha y hora de acceso a la fecha actual.
  • touch -d --date=CADENA : emplea CADENA en sustitución de la fecha actual.
  • touch -m : cambia la fecha y hora de modificación a la fecha actual.
  • touch -t FECHA : utiliza FECHA en lugar de la fecha actual (en formato [[SS]AA]MMDDhhmm[ss] esto es, Siglo, Año, Mes, Día, hora, minutos, segundos).
Pero touch tiene otro uso: con él podemos crear ficheros de la nada, eso sí, sin contenido alguno.
  • touch archivo : crea archivo en caso de que no exista. Podemos crear varios archivo de una sola vez (touch archivo1 archivo2 archivo3 archivo4...).
du (disk usage)
Para ver el tamaño de un directorio y su posición en el árbol de directorios.
  • du -h : visualiza el tamaño de los directorios.
  • du -h directorio : visualiza el tamaño de directorio y de sus subdirectorios si los hubiere.
  • du -ah : visualiza el tamaño del directorio actual y de sus subdirectorios si los hubiere
  • du -ah directorio : visualiza el tamaño de los archivos y los directorios contenidos en directorio.
  • du -sh : visualiza el tamaño total del directorio actual.
  • du -sh directorio : visualiza el tamaño total de directorio.
echo
Muestra una cadena de texto dada.

paco@debian:~$ echo Hola a todos
Hola a todos
paco@debian:~$
  • echo -n : muestra una cadena de texto dada sin retorno de carro.
paco@debian:~$ echo -n Hola a todos
Hola a todospaco@debian:~$
  • echo $VARIABLE : visualiza el valor de VARIABLE (acerca de las variables hemos hablado aquí).
  • echo VARIABLE : tan solo muestra el texto VARIABLE.
>
El símbolo > vacía el contenido del archivo pero sin borrarlo. Sintaxis: > archivo.

martes, 9 de julio de 2013

Listado de archivos y directorios

Resto de entradas con intenciones didácticas en la etiqueta Aprendizaje.

Esta entrada se la vamos a dedicar a un comando que nos va a permitir visualizar tanto los directorios como los archivos que contienen. Se trata del comando ls.

ls (list)
Comando para listar archivos y directorios (equivalente al dir de MS-DOS).
  • ls -a : muestra también los archivos ocultos (cuyo nombre está precedido de un punto).
  • ls -A : omite los archivos ocultos del listado.
  • ls -B : omite los archivos de backup del listado.
  • ls --color=never : omite los colores distintivos en el listado.
  • ls --color=always : recupera los colores distintivos para el listado.
  • ls --color=auto : usa los colores distintivos solo para la salida estándar (la terminal).
Los colores por defecto para distinguir tipos de archivo (recordemos que en GNU/Linux TODO es tratado como si de un archivo se tratase) están consignados en la variable LS_COLORS. Tal vez hable de ello más adelante pero de momento basta con echar un ojo a este enlace para aclarar términos.
  • ls -l : realiza el listado aportando información detallada de cada archivo y directorio.
paco@debian:~$ ls -ltotal 64
drwxr-xr-x   2  paco  paco    4096  jul    8  13:10  Descargas
-rw-r--r--    1   paco  paco    4096  jul    8  00:39  DrgNo.she
(...)
paco@debian:~$

Seguidamente, explicamos la información que proporciona cada línea:

 - d: dignifica que Descargas es un directorio.
 - rwx: los tres primeros caracteres a continuación son los permisos de usuario del directorio Descargas.
 - r-x: después van los tres caracteres que establecen los permisos de grupo.
 - r-x: y luego van los tres caracteres que definen los permisos para otros usuarios.
 - 2: el nº de enlaces.
 - paco: es el nombre del usuario propietario del directorio Descargas (en cada ordenador saldrá un propietario distinto).
 - paco: es nombre del grupo propietario del directorio Descargas (ídem).
 - 4096: es el tamaño del directorio.
 - jul    8  13:10: fecha y hora de creación o modificación del directorio Descargas.
 - Descargas: nombre del directorio, que aparece en azul por defecto.

En la segunda línea vemos que ésta comienza con un guión. Esto es porque está describiendo un archivo en lugar de un directorio, en este caso el archivo DrgNo.she. Las líneas descriptivas de directorios comienzan con una d y las de archivos con un guión. El resto de caracteres tienen el mismo significado.

  • ls -s : muestra sin detallar el tamaño en megas de los archivos listados.
  • ls -t : muestra sin detallar los archivos de más actual a más antiguo.
  • ls -r : muestra sin detallar el resultado en orden alfabético inverso.
  • ls -m : muestra los ficheros sin detallar y separados por comas.
  • ls -x : muestra los ficheros sin detallar y en columnas ordenadas.
  • ls -R : muestra el contenido de los directorios con sus subdirectorios.
Por supuesto, las opciones de este comando son intercambiables y acumulables, como con cualquier comando en GNU/Linux. Por ejemplo:
  • ls -lr : muestra el resultado detallado en orden alfabético inverso

Hay más opciones pero aquí solo hemos tratado las más destacadas. Como siempre, conviene que cada uno experimente por su cuenta, explore las posibilidades del comando y acuda a ls --help o las páginas de man para cualquier consulta.

lunes, 8 de julio de 2013

Trabajando con archivos y directorios

Resto de entradas con intenciones didácticas en la etiqueta Aprendizaje.

Hoy veremos como manejarnos con archivos y directorios dentro de nuestro terminal Linux. Algunos de los comandos que vamos a ver recordarán a más de uno los del viejo MS-DOS, cosa que supondrá una facilidad añadida para más de uno.

pwd
Este comando sirve para saber en donde estamos posicionados en cada momento. Al teclearlo y pulsar enter nos devolverá el directorio en el que estamos ubicados, por si andamos un poco perdidos.

cp (copy)
Comando para copiar archivos. Sintaxis: cp archivo1 archivo2. Si queremos copiar un archivo desde nuestro directorio /home a otro directorio cualquiera se teclean las rutas absolutas.
Ejemplo: cp /home/paco/archivo1 /etc/archivo. Así hemos copiado archivo1 de /home/paco a /etc.

mv (move)
Este comando sirve tanto para mover archivos de sitio como para cambiarles el nombre. Para moverlos usaremos la misma sintaxis que con el comando cp y para renombrar lo haremos así: mv archivo1 archivo2. De este modo archivo1 pasa a llamarse archivo2.
  • mv -i: nos preguntará antes de sobreescribir archivo (si se da el caso).

rm (remove)
Simple y llanamente, para borrar archivos. Sintaxis: rm archivo1. Y archivo1 desaparece. opciones interesantes:
  • rm -f: borra archivos descartando lo no existente sin mostrar mensaje de error (mensaje que aparecería si quisiéramos eliminar un archivo inexistente sin emplear la opción -f).
  • rm -i: para borrar archivos preguntando antes uno por uno (el clásico ¿está ud. seguro?).
  • rm -r: elimina directorios de forma recursiva (borrando subdirectorios hasta no dejar nada).
  • rm -R: ídem.

shred
Más radical aunque más seguro que rm, ya que tras emplear este podemos recuperar lo borrado mediante herramientas específicas, pero con shred se destruye la información del archivo sin posibilidad de recuperación. Actúa sobreescribiendo el archivo las veces designadas (25 por defecto) haciéndolo ilegible al machacarlo con patrones de texto aleatorios. 
  • shred -u: también elimina el archivo.
  • shred -n 'X': aumenta el número de sobreescrituras 'X' veces.
  • shred 'partición': destruye el contenido de la partición designada (aquí hablamos de como se denominan las particiones en GNU/Linux).
  • shred -f: permite ejecutar el comando sobre un archivo sin permisos de escritura, siempre que uno sea propietario del mismo (tranquilidad, ya hablaremos de los permisos y los propietarios).
  • shred -v: muestra el patrón de caraceres empleado para sobreescribir.
  • shred -z: hace una última pasada de sobreescritura, al margen de las designadas, añadiendo un último patrón de ceros.

mkdir (make directory)
Comando para la creación de directorios. Podemos crear varios a la vez. Sintaxis: mkdir dir01 dir02 dir03 dir04...
  • mkdir -p: crea un árbol de subdirectorios.

rmdir (remove directory)
Para borrar directorios.
  • rmdir -p: elimina un árbol de directorios siempre que no tengan contenido alguno.

paste
Comando que devuelve las líneas de los ficheros designados escritas secuencialmente, separadas por tabulaciones. Sintaxis: paste archivo1 archivo2.
  • paste -s: muestra el contenido de los ficheros en línea en lugar de en paralelo.
  • paste -d: utiliza el carácter / como separador.

nl (number line)
Sirve para numerar las líneas de un archivo.

cut
Permite buscar y/o seleccionar columnas o campos dentro de un archivo estructurado para mostrarlas en el terminal.
  • cut -c nº_columna archivo: muestra los caracteres que estén en la columna designada de archivo.

Por hoy lo dejamos. Les aconsejo que practiquen todos estos comandos con sus opciones, las que aquí reseño y otras que no hemos visto. Consulten la ayuda del terminal (que vimos aquí) y cuidadito con el comando shred que lo carga el diablo.

domingo, 21 de abril de 2013

Archivos, directorios y unidades de almacenamiento

Resto de entradas con intenciones didácticas en la etiqueta Aprendizaje.

Creo que ya va siendo hora de saber lo que tenemos entre manos cuando entramos en el terminal de Ubuntu y empezamos a operar con comandos. Como en Windows, la información está contenida en ficheros, los cuales están guardados en directorios. La diferencia es que en los sistemas GNU/Linux todo tiene tratamiento de fichero: los propios archivos, los directorios, las unidades de almacenamiento, las unidades extraíbles y hasta los comandos u órdenes. Todo es tratado como si fuera un fichero o archivo y todo se ubica en directorios específicos.

También conviene saber que el disco C:/ de Windows no existe como tal. Lo que tendremos es el directorio raíz, representado por el símbolo /. De ahí cuelgan el resto de directorios y subdirectorios.

Dispositivos

Para aprender a manejarnos dentro del sistema jerarquizado de datos debemos entender las diferencias que existen con Windows. En el anterior post ya deslicé que los discos duros no se llaman exactamente igual, así que vamos a empezar por ahí. Trataré de explicar esquemáticamente como reconocer cada dispositivo.
/dev/sda: es el primer disco duro, si es el único no encontrarán otro.
/dev/sda1: es la primera partición del primer disco duro.
/dev/sda2: es la segunda partición del primer disco duro.
(etc...)
/dev/sdb: es el segundo disco duro, en caso de haberlo.
/dev/sdb1: es la primera partición del segundo disco duro.
/dev/sdb2: es la segunda partición del segundo disco duro.
(y así con todo...)
Como vemos, cada dispositivo de almacenamiento está contenido en el directorio dev que cuelga del directorio raíz /.
/media/cdrom: la unidad de CD/DVD.
/media/dispositivoUSB: los pendrives que insertemos en el puerto USB, que recibirán un nombre distinto según el caso.
Es estos dos casos, la unidad CD/DVD y los dispositivos USB serán montados en el directorio /media.

El montaje equivale a crear un acceso desde un directorio a un dispositivo. Si no tenemos un disco duro montado no podremos visualizar su contenido aunque nos aparezca listado en pantalla. Podemos tener conectado un dispositivo pero no necesariamente tiene que estar montado; es como dejar la televisión en modo de espera.

Directorio /home

Este directorio se crea durante la instalación de la distribución y equivale al Mis Documentos de Windows. Si usted ha creado un usuario llamado FelipeLotas, entonces dentro de /home habrá un directorio llamado /FelipeLotas, con la ruta absoluta /home/FelipeLotas. Aprovecho este ejemplo para subrayar que GNU/Linux diferencia entre mayúsculas y minúsculas, con lo que para su sistema Hola es algo distinto de hola. Téngalo en cuenta porque no hacerlo le puede suponer más de un soponcio.

En fin, que el directorio home es donde usted va a guardar todo su material como usuario. y no solo usted; a cualquier usuario nuevo le será creado un directorio personal dentro de home. GNU/Linux es un sistema multiusuario pensado para el uso compartido.

Moverse por los directorios

Con el comando cd (change directory) podemos desplazarnos a través de los directorios.
cd /: para ir al directorio raíz.
cd ..: para subir un nivel dentro del árbol de directorios.
cd -: para ir al directorio previo, sea o no parte del árbol de directorios actual.
cd: para volver al directorio personal del usuario en /home. Equivale a cd ~.
Con estas cuatro opciones del comando cd tenemos suficiente para navegar por el entramado de directorios de nuestro sistema de archivos.

Hablar del directorio home da pie al vídeo de The Mission "Coming home" que realizaron en 1996.