GNU/Linux - Electiva Libre I - Universidad de Córdoba Departamento de Ingeniería de Sistemas y Telecomunicaciones

Página creada Xenia Alfaro
 
SEGUIR LEYENDO
GNU/Linux - Electiva Libre I - Universidad de Córdoba Departamento de Ingeniería de Sistemas y Telecomunicaciones
GNU/Linux – Electiva Libre I

             Universidad de Córdoba
Departamento de Ingeniería de Sistemas y Telecomunicaciones
GNU/Linux - Electiva Libre I - Universidad de Córdoba Departamento de Ingeniería de Sistemas y Telecomunicaciones
Índice de contenido
1. Conceptos generales del Sistema Operativo GNU/Linux............................................3
   1.1 Generalidades de GNU/Linux y el software libre........................................................3
   1.2 Historia del Sistema Operativo GNU/Linux ................................................................6
   1.3 Conceptos previos de software libre...........................................................................8
2. Comandos básicos utilizados en el sistema GNU/Linux...........................................10
   2.1 Listado de comandos mas utilizados........................................................................10
   2.2 Como ingresar a la consola en GNU/Linux...............................................................13
   2.3 Ejemplos de ejecución de algunos comandos básicos.............................................13
   2.4 Manejo de archivos y directorios...............................................................................15
       2.4.1 Estructura del sistema de archivos....................................................................15
       2.4.2 Modos de acceso a un fichero en GNU/Linux...................................................17
       2.4.3 Comandos para el manejo de archivos y directorios.........................................18
       2.4.4 Herramienta gráfica Nautilus (GNU/Linux Ubuntu 9.04)....................................28
3. Administración de usuarios y grupos.........................................................................33
   3.1 El superusuario o root................................................................................................33
   3.2 Adquirir permisos de superusuario ..........................................................................34
   3.3 Tipos de usuarios en GNU/Linux...............................................................................34
   3.4 Ficheros importantes en la creación de usuarios y grupos.......................................35
   3.5 Comandos para mantenimiento de usuarios.............................................................38
   3.6 Comandos para mantenimiento de grupos...............................................................42
   3.7 Herramienta gráfica para crear usuarios y grupos....................................................44
Bibliografía.........................................................................................................................46
GNU/Linux - Electiva Libre I - Universidad de Córdoba Departamento de Ingeniería de Sistemas y Telecomunicaciones
Introducción

Este modulo de Electiva Libre I (GNU/Linux Básico), esta destinado para los estudiantes
novatos en el uso del sistema operativo GNU/Linux. Esto con el propósito de que tengan
una guía o manual de referencia que les permita comenzar a dar sus primeros pasos en la
utilización del nuevo sistema.

El desarrollo de este modulo esta conformado por tres unidades que incluyen temas
básicos para los usuarios inexpertos en el mundo de GNU/Linux y el software libe. En la
unidad uno encontramos los conceptos generales del Sistema Operativo, en la unidad dos
se estudiaran los comandos básicos utilizados en el sistema y en la unidad tres
realizaremos algunas labores administrativas, como es la administración de usuarios y
grupos.

La primera unidad del modulo expone generalidades sobre el sistema, como son algunos
hechos y personajes importantes en su desarrollo. También se explica una pequeña
reseña histórica sobre el sistema y algunos conceptos básicos para empezar a utilizarlo.

En la segunda unidad se presentan algunos comandos básicos necesarios para empezar
a utilizar el sistema, se estudia la sintaxis de uso, así como su ejecución en la consola del
sistema. En esta unidad se hace énfasis en el manejo de comandos para manipular
ficheros.

La última unidad presenta algunos conceptos y técnicas relacionadas con la
administración del sistema. Primeramente se estudian las características del usuario
administrador del sistema (root), los tipos de usuarios, Para finalmente gestionar la
creación de usuarios y grupos.
GNU/Linux - Electiva Libre I - Universidad de Córdoba Departamento de Ingeniería de Sistemas y Telecomunicaciones
1. Conceptos generales del Sistema Operativo GNU/Linux

Objetivos

    ●   Tener una visión general de algunos antecedentes, personajes y hechos que
        relacionan al sistema operativo GNU/Linux con la comunidad del software libre.

    ●   Distinguir las principales características, herramientas de software y distribuciones
        GNU/Linux de la actualidad.

    ●   Conocer la historia y los hechos que anteceden el desarrollo de las primeras
        versiones del kernel de Linux, núcleo del sistema operativo GNU/Linux.

    ●   Estudiar y distinguir los principales conceptos, utilizados en el mundo del software
        libres, necesarios para comenzar a estudiar el sistema operativo GNU/Linux.

1.1 Generalidades de GNU/Linux y el software libre

El sistema operativo GNU/Linux en todas sus distribuciones esta sumamente ligado a una
filosofía propuesta por la FSF1 (Free Software Foundation), la cual promueve la libre
distribución y uso del software.

Toda esta filosofía del software libre nace a mediados de la década de los 80's, gracias al
señor Richard Stallman2, quien es uno de los fundadores de la Free Software Foundation,
organización creada en Octubre de 1985. Richard Stallman tambien es uno de los
propulsores iniciales del proyecto GNU acrónimo en ingles que significa GNU's Not Unix.

Una de las ideas principales que propuso el proyecto GNU3 en sus inicios, fue la creación
de un sistema operativo libre de usar, con aplicaciones de usuario también libres para que
corrieran sobre el sistema operativo. La idea era utilizar un licenciamiento GPL 4 (GNU
Public License) que protegira la libre distribución, modificación y uso del software

1   http://es.wikipedia.org/wiki/Free_Software_Foundation http://www.fsf.org/
2   http://es.wikipedia.org/wiki/Richard_Stallman
3   http://www.gnu.org/     http://es.wikipedia.org/wiki/GNU
4   http://es.wikipedia.org/wiki/Licencia_p%C3%BAblica_general_de_GNU
GNU/Linux - Electiva Libre I - Universidad de Córdoba Departamento de Ingeniería de Sistemas y Telecomunicaciones
desarrollado por el proyecto GNU.

En la actualidad el producto de software mas popular, relacionado con la filosofía
expuesta anteriormente, es el sistema operativo GNU/Linux. El nombre completo del
sistema operativo es GNU/Linux, porque fue una integración entre las herramientas de
software desarrolladas por el proyecto GNU y el kernel desarrollado por Linus Torvalds.

En la actualidad es tanta la popularidad del sistema, que muchas personas utilizan el
termino generalizado Linux, para referirse a todo el sistema operativo.

Gracias a la licencia GPL, bajo la cual fue publicado el kernel de Linux y las herramientas
de software del proyecto GNU, así como otros desarrollos de software libre, muchas
empresas e instituciones crearon distribuciones basadas en el sistema operativo
GNU/Linux, a las cuales agregaron algunas características propias de la distribución.

GNU/Linux hoy en día en la mayoría de sus distribuciones, maneja el concepto o filosofía
del software libre, en donde solo se cobra por los medios físicos de instalación, manuales
y soporte técnico del sistema. Además proporciona a sus usuarios aplicaciones gráficas,
gracias a sus entornos de escritorio Gnome y KDE 5 que facilitan el uso del sistema
operativo de una forma amigable para los usuarios novatos.

Dentro de las aplicaciones mas comunes en las distribuciones GNU/Linux encontramos:

     El navegador WEB Mozilla
     La herramienta de oficina OpenOffice
     Los manejadores de bases de datos MySQL y PostgreSQL
     Los editores de texto: Emacs, gedit, entre otros
     El servidor Web Apache

GNU/Linux es un sistema operativo que cuenta con mucha popularidad en el mundo de la
programación y la configuración de servidores, por ser un sistema operativo robusto,
estable y seguro, que puede ser modificado por cualquier programador.

5 http://www.gnome.org/
  http://www.kde.org/
GNU/Linux - Electiva Libre I - Universidad de Córdoba Departamento de Ingeniería de Sistemas y Telecomunicaciones
Las características de GNU/Linux son similares a las del sistema operativo Unix, esto se
debe a que GNU/Linux es un sistema basado en Unix. Esto se debe a que cumple con el
estándar POSIX, el cual define la interfaz de los sistemas operativos basados en Unix.

Entere las características principales del sistema encontramos:

    Es un sistema operativo multiusuario y multitarea.
    Los ficheros del sistema tienen su propia protección o permisos de acceso.
    La interfaz con el usuario, es por medio de un lenguaje de control programable
       llamado Shell.
    Esta escrito en el lenguaje de programación C y emplea gestión de memoria por
       intercambio (swap).

A continuación se destacan algunas de las distribuciones6 GNU/Linux importantes y
populares que existen en el mercado, ya que son muchas las empresas que se dedican a
desarrollar distribuciones con características propias en todo el mundo:

        Redhat
        SuSE
        Ubuntu
        Fedora
        Debian
        Mandriva
        Gentoo

6 http://www.ubuntu.com/ http://www.redhat.com/
  http://es.opensuse.org/Bienvenidos_a_openSUSE.org
  http://fedoraproject.org/es/ http://www.debian.org/
  http://www2.mandriva.com/ http://www.gentoo.org/
GNU/Linux - Electiva Libre I - Universidad de Córdoba Departamento de Ingeniería de Sistemas y Telecomunicaciones
1.2 Historia del Sistema Operativo GNU/Linux

Para hablar de la historia y evolución de el sistema operativo GNU/Linux tenemos que
remontarnos inicialmente al sistemas operativo UNIX, el cual comenzó como un proyecto
de investigación de los laboratorios BELL de AT&T7 en el año 1969. El grupo de
investigadores estaba integrado por Ken Thompson, Dennis Ritchi, Douglas Mcllroy, entre
otros miembros de los laboratorios Bell.

AT&T y laboratorios BELL, se dieron cuenta de que UNIX se estaba convirtiendo en un
producto comercializable, es así como el sistema sale de estas empresas y comienza a
utilizarse primeramente en las universidades (Illinois, Harvard y Berkeley) en proyectos
investigativos.

Principalmente en la universidad de Berkeley, fue donde se dieron los desarrollos mas
importantes fuera de los laboratorios Bell, entre ellos se destacan los avances en gestión
de memoria y la implementación del protocolo de red TCP/IP, que permitiera interconectar
computadoras en redes de área local.

Posteriormente el manejo del licenciamiento por parte de AT&T, hizo que otras empresas
adquirieran la propiedad intelectual sobre el kernel de Unix, desarrollando versiones con
modificaciones y características propias de los fabricantes, dando origen a una familia de
sistemas operativos basados en Unix8 como: AIX de la empresa IBM, SCO de Santa Cruz
Operation, BSD de la Universidad de Berkeley, Solaris de Sun Microsystems, entre otros
sistemas basados en Unix.

El manejo del licenciamiento genero una problemática con la propiedad intelectual del
código de Unix por parte de AT&T, por esta razón el investigador en sistemas operativos
Andrew Tannenbaum9, desarrollo en el año 1987 un sistema operativo gratuito basado en
Unix, que pudiera utilizarse en las universidades a nivel investigativo. Tannenbaum
escribió el código del sistema Minix como una copia del sistema operativo Unix , por esto

7 SILBERSCHATZ, Abraham; GALVIN, Peter Baer. Sistemas Operativos Quinta edición. Editorial
  PEARSON. México 1999. 912 paginas.
8 http://es.wikipedia.org/wiki/Unix
9 http://es.wikipedia.org/wiki/Andrew_S._Tanenbaum
GNU/Linux - Electiva Libre I - Universidad de Córdoba Departamento de Ingeniería de Sistemas y Telecomunicaciones
el kernel de Minix tenia todas las características del sistema Unix.

El sistema operativo Minix10 era distribuido libremente con el código fuente para correr
inicialmente en procesadores Intel. Por esta razón el estudiante Linus Torvalds, de la
universidad de Helsinki en Finlandia, comenzó a escribir en 1991 el código del kernel de
Linux basándose en el núcleo de Minix.

Linus Torvalds ingreso a la universidad en el año de 1988, y luego de aprender a
programar en lenguaje C, este empezó a desarrollar el núcleo del sistema Linux para que
pudiera correr sobre maquinas Intel 80386. En mayo de 1991 se lanza la primera versión
(0.01) del sistema, con un soporte básico para los dispositivos y recursos del sistema.

En octubre de 1991 el sistema también ejecutaba el interprete de comandos bash (Bourne
Again Shell) , esta es la shell por defecto de los sistema GNU/Linux.

En el año 1994 se lanza la versión 1.0 de Linux, esta mejoro el sistema de ficheros,
implemento soporte para redes con el protocolo TCP/IP, así como soporte para un mayor
numero de dispositivos hardware como tarjetas de red y sonido.

El núcleo de Linux se hizo popular en el mundo de las redes y la programación por ser un
sistema distribuido libremente en Internet bajo la licencia publica general del proyecto
GNU (GPL), esto permitió que muchos programadores del mundo descargaran el kernel,
lo modificaran y aportaran en el desarrollo de las nuevas versiones del kernel haciendo
mejoras del mismo.

Como Linux era un software que podía descargarse, modificarse y usarse libremente
según los términos de la licencia GPL, surgieron algunos proyectos (Debian y Red Hat),
que utilizaron las diferentes versiones del kernel de Linux y las aplicaciones desarrolladas
por el proyecto GNU para crear un sistema operativo o distribución propia.

10 http://es.wikipedia.org/wiki/Minix
GNU/Linux - Electiva Libre I - Universidad de Córdoba Departamento de Ingeniería de Sistemas y Telecomunicaciones
En la actualidad existen diferentes versiones del kernel11 de Linux que pueden ser
descargadas libremente desde la pagina oficial del proyecto, y distribuciones GNU/Linux
que se descargan desde los sitios WEB oficiales para ser usadas.

1.3 Conceptos previos de software libre

Software Libre: Es una filosofía de libertad aplicada al desarrollo y distribución de
software, que permite adaptar los programas a las necesidades del usuario, con la
oportunidad de redistribuirlo sin necesidad de pagar por hacerlo. Las cuatro libertades 12
del software permiten utilizar el programa con cualquier propósito (Libertad 0), estudiar el
código y el funcionamiento del programa para adaptarlo a las necesidades del usuario
(Libertad 1), distribuir las copias (libertad 2), mejorar un programa y publicar las mejoras
(libertad 3).

Open Source13: Este término se utilizo para remplazar la ambigüedad que existía con el
concepto Free software, debido a que esta palabra tenía varios significados en idioma
ingles. Open Source es una comunidad que fue liderada en sus inicios por Bruce Perens y
Eric Raymond, una de las finalidades de este movimiento es permitir acceder al código
fuente de un programa y poder modificarlo, pero al momento de redistribuirlo se puede
utilizar una licencia conveniente para el desarrollador del programa.

Qué es GNU14?: Es un acrónimo recursivo en ingles que significa GNU No es Unix. El
proyecto GNU fue iniciado por Richard Stallman a mediados de la década del 80 y
buscaba la creación de un sistema operativo gratuito, con aplicaciones de usuario libres
para que corrieran sobre el sistema operativo.

Licencia GPL15 (GNU Public License): Es una licencia de software que garantiza las 4
libertades del software descritas por la FSF y además especifica que todo programa
distribuido bajo esta licencia es software libre.

11http://www.kernel.org/

12   http://www.gnu.org/philosophy/free-sw.es.html
13   http://es.wikipedia.org/wiki/C%C3%B3digo_abierto
14   http://es.wikipedia.org/wiki/GNU
15   http://es.wikipedia.org/wiki/GNU_General_Public_License   http://www.fsf.org/licensing/licenses/gpl.html
GNU/Linux - Electiva Libre I - Universidad de Córdoba Departamento de Ingeniería de Sistemas y Telecomunicaciones
Free Software Foundation16: Fundada por Richard Stallman en 1985, para recaudar
fondos, prestar apoyo logístico, técnico y legal al software desarrollado en el proyecto
GNU.

GNU/Linux: Es un sistema operativo de propósito general, que integra las aplicaciones
libres desarrolladas por el proyecto GNU, con el kernel creado por Linus Torvalds.

Páginas man: Las páginas del manual en las distribuciones GNU/Linux, son los manuales
o la documentación que acompaña a cada una de las aplicaciones o comandos del
sistema.

16 http://es.wikipedia.org/wiki/Free_Software_Foundation
2. Comandos básicos utilizados en el sistema GNU/Linux

Objetivos

   ●   Estudiar la sintaxis y el uso de algunos de los comandos básicos utilizados por el
       sistema GNU/Linux.

   ●   Utilizar la consola del sistema para ejecutar algunos comandos básicos utilizados
       por el sistema GNU/Linux.

   ●   Conocer la estructura básica del sistema de archivos de GNU/Linux y estudiar la
       sintaxis de uso de los comandos utilizados para el manejo de archivos.

2.1 Listado de comandos mas utilizados

En el siguiente listado encontraremos los comandos17 mas utilizados en el sistema
operativo GNU/Linux:

cat , este comando nos permite visualizar la información que
contiene un fichero plano.

cd , este comando nos permite cambiar de un directorio a otro, accede al
directorio que se especifique después del comando.

chmod  , cambia los permisos de acceso al fichero,
teniendo en cuneta los tres grupos de permisos establecidos para el fichero.

clear, este comando limpia el texto de la pantalla o el contenido de la consola.

17 http://www.ajpdsoft.com/modules.php?name=news&file=article&sid=155
   http://ubunturoot.wordpress.com/2007/11/06/comandos-basicos-para-linux/
   http://www.webtutoriales.com/tutoriales/linux/comandos-linux.23.html
   VIÑAS, Roger Baig; LLINAS, Francesc. Sistema Operativo GNU/Linux básico. Primera edición. UOC.
   España 2003. 261 paginas.
cp  , este comando permite copiar el fichero
nombrado en el parámetro de origen, en otro lugar del disco definido por el parámetro de
destino.

find  , realiza la búsqueda de un fichero con base a opciones pasadas
como parámetro.

date, esta orden imprime en pantalla la fecha y la hora actual.

ps, informa cuales son los procesos que se están ejecutando en el sistema.

kill , este comando elimina el proceso pasado como parámetro. Este comando
es útil cuando queremos matar procesos que se inician al momento de arrancar el
sistema.

df (Disk free), informa sobre el espacio disponible en el sistema de archivos.

du (Disk Usage), indica cuanto ocupa de espacio un directorio con todos los ficheros que
contiene dentro.

file , la orden file permite establecer de que tipo es el fichero, pasado como
parámetro.

head  , este comando muestra las primeras líneas de un
fichero plano, el parámetro “-n” permite determinar el número de líneas que se quieren
mostrar.

tail  , este comando visualiza el final de las líneas de un
fichero plano, esta orden funciona de manera contraria a head.
last, la orden last nos muestra información a cerca de los últimos usuarios que han
accedido en el sistema.

passwd , este comando permite cambiar o asignar la contraseña de
acceso al sistema. Este comando es de gran utilidad en GNU/Linux porque es
recomendable para un usuario cambiar periódicamente la contraseña de acceso al
sistema.

ls  , lista los ficheros y directorios que se encuentran en el
directorio donde estemos trabajando o el pasado como parámetro. Este listado se filtra y
se visualiza, con base a los atributos pasados como parámetro.

man , edita un manual de ayuda completo, del comando o programa pasado
como parámetro.

mkdir , crea un directorio en el sistema de archivos, con el nombre especificado
como parámetro después del comando.

more , Este comando edita el contenido de un fichero plano igual que el
comando cat, pero esta orden tiene mayor utilidad cuando el contenido del fichero es muy
extenso y para mostrar su contenido se requiere mas de una pantalla.

mv  , se utiliza para cambiar el nombre del primer fichero por el
segundo. También se puede emplear para mover un fichero a un directorio especifico.

pwd, informa cual es el directorio o ruta en la que se encuentra trabajando el usuario.

rm  , borra el fichero pasado como parámetro después del comando,
esta orden pude ir acompañada de algún atributo.
rmdir , borra un directorio pasado como parámetro, pero teniendo en cuenta
que el directorio este vacío, es decir que no tenga ficheros en su interior.

who, muestra un listado con la información de los usuarios que están utilizando el
sistema.

2.2 Como ingresar a la consola en GNU/Linux

En la actualidad existen dos entornos de escritorio muy utilizados por las distribuciones
GNU/Linux, estos son Gnome y KDE. En KDE la aplicación se llama Konsole y en Gnome
se llama gnome-terminal.

Como ingresar a la consola de GNU/Linux Ubuntu:

Para ingresa a la aplicación gnome-terminal en Ubuntu 9.04 es muy sencillo, simplemente
se va al menú Aplicaciones --- Accesorios --- Terminal.

2.3 Ejemplos de ejecución de algunos comandos básicos

cat
pedro@ubuntupedro:~$ cat nomFichero
******** Probando el comando cat ********

Contenido del Fichero...
Contenido del Fichero...
Contenido del Fichero...
pedro@ubuntupedro:~$

date
pedro@ubuntupedro:~$ date
mié ago 9 12:21:32 COT 2006
pedro@ubuntupedro:~$
ps
pedro@ubuntupedro:~$ ps
  PID TTY     TIME    CMD
 7838 pts/0    00:00:00 bash
 10396 pts/0   00:00:00 ps
pedro@ubuntupedro:~$

kill
pedro@ubuntupedro:~$ ps
  PID TTY    TIME     CMD
 7838 pts/0   00:00:00 bash
 7836 pts/0   00:00:00 gnome-terminal
 10396 pts/0  00:00:00 ps
pedro@ubuntupedro:~$ kill -9 7836
pedro@ubuntupedro:~$ ps
  PID TTY      TIME     CMD
 7838 pts/0     00:00:00 bash
 10396 pts/0     00:00:00 ps
pedro@ubuntupedro:~$

df
pedro@ubuntupedro:~$ df
S.ficheros  Bloques de 1K           Usado         Dispon     Uso%   Montado en
/dev/hda5   19251772                1451036       16822784   8%          /
tmpfs       453328                  0             453328     0%          /dev/shm
/dev        19251772                1451036       16822784   8%          /.dev
none        5120                    2824          2296       56%         /dev
pedro@ubuntupedro:~$

du
pedro@ubuntupedro:~$ du -sk
12140 .
pedro@ubuntupedro:~$

file
pedro@ubuntupedro:~$ file pedro.sxw
pedro.sxw: Zip archive data, at least v2.0 to extract
pedro@ubuntupedro:~$

pedro@ubuntupedro:~$ file pantallasos
pantallasos: directory
pedro@ubuntupedro:~$

pedro@ubuntupedro:~$ file lista
lista: ASCII text
pedro@ubuntupedro:~$

head
pedro@ubuntupedro:~$ head -3 dia
#Dias de la semana
echo ""
if [ $# -lt 1 ]; then
pedro@ubuntupedro:~$
tail
pedro@ubuntupedro:~$ tail -3 dia
     exit 1
     ;;
esac
pedro@ubuntupedro:~$

last
pedro@ubuntupedro:~$ last
pedro pts/0         :0.0                             Wed Aug 9 12:14 still logged in
pedro :0                                             Wed Aug 9 12:12 still logged in
reboot system boot    2.6.10-5-386                 Wed Aug 9 12:12       (00:39)
root   pts/0        :0.0                             Tue Aug 8 06:05 - down (00:00)
pedro :0                                             Tue Aug 8 06:02 - down (00:03)
reboot system boot    2.6.10-5-386                   Tue Aug 8 06:02       (00:03)
root   pts/0        :0.0                       Sun Aug 6 06:40 - down (00:00)
pedro pts/0          :0.0                            Sun Aug 6 06:32 - 06:32 (00:00)
pedro :0                                             Sun Aug 6 06:31 - down (00:09)
reboot system boot    2.6.10-5-386                   Sun Aug 6 06:30        (00:09)
root   pts/0        :0.0                             Sun Aug 6 06:26 - down (00:00)
root   pts/1        :0.0                             Sun Aug 6 06:22 - 06:22 (00:00)
pedro pts/0          :0.0                            Sun Aug 6 06:19 - 06:24 (00:05)
pedro :0                                             Sun Aug 6 06:15 - down (00:10)
reboot system boot    2.6.10-5-386                   Sun Aug 6 06:14        (00:11)
root   pts/0        :0.0                         Wed Aug 2 13:08 - down (00:00)
pedro pts/0          :0.0                            Wed Aug 2 13:05 - 13:08 (00:02)
pedro :0                                             Wed Aug 2 13:02 - down (00:06)
reboot system boot    2.6.10-5-386                   Wed Aug 2 13:02         (00:06)
reboot system boot    2.6.10-5-386                   Wed Aug 2 04:29         (00:00)
pedro :0                                             Wed Aug 2 04:27 - 04:28 (00:00)

wtmp begins Wed Aug 2 04:27:43 2006
pedro@ubuntupedro:~$

passwd
root@ubuntupedro:/home/pedro # passwd loco
Enter new UNIX password:
Retype new UNIX password:
Sorry, passwords do not match
passwd: Authentication information cannot be recovered
root@ubuntupedro:/home/pedro #

2.4 Manejo de archivos y directorios

2.4.1 Estructura del sistema de archivos

La estructura del sistema de archivos del sistema GNU/Linux es jerarquía, es decir tiene
una estructura en forma de árbol. El directorio raíz del sistema de archivos es el root, este
se representa por el carácter “/”.
El carácter también es utilizado para separar los directorios al especificar una ruta. El
ejemplo de una ruta valida puede ser:

   ●   /home/pedro

   ●   /home/pedro/trabajos

   ●   /bin/cat

   ●   /etc/passwd
Como se muestra en las dos graficas anteriores, existen varios ficheros de tipo directorio
que conforma el sistema de archivos de GNU/Linux. Entre principales directorios de la
distribución GNU/Linux Ubuntu encontramos:

   ●   bin: Dentro de este directorio encontramos los ficheros ejecutables o programas
       básicos que utilizan los usuarios normales para interactuar con el sistema.
   ●   boot: Dentro de este directorio se encuentran los archivos relacionados con el
       arranque del sistema.
   ●   dev: En este directorio del sistema de archivos se encuentran los principales
       ficheros relacionados con el hardware de la computadora.
   ●   etc: En este directorio están los ficheros relacionados con la configuración y
       administración del sistema.
   ●   home: Directorio donde se crean los directorios de trabajo de cada usuarios del
       sistema para que estos guarden sus ficheros.
   ●   lib: Aquí encontramos las librerías del sistema.
   ●   media: Este directorio esta relacionado con el montaje de las unidades de disco
       externas.
   ●   root: Este es directorio de trabajo del superusuario (root) del sistema GNU/Linux.
   ●   sbin: En este directorio se encuentran los comandos relacionados con la
       administración del sistema y solo pueden ser ejecutados únicamente por el
       superusuario (root).
   ●   tmp: Este directorio se utiliza para almacenar archivos temporalmente, cuando el
       sistema se reinicia, los ficheros se borran.
   ●   usr: En este directorio se almacenan los programas de usuario.

2.4.2 Modos de acceso a un fichero en GNU/Linux

Para determinar los permisos de acceso a un fichero supongamos que tenemos listado en
formato largo el siguiente archivo:

   drwxr-xr-x 1 pedro pedro 6194 2006-07-12 21:54 trabajos

Los caracteres subrayados corresponden a los modos o permisos de acceso al fichero.
d          rwx              r-x             r-x
                 Tipo de      Us uario          Grupo             Otros
                 archivo

   ●   El primer carácter (d) determina que el fichero es un directorio.
   ●   El primer grupo de permisos (rwx) determina que el usuario creador del fichero,
       tiene permisos de lectura (r) escritura (w) y ejecución (x) sobre el fichero. Es decir
       tiene todos los privilegios sobre el archivo.
   ●   El segundo grupo de permisos (r-x) determina que los usuarios pertenecientes al
       mismo grupo de trabajo del usuario propietario del fichero, tendrán permisos de
       lectura y ejecución sobre el archivo. Es decir solo podrán ves el contenido del
       fichero pero no podrán modificarlo.
   ●   El tercer grupo de permisos (r-x) determina que cualquier otro usuario del sistema
       solo tiene permisos de lectura y ejecución sobre el archivo. Es decir solo podrán
       ver el contenido del fichero pero no podrán modificarlo.

2.4.3 Comandos para el manejo de archivos y directorios

Listado de información

El comando utilizado para listar el contenido del directorio en el que nos encontramos
trabajando o el directorio pasado como parámetro es ls, para filtrar la salida por pantalla
de este comando podemos utilizar diferentes parámetros precedidos por el signo menos
(-). Entre las opciones más importantes del comando ls encontramos:

   ●   -a: Muestra un listado con todos los archivos y directorios incluidos los ocultos.

   ●   -l: Muestra el listado de los archivos de un directorio con un formato largo, es decir
       visualiza en pantalla toda la información del fichero, entre la que encontramos:
       modos de acceso, número de enlaces, propietario, grupo, tamaño en bytes, fecha
       de la última creación y nombre del fichero.

   ●   -R: Lista recursivamente todos los directorios y subdirectorios.

   ●   -t: Muestra el listado de archivos de un directorio según la fecha de modificación,
       ordenando los ficheros que se han modificado recientemente primero.
pedro@ubuntupedro:~$ ls
automatix.htm     ejmplos.doc              pantallasos
buscar            General                  pedro.sxw
Desktop           lista                    pruba1
dia               list                     saludo
pedro@ubuntupedro:~$

pedro@ubuntupedro:~$ ls -l
total 468
-rwx------ 1      pedro pedro 138800                     2009-03-08 18:28   Automatix.htm

-rwxr-xr-x 1      pedro    pedro   956           2009-06-15   04:20   buscar
drwxr-xr-x 2      pedro    pedro   4096          2009-08-06   06:36   Desktop
-rwxr-xr-x 1      pedro    pedro   691           2009-06-15   10:23   dia
-rw-r-r--  1      pedro    pedro   21504         2009-08-10   03:26   ejemplos.doc
drwxr-xr-x 34     pedro    pedro   4096          1969-12-31   19:00   General
-rw-r-r--  1      pedro    pedro   313           2009-06-15   04:44   lista
-rwxr-xr-x 1      pedro    pedro   655           2009-06-01   06:02   listar
drwxr-xr-x 2      pedro    pedro   4096          2009-08-06   06:36   pantallasos
-rw-r-r--  1      pedro    pedro   5732          2009-01-16   12:54   pedro.odt
-rwxr-xr-x 1      pedro    pedro   99            2009-01-16   13:06   prueba1
-rw-r-r--  1      pedro    pedro   389           2009-03-08   15:44   saludo
pedro@ubuntupedro:~$

La primera columna indica los modos o permisos de acceso al fichero, como se explico en
el apartado anterior el primer carácter determina el tipo de fichero y los otros nueve
caracteres, las ternas de permisos. La segunda columna o campo especifica al número de
enlaces que tiene el fichero dentro del sistema de archivos.

Las dos columnas siguientes definen el nombre del usuario propietario del fichero y el
grupo de trabajo al que pertenece este usuario. La quinta columna indica el tamaño en
bytes del archivo, la próxima columna corresponden a la fecha y hora de la ultima
modificación que se realizo sobre el fichero y por ultimo el nombre del fichero.

Creación de directorios

Para crear directorios se utiliza el comando mkdir, la sintaxis para utilizar este comando
es la siguiente:

                             mkdir 

Debemos tener permisos de escritura (w) sobre el directorio en el que deseamos crear el
nuevo directorio.
Por ejemplo supongamos que estamos en el directorio de trabajo del usuario pedro:

pedro@ubuntupedro:~$ pwd
/home/pedro
pedro@ubuntupedro:~$

Si quiero crear un directorio llamado estudiantes dentro de el directorio pedro entonces
escribo la siguiente orden:

pedro@ubuntupedro:~$ mkdir estudiantes

Para comprobar que se creo el nuevo directorio dígito el comando ls -l:

pedro@ubuntupedro:~$ ls -l
total 468
-rwx------ 1      pedro pedro 138800                 2009-03-08 18:28     Automatix.htm

-rwxr-xr-x 1      pedro pedro 956               2009-06-15 04:20   buscar
drwxr-xr-x 2      pedro pedro 4096              2009-08-06 06:36   Desktop
-rwxr-xr-x 1      pedro pedro 691               2009-06-15 10:23   dia
-rw-r-r--  1      pedro pedro 21504             2009-08-10 03:26   ejemplos.doc
drwxr-xr-x 1      pedro pedro 4096              2009-08-11 10:43   estudiantes
drwxr-xr-x 34     pedro pedro 4096              1969-12-31 19:00   General
-rw-r-r--  1      pedro pedro 313               2009-06-15 04:44   lista
-rwxr-xr-x 1      pedro pedro 655               2009-06-01 06:02   listar
drwxr-xr-x 2      pedro pedro 4096              2009-08-06 06:36   pantallasos
-rw-r-r--  1      pedro pedro 5732              2009-01-16 12:54   pedro.odt
-rwxr-xr-x 1      pedro pedro 99                2009-01-16 13:06   prueba1
-rw-r-r--  1      pedro pedro 389               2009-03-08 15:44   saludo
pedro@ubuntupedro:~$

Si quiero guardar mis programas en una carpeta que se llame programas dentro del
directorio estudiantes, creo una carpeta que se llame programas dentro del directorio
estudiantes. Ejecuto los siguientes comandos:

pedro@ubuntupedro:~$ pwd
/home/pedro
pedro@ubuntupedro:~$ cd estudiantes
pedro@ubuntupedro:~/estudiantes$ mkdir programas
pedro@ubuntupedro:~/estudiantes$ ls
programas
pedro@ubuntupedro:~/estudiantes$

Miro en que directorio de trabajo me encuentro con el comando pwd, luego entro al
directorio estudiantes con el comando cd. Posteriormente creo el nuevo directorio
programas con el comando mkdir y finalmente ejecuto el comando ls para ver el nuevo
directorio dentro de estudiantes.

Movimiento entre directorios

Para desplazarnos por el sistema de ficheros en GNU/Linux y poder cambiarnos de un
directorio a otro se utiliza el comando cd. Al utilizar este comando se usa la siguiente
sintaxis:

                 cd 

Supongamos que tenemos la siguiente estructura jerárquica de archivos tal como se
muestra en la figura, en donde tenemos el directorio raíz (/) al cual pertenece un directorio
llamado home, dentro del directorio home existe un subdirectorio llamado pedro o
cualquier otros directorio de trabajo. Dentro de pedro hay un subdirectorio llamado
pedrogs y en el interior de este están los subdirectorios documentos, programas y talleres.

                         /home
                                    /pedro
                                             /pedrogs
                                                     /documentos
                                                     /programas
                                                     /talleres

Recordemos que en el directorio /home, es donde se almacenan los directorios de trabajo
de los usuarios del sistema. En este caso /home/pedro, será el directorio de trabajo del
usuario pedro.

$ cd documentos
$ pwd
/home/pedro/pedrogs/documentos
$

Estamos en el directorio documentos, para irnos al directorio talleres tenemos que
retroceder al directorio pedrogs y luego desplazarnos al directorio talleres:
Se debe tener en cuenta que el comando utilizado para desplazarnos al directorio
inmediatamente anterior al que nos encontramos es cd..

$ cd..
$ pwd
/home/pedro/pedrogs
$ cd talleres

De esta forma (cd..) nos devolvemos a pedrogs y luego nos vamos al directorio talleres.

En el caso de directorios absolutos, nos podemos mover dando la ruta completa del
directorio al que deseamos desplazarnos. Por ejemplo, para acceder dentro del directorio
talleres que se encuentra dentro del directorio pedrogs, debemos saber la ruta completa
para desplazarnos de manera directa (/home/pedro/pedrogs/talleres).

Si deseamos movernos a nuestro directorio de trabajo, podemos hacerlo dando la
trayectoria completa hacia el fichero:

$ cd /home/pedro

Existen varias maneras de regresarse al directorio de trabajo de un usuario. La primera es
usando una variable de entrono ($HOME) que tiene definido el directorio del usuario, y se
usa de la siguiente manera:

$ cd $HOME
$ pwd
/home/pedro
$

La otra puede ser simplemente usando el comando cd sin pasarle ningún parámetro:

$ cd
$ pwd
/home/pedro
$
Copiado de archivos

Para copiar archivos se utiliza el comando cp, este comando se ejecuta de la siguiente
manera:

                                  cp  

El comando permite copiar el archivo especificado en el parámetro origen hacia el destino,
si el destino es un directorio podemos indicarle varios ficheros de origen, estos ficheros de
origen serán copiados en el directorio de destino.

                         /home
                                 /pedro
                                           /pedrogs
                                                   /documentos
                                                   /programas
                                                   /talleres

Teniendo en cuenta la siguiente estructura jerárquica anterior, supongamos que estamos
en el directorio talleres y deseamos copiar un archivo llamado taller1, al directorio pedro:

$ pwd
 /home/pedro/pedrogs/talleres
$ cp taller1 /home/pedro

Varios archivos también se pueden copiar al mismo tiempo a un directorio utilizando el
comodín *. Supongamos que estamos en el directorio pedro y queremos copiar todos los
archivos que terminen en .sh, para almacenarlos en el directorio pedrogs.

$ cp *.sh /home/pedro/pedrogs

Para hacer la operación anterior pero con todos los archivos que contengan los caracteres
ejemplo:

$ cp ejemplo* /home/pedro/pedrogs
Para copiar de forma recursiva podemos utilizar el parámetro -r, este copia todos los
ficheros y directorios contenidos en un directorio de origen, hasta un directorio de destino.

Si queremos copiar el contenido del directorio pedro, con todos los ficheros y
subdirectorios que cuelgan dentro de él, en el directorio pedrogs:

$pwd
 /home
$ cp -r pedro /home/pedro/pedogs

Borrado de archivos y directorios

Para borrar archivos o directorios el sistema proporciona los comandos rm y rmdir, con
rm podemos eliminar cualquier tipo de fichero en el sistema y rmdir permite borrar
directorios siempre que estos no contengan otro fichero dentro de el.

Entre los atributos que podemos pasar como parámetro al comando rm encontramos:

   ●   -r: Realiza un borrado recursivo, eliminando un directorio y los subdirectorios que
       este contenga, de manera recursiva.
   ●   -i: Realiza una pregunta de confirmación antes de borrar un fichero.

La sintaxis para ejecutar el comando es la siguiente:

                                    rm  

Para eliminar un directorio, este tiene que estar vació y utilizamos la siguiente sintaxis:

                                     rmdir -r 

Con la siguiente orden le indicamos al shell bash que antes de borrar el archivo
ejemplos.doc nos pida confirmación:

$ rm -i ejemplos.doc
 rm: remove 'ejemplos.doc'? y
$
Con la acción anterior borramos un archivo, cuando este se encuentra en el mismo
directorio del fichero que se quiere borrar.

También podemos eliminarlo dando la ruta absoluta de la ubicación del mismo:

$ rm -i /home/pedro/ejemplos.doc
rm: remove 'ejemplos.doc'? y
$

Supongamos que deseamos eliminar un directorio que no esta vació, en este caso el
contenido del directorio que vamos a borrar es el de pedrogs.

$ ls -l
total 2
-rw-rw-rw-    1    pedro pedro 2124      2009-06-01 06:02 taller.txt
-rw-rw-rw-    1    pedro pedro 4988      2009-06-15 04:44 prueba.txt
$

ahora intentemos borrar el directorio pedrogs:

$ rmdir pedrogs/
rmdir: pedrogs: Directory not empty
$

No se puede borrar porque tiene dos archivos dentro de él, para borrarlo primero
debemos borrar los archivos contenidos en el directorio pedrogs, la siguiente instrucción
me permite borrar todos los archivos contenidos en el directorio:

$ rm pedrogs/*

Una vez borrados los archivos que cuelgan del directorio pedrogs, puedo borrar el
directorio sin ningún problema:

$ rmdir pedrogs

Para borrar el directorio pedrogs de una sola vez, lo puedo hacer de manera recursiva con
el comando:
$ rm -r pedrogs

Renombrado y traslado de archivos

Para cambiar el nombre de un archivo por otro o mover un fichero de un lugar a otro,
utilizamos el comando mv, este también permite mover varios archivos a otro directorio.

La sintaxis para ejecutar el comando puede ser la siguiente:

               mv   o mv  

Si tenemos un archivo que se llama ejemplos y lo queremos renombrar por otro que se
llame trabajo basta con ejecutar el siguiente comando:

$ mv ejemplos trabajo

El ejemplo anterior funciona si los dos archivos están en el mismo directorio.

También puedo mover uno o varios ficheros a un directorio especifico en el sistema de
archivos. El siguiente ejemplo mueve el archivo lista al directorio pedrogs:

$ mv lista /home/pedro/pedrogs

Cambio de permisos, propietario y grupo

El comando chmod, permite cambiar los modos o permisos de acceso a un archivo o
directorio, su sintaxis es la siguiente:

                      chmod +/- 

Después de escrito el comando se debe especificar a que usuario queremos modificarle
los permisos de acceso, las identidades de este parámetro pueden ser:

   ●   u (user): Especifica que se quieren modificar los permisos de acceso al usuario
propietario del fichero.
   ●   g (group): Especifica que se quieren modificar los permisos de acceso a los
       usuarios que pertenecen al mismo grupo de trabajo del propietario del fichero.
   ●   o (others): Especifica que se quieren modificar los permisos de acceso a los otros
       usuarios del sistema, Es decir a los usuarios que no pertenecen al grupo de trabajo
       del propietario del fichero.

Luego de especificar la identidad del usuario, colocamos la operación + o – para añadir o
eliminar un permiso, ya sea al usuario dueño del fichero, a los usuarios del grupo u otros
usuarios del sistema.

Los modos o permisos pueden ser cualquier combinación de rwx:

   ●   r (read): Lectura
   ●   w (write): Escritura
   ●   x (exec): Ejecución

Si el usuario pedro quiere que un archivo en particular, digamos que se llama carta1, no
sea leído por nadie en el sistema salvo por él y por el usuario root tendría que usar:

$ ls -l
-rw-rw-rw- 1 pedro usuarios         21504 2009-06-15 04:44 carta1
$ chmod go-rw carta1

Al digitar nuevamente el comando ls -l, veremos que los nuevos permisos de acceso al
fichero son los siguientes:

$ ls -l
-rw------- 1 pedro   usuarios     21504 2009-06-15 04:44 carta1
$

A continuación en los permisos de acceso del fichero llamado programa1, se agregara el
permiso de escritura para los miembros del mismo grupo del usuario propietario del
fichero:

$ ls -l
-rw-r--r-- 1 pedro usuarios       1563 2009-06-15 04:20 programa1
$ chmod g+w programa1
$ ls -l
-rw-rw-r-- 1 pedro   usuarios 1563 2006-09-15 04:20 programa1
$

Otro ejemplo cambiando permisos al ejemplo anterior seria:

$ chmod go-r,o+w programa1
-rw--w--w- 1 pedro usuarios 1563 2009-06-15 04:20 programa1
$

2.4.4 Herramienta gráfica Nautilus (GNU/Linux Ubuntu 9.04)

Para el manejo de archivos y directorios, el sistema operativo GNU/Linux Ubuntu nos
ofrece una poderosa herramienta para la gestión de archivos y carpetas, muy similar al
Explorador de Windows, llamada Nautilus.

Nautilus es un shell gráfico para el entorno de escritorio Gnome, que facilita la
administración de sus archivos y el resto del sistema en general. Las siguientes figuras
nos describen el aspecto de la herramienta.

El procedimiento para acceder a la herramienta Nautilus de la distribución GNU/Linux
Ubuntu, es la siguiente: Nos vamos al menú Lugares, luego nos desplazamos al submenú
Carpeta personal:

                             Lugares --- Carpeta personal

                                  Lugares --- Equipo
Entre los principales elementos que encontramos en esta ventana están:

   ●   Una Barra de Títulos, que muestra el nombre del directorio en el que nos
       encontramos:

   ●   Una Barra de Menús que nos ayuda a realizar la operaciones sobre los archivos:

   ●   Una Barra de Herramientas estándar, que contiene los siguientes botones:
●   El Botón Adelante, para desplazarnos a la próxima pagina, el botón Subir y el
    botón Recargar, para actualizar cambios en el directorio, entre otros:

●   El Botón Inicial, el cual nos devuelve o nos posiciona en el directorio de trabajo
    que el usuario tiene por defecto, para almacenar la información. También conocido
    con el nombre de Home:

●   El Botón Equipo, que nos muestra las diferentes unidades del sistema y el
    sistema de archivos.

●   Posee una Barra de Direcciones, nos muestra la ruta donde estamos ubicados en
    el momento, y en la cual podemos escribir la ruta del directorio del sistema de
    archivos, en el cual deseamos ubicarnos.
Otra forma de acceder a Nautilus es cuando estamos trabajando en la terminal, entonces
simplemente dimitamos el nombre de la herramienta, como si de un comando se tratara,
tal como vemos en el siguiente gráfico:

Nautilus permite visualiza los archivo de tres formas, una es ver como iconos, ver como
lista y lista compacta:
Si hacemos clic derecho sobre cualquier archivo se nos despliega un menú de contexto,
parecido al de Explorador de Windows, con opciones como: Abrir con, Copiar el archivo,
Cortar el archivo, Crear un enlace, Renombrar..., Mover a la papelera, Enviar a..., Crear
archivador..., propiedades, con las cuales podremos hacer muchas operaciones sobre
los archivos del sistemas:
3. Administración de usuarios y grupos

Objetivos

    ●   Conocer quien es el usuario administrador de los sistemas GNU/Linux y cuales son
        las labores administrativas básicas, que este realiza dentro del sistema.

    ●   Estudiar la estructura de los ficheros /etc/passwd, /etc/group y /etc/shadow,
        importantes para la creación de usuarios y grupos en el sistema.

    ●   Conocer la sintaxis de los principales comandos utilizados para crear, eliminar y
        modificar la información de usuarios y grupos del sistema.

    ●   Conocer alguna herramientas gráficas que facilitan la creación de usuarios y
        grupos el los sistemas GNU/Linux.

3.1 El superusuario o root

En el sistema GNU/Linux existe un usuario que administra el sistema llamado root18 y
tiene todos los privilegios de acceso, sobre los recursos del sistema para realizar
cualquier tipo de cambios o configuraciones. Entre las acciones que puede realizar el
superusuario root encontramos: Eliminar ficheros, matar procesos, configurar ficheros,
crear usuarios, instalar paquetes, etc.

En los sistemas GNU/Linux el root tiene un identificador de usuario que lo distingue de los
demás usuarios, esta identificación es el número 0 y se le asigna cuando se instalan la
mayoría de distribuciones GNU/Linux.

Como se menciono el root tiene acceso a todos los recursos y además cuenta con los
conocimientos técnicos necesarios para realizar las labores administrativas pertinentes,
que proporcionen a los usuarios un entorno para trabajar de forma segura y estable.

18 http://es.wikipedia.org/wiki/Root
3.2 Adquirir permisos de superusuario
Una forma de entrar de manera sencilla al sistema como root, es ingresando por la opción
single-user que ofrece el menú de arranque GRUB de GNU/Linux.

Cuando estamos en una cuenta de usuario se pueden adquirir los permisos del usuario
root o de otro usuario normal del sistema, siempre que se conozca su contraseña. Para
este propósito utilizamos el comando su seguido del password.

$ su
Password: [ Escribimos el password de root ]
#
usuario@maquina $ su otro_usuario
Password: [ Password de "otro_usuario" ]
otro_usuario@maquina $

El sistema GNU/Linux Ubuntu posee un comando especial llamado sudo19 para realizar
labores administrativas, se utiliza de la siguiente forma:

$ sudo 
Password: [ Password del usuario root ]

3.3 Tipos de usuarios en GNU/Linux

El sistemas operativos GNU/Linux encontramos tres tipos de usuarios con perfiles o roles
diferentes en cuanto al uso:

    ●   Usuarios normales: Son usuarios inexpertos o novatos en el uso del sistema,
        cuando son dados de alta en el sistema se les asigna un directorio de trabajo, una
        shell (generalmente la bash) y no cuentan con privilegios para acceder a todos los
        recursos del sistema.

    ●   Usuarios del Sistema: Son usuarios creados por el sistema cuando este se instala
        inicialmente para administrar algunos servicios que cargan automáticamente
19 http://fabianperez.blogspot.com/2008/03/el-usuario-root-en-ubuntu-linux.html
cuando arranca el sistema operativo. Estos usuarios en la mayoría de
        distribuciones tienen identificadores (UID), que están entre el número 1 y 100.

    ●   root: Es el superusuario del sistema, tiene todos los privilegios sobre los recursos y
        se encarga de la administración en los sistemas GNU/Linux.

3.4 Ficheros importantes en la creación de usuarios y grupos

Cuando administramos un sistema GNU/Linux, podemos realizar diferentes tareas
administrativas, una de ellas es la creación y eliminación de usuarios en el sistema. La
gestión de usuarios es una actividad importante para todo administrador, debido a que
cualquier usuario que ingrese al sistema tiene que tener como mínimo su contraseña de
acceso, un directorio de trabajo y una shell.

El archivo que contiene información sobre cada cuenta de usuario del sistema esta en el
fichero plano /etc/passwd.

Las contraseñas de acceso se almacenan de forma encriptada en el archivo /etc/shadow
y la información de los grupos para los usuarios existentes en el sistema, se almacena en
el archivo /etc/group.

Analicemos la estructura de los diferentes ficheros, relacionados con la creación y
eliminación de usuarios o grupos en el sistema GNU/Linux20:

    ●   El fichero /etc/passwd: Es un fichero plano que contiene una base de datos con la
        información de todas las cuentas de usuarios creadas en el sistema y su estructura
        el la siguiente:

                           Nombre_de_Usuario:password(si usa shadow sera
                             X):UID:GID:Comentario:home_del_usuario:shell

        Cada campo esta separa do por el carácter : y la descripción es la siguiente:

20 http://lubrin.org/dani/ch11.html
El primer campo corresponde al nombre con el que cada usuario ingresa al
      sistema.

      El segundo campo corresponde a la contraseña de cada usuario, en las
      distribuciones actuales aparece la letra X, porque el sistema almacena el password
      en el archivo /etc/shadow.

      El tercer campo corresponde al identificador de usuario UID, este es un número es
      único que identifica al usuario en el sistema, el root tiene un UID igual a 0. En GNU/
      Linux Ubuntu los usuarios normales se crean automáticamente a partir del número
      1000.

      El cuarto campo es el identificador del grupo al que pertenece un usuario GID.

      El quinto campo es un comentario opcional en donde se agrega algún tipo de
      información adicional sobre el usuario que se crea.

      El sexto campo corresponde a la ruta del directorio de trabajo que se le asigna al
      usuario que se crea.

      El séptimo campo especifica la shell que utilizara el usuario como interprete, por
      defecto es los sistemas GNU/Linux es /bin/bash.

Ejemplo del fichero /etc/passwd en GNU/Linux Ubuntu:
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh
pedro:x:1001:1001:pedro guevara,,,:/home/pedro:/bin/bash
mami:x:1002:1002::/home/mami:/bin/bash
hermano:x:1003:1003:Jaime
Andres,,,:/home/hermano:/bin/bash
loco:x:1004:1000:lalocura:/home/loco:/bin/bash
hermanita:x:1005:1002:Diana Karina:/home/hermana:/bin/bash
nasly:x:1006:1004:nasly sagado,,,:/home/nasly:/bin/bash
jairito:x:1007:1007:Jairo
Fadul,Monteria,300123456,:/home/jairito:/bin/bash
eliecer:x:1008:1005:Ciro Jimenez:/home/cheveres:/bin/sh

   ●   El fichero /etc/group: Es un fichero plano con una base de datos que contiene la
       información de todos los grupos que se han creado en el sistema y tiene la
       siguiente estructura:

                       Nombre_grupo:password:GID:Lista_de_usuarios

       La descripción de los campos es la siguiente:

       El primer campo corresponde al nombre que se asigna a un grupo, en GNU/Linux
       cada usuario debe pertenecer a un grupo principal y este generalmente tiene el
       mismo nombre del usuario. También se pueden crear varios grupos con nombres
       diferentes para asociarlos a varios usuarios.

       El segundo campo corresponde a la contraseña del grupo.

       El tercer campo corresponde al número que identifica al grupo en el sistema GID,
       este número por lo general es igual al número del UID de usuario, pero el
       administrador del sistema puede asignara cualquier otro número al identificador de
       grupo.

       Finalmente después del campo GID podemos agregar la lista de usuarios que
       perteneces al grupo, cada usuario debe estar separado por el carácter coma (,).
Ejemplo del fichero /etc/group en GNU/Linux Ubuntu:

root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:pedro
tty:x:5:
disk:x:6:
lp:x:7:cupsys
mail:x:8:
news:x:9:
uucp:x:10:
pedro:x:1001:
prueba:x:1002:hermano
loco:x:1000:
hermano:x:1003:
nasly:x:1004:
jairito:x:1007:pedro,hermano,eliecer
cheveres:x:1005:

   ●   El archivo /etc/shadow: Este fichero plano almacena la información encriptada
       sobre las contraseñas de cada usuario creado en el sistema. Los sistemas
       GNU/Linux utilizan este archivo como medida de seguridad para no guardar las
       contraseñas en el archivo /etc/passwd, ya que este puede ser visto por cualquier
       usuario. El archivo tiene la siguiente estructura:

Usuario:password encriptado:días del ultimo cambio:días antes del cambio:días depuse del
cambio:tiempo de aviso: días antes de la inhabilitación:periodo que lleva caducado:reservado:

3.5 Comandos para mantenimiento de usuarios

Los siguientes comandos21 nos permiten crear, borrar y modificar las cuentas de los
usuarios del sistema, así como realizar algunas tareas de administración:

adduser/usseradd: Para añadir usuarios al sistema, podemos utilizar uno de estos dos
comandos. Crea automáticamente un usuario en el sistema, asignándole el identificador
de usuario (UID), el identificador de grupo (GID), el directorio de trabajo y la shell que
utilizara el usuario. Para utilizar el comando useradd tenemos que asignar manualmente
varios parámetros.

21 http://www.linuxparatodos.net/portal/staticpages/index.php?page=02-cuentas-usuario
passwd: Este comando permite asignarle la contraseña a un nuevo usuario, que se haya
creado manualmente (comando useradd) en el sistema. También sirve para que los
usuarios normales que ya estén creados, modifiquen periódicamente su contraseña.

userdel: Este comando se utiliza en la mayoría de distribuciones GNU/Linux para eliminar
usuarios del sistema, cuando se ejecuta se borra automáticamente la línea
correspondiente a la entrada del usuario en el archivo /etc/passwd. Además si se utilaza
de manera recursiva también elimina el directorio de trabajo del usuario.

usermod: Este comando se utiliza para editar la información de una cuenta de usuario ya
creada en el sistema y realizar cualquier tipo de modificaciones.

whoami: Este comando muestra el nombre de usuario que está usando sistema.

finger: Este comando informa sobre el usuario que este conectado en el sistema, también
muestra la información de algún usuario que se pase como parámetro al ejecutar el
comando.

id: Con este comando vemos los identificadores del usuario (UID) y del grupo al que
pertenece el usuario (GID).

Para crear usuarios con comandos debemos estar trabajando como usuario root o
también podemos estar como usuarios normales pero usando el comando sudo (Ubuntu),
los comando mas usados para esta operación son adduser y useradd.

Con el comando useradd creamos el usuario ingresando manualmente las opciones o
parámetros que tendrá el usuario, en el siguiente ejemplo veremos el modo de uso de
useradd.
Primero dígito el comando useradd para ver las diferentes opciones de como usar el
comando, luego dígito el comando y utilizo las opciones necesarias para crear el usuario.

   ●   -g prueba indica que el usuario pertenecerá al grupo prueba, este grupo debe
       existir en el sistema.

   ●   -d /home/javier determino cual será el directorio de trabajo del nuevo usuario.

   ●   -s /bin/bash indico que el usuario javier utilizara la shell bash, esta es la interfaz
       usada por defecto en los sistema GNU/Linux y se encuentra en el directorio
       /bin/bash.

   ●   -m -k /etc/skel estos dos parámetros se complementan, el -m crea el directorio de
       trabajo del nuevo usuario y -k copia el contenido del directorio /etc/skel al directorio
       de trabajo creado como /home/javier.

   ●   La última opción javier indica el nombre que tendrá el nuevo usuario.

Una vez creado el usuario le asignamos una contraseña de usuario utilizando el comando
passwd seguido del nombre de usuario y se asigna una nueva contraseña para que el
usuario de nombre javier ingrese al sistema.

Con el comando adduser el sistema me pide que ingrese la información correspondiente
al usuario y el se encarga de asignarle un grupo, un directorio de trabajo, una shell y su
respectivo identificador de usuario en el sistema.
Posteriormente el sistema me pide que ingrese el password que se le asignara al nuevo
usuario, una vez ingresado este debe repetirse para ser confirmado.

Además, se ingresa información adicional referente al usuario como: nombre completo,
teléfono del trabajo, teléfono de la casa, etc. Esta información será opcional.

Finalmente el sistema pregunta si la información ingresada es correcta, si esto es así,
confirmamos digitando el carácter y, y el nuevo usuario quedara automáticamente creado
en el sistema.

Para eliminar un usuario del sistema utilizamos el comando userdel, esta función se usa
de la siguiente forma, supongamos que se quiere borrar el usuario andres.

root@ubuntupedro:/home/pedro # userdel -r andres

Una vez eliminado el usuario del sistema revisamos el fichero /etc/passwd y vemos que la
entrada que existía referente a este usuario ya no existe.
También puede leer