curso.linux

29
Curso de Introducci  n a GNU/Linux Historia, Filosof  a y Conceptos B á sicos Sebasti á n D. Criado Asociación Argentina de Nuevas T ecnolog í as [email protected] Emiliano Gavil á n Asociación Argentina de Nuevas T ecnolog í as [email protected] Adaptaci  n Boris Quiroz. [email protected] Dedicado Para todos aquellos que hicieron que el Software Libre sea una realidad Tabla de contenidos Introducci  n a GNU/Linux Historia de GNU/Linux y el copyright Las distintas distribuciones Por que usar GNU/Linux y que nos ofrece La documentaci ón en GNU/Linux Empezando con GNU/Linux Conceptos básicos de Un*x Entrando al sistema y creaci ón de cuentas Consolas Conceptos básicos de entorno shell Sistema de archivos Como en UNIX tambi é n en GNU/Linux  Plomerí a en GNU/Linux Entrada y salida est ándar Canalización y redirecci ón Permisos de archivos, sus due ños y grupos Conceptos Como se interpretan los permisos Dependencias Cambiando permisos Cambiand o grupos y usuarios Puntos adicionales

Upload: german-burgos

Post on 31-Oct-2015

10 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Curso.linux

7/16/2019 Curso.linux

http://slidepdf.com/reader/full/cursolinux-5634f8a4acbc3 1/29

Curso de Introducción a GNU/Linux

Historia, Filosof ía y Conceptos Básic os

Sebastián D. Criado

Asociación Argentina de Nuevas Tecnologí as

[email protected]

Emiliano Gavilán

Asociación Argentina de Nuevas Tecnologí as

[email protected]

Adaptación B oris Qu iroz.

[email protected]

DedicadoPara todos aquellos que hicieron que el Software Libre sea una realidad

Tabla de contenidosIn trod u cción a GNU/Linux

Historia de GNU/Linux y el copyright

Las distintas distribuciones

Por que usar GNU/Linux y que nos ofrece

La documentación en GNU/Linux

Empezando con GNU/Linux

Conceptos básicos de Un*x

Entrando al sistema y creación de cuentas

Consolas

Conceptos básicos de entorno shellSistema de archivos

C omo en U N IX tamb ién en GNU/Linux  

Plomerí a en GNU/Linux

Entrada y salida estándar

Canalización y redirección

Permisos de archivos, sus dueños y grupos

Conceptos

Como se interpretan los permisos

Dependencias

Cambiando permisosCambiando grupos y usuarios

Puntos adicionales

Page 2: Curso.linux

7/16/2019 Curso.linux

http://slidepdf.com/reader/full/cursolinux-5634f8a4acbc3 2/29

Administración básica d el sistema  

La cuenta root y sus implicaciones

Gestión de usuarios

Borrando usuarios

Grupos

Administración L A MP

ComponentesApache

Mysql

php

Configuración de LAMP

Instalación de Apache

Instalación de PHP

Instalación de Mysql

Administración d e S amb a

Definición

Instalación de SambaConfiguración de Samba con SWAT

Trabajando con Samba

Agregar usuarios

Page 3: Curso.linux

7/16/2019 Curso.linux

http://slidepdf.com/reader/full/cursolinux-5634f8a4acbc3 3/29

Introducción a GNU/Linux

Historia de GNU/Linux y el copyright

Muchas personas creen que Linux es el primer SO que surge con las caracterí sticas de libre y conlos fuentes a disposición, pero esto no es tan así . No podrí amos hablar de la historia de Linux sin

incluir a GNU ya que este proyecto de la Free Software Foundation fue el comienzo de lo que es

Linux hoy en dí a. La F S F (F ree S oftw are F ou n d ation ) , fue creada por Richard Stallman,

quién una vez que entró en el M.I.T en 1971 comenzó a dar muestras de su gran habilidad para la

programación. El proyecto GNU fue el precursor de lo que es el SO Linux de hoy en d í a.

Este proyecto comenzó en el año 1984 dándole el nombre recursivo de GNU que significa GNU no

es UNIX (GNU's not UNIX ), para crear un sistema operativo compatible con UNIX. Este proyecto

es el padre de un sinnúmero de programas que actualmente forman parte de cualquier distribución

de Linux y por ello es correcto hablar de GNU/Linux en lugar de Linux a secas.

Algunos de los programas que se crearon a partir del proyecto GNU son el GCC, un compilador de

lenguaje C, el GNU Emacs, un editor de textos, las librerí as GNU de lenguaje C y además uno de

los proyectos más grandes como lo es el entorno gráfico GNOME.

La idea era simple; se podí a tener todo un SO funcional, libre y gratuito. Pero no hay que

engañarnos con el significado de libertad. La libertad del software se basa en que uno es dueño del

programa que adquiere y/o desarrolla por ello tiene derecho a obtener sus fuentes y hacer lo que se

quiera con él, cambiarlo, mejorarlo y hasta venderlo.

Linux esta regido por lo que se denomina Licencia Pública General de GNU, o GPL por General

Public License. La GPL fue desarrollada por la FSF para el proyecto GNU y hace una serie de

previsiones sobre la distribución y modificación del software.

Originalmente Linus Torvalds lanzó Linux con una licencia más restrictiva que la GPL que permití a

que fuese distribuido libremente pero prohibí a lucrar con él. Sin embargo la GPL autoriza a la gente

a vender su software, aunque no permite restringir el derecho que tiene el comprador de copiarlo y

venderlo a su vez.

Hay que aclarar que libre no significa de dominio público. El software de dominio público

pertenece a la humanidad y carece de copyright. El software regido por GPL si tiene copyright que

pertenece al autor y esta protegido por estas leyes internacionales. El software GPL tampoco es

shareware. El shareware es propiedad del autor y exige a los usuarios que paguen cierta cantidad de

dinero por usarlo y/o obtener mayores funcionalidades. En cambio el software GPL puede serdistribuí do y usado sin pagar a nadie. La GPL permite a los usuarios el modificar los programas y

redistribuirlos. Sin embargo, cualquier trabajo derivado de un programa bajo licencia GPL también

se tendrá que regir por esta licencia.

Cuando Linus Torvalds comenzó con el desarrollo de Linux, mucho del trabajo ya estaba hecho por

el proyecto GNU, y el kernel que Linus Torvalds y un ejército de programadores pudo hacer, fue el

pegamento que unió todo el sistema que hoy conocemos.

Page 4: Curso.linux

7/16/2019 Curso.linux

http://slidepdf.com/reader/full/cursolinux-5634f8a4acbc3 4/29

Las distintas distribucionesUno podrí a simplemente pensar, porque comprar una distribución si todo es gratuito. Tenemos que

pensar que no todo el mundo tiene acceso a Internet y además que si tuviéramos que bajar todo los

programas que podrí amos tener en una distribución común, gastarí amos más dinero que si la

comprá

ramos, en la mayorí a de los casos. Igualmente, y si se quiere, puede bajarse todo el softwarecon licencia GPL y el kernel de Linux totalmente gratis desde Internet.

Las empresas que están distribuyendo GNU/Linux actualmente son muchas y con variadas ofertas

que cubren todas las necesidades. Existen muchos puntos a tomar en cuenta para elegir una

distribución y ellos son claves para una buena selección.

• Boot Manager: El boot manager o administrador de inicio es una utilerí a que reside en el

sector de inicio maestro del disco rí gido (Master Boot Record o MBR). Este permitirá 

seleccionar entre el sistema GNU/Linux y otro que ya haya esta en el sistema anteriormente

como Windows. Existen varios administradores de inicio en el mercado como el GNU Grub,

el System Comander de V Communication o el Boot Manager pero GNU/Linux viene con su

propio administrador de inicio, el LILO o LInux LOader y que se instala por omisión en lamayorí a de las distribuciones. En las distribuciones que no es uilizado por defecto se utiliza

GNU Grub.

• Sistema X Window: X Window es el subsistema que soporta la interfaz de usuario gráfica.

Uno de los servidores X más comunes es el XFree86. También existe un modelo comercial

llamado simplemente X de la empresa MetroLink. En los últimos tiempos, debido a un

problema de cambio de licencias en XFree86, surgió un derivado llamado X.org, siendo

adoptado por la mayorí a de las distribuciones.

• Interfaz de usuario: La lí nea de comando es la interfaz por omisión de GNU/Linux, pero

existen entornos gráficos como el KDE (Kool Desktop Environment) y el GNOME (GNUNetwork Object Model Environment). Existen otros, pero estos dos son los más populares y

utilizados en el momento.

• Servicio de conectividad: GNU/Linux tiene soporte de TCP/IP desde sus comienzos y

además posee programas servidores y clientes de todos los protocolos Internet comunes

como DNS (Domain Name Service), HTTP (Hiper Text Transfer Protocol), SMTP (Simple

Mail Transfer Protocol, correo electrónico), NNTP (para foros de noticias) y PPP/SLIP para

enlaces serie como el dial-up, y un largo etcétera.

• Servicios de Impresión y de Archivos: Estos servicios permiten al sistema acceder a recursos

de red y compartir archivos e impresoras con otros usuarios. Entre los servicios se encuentra

el NFS (Network File System) para compartir archivos con otros sistemas Un*x, la suite de

aplicación Samba, que hacen que GNU/Linux pueda utilizar recursos de una red Windows,

y la suite AppleTalk, que puede comunicarse con el mundo Apple-Macintosh.

• Aplicaciones: Últimamente gran cantidad de empresas de software se están volcando a

escribir programas para GNU/Linux, como hizo en su momento Netscape y hoy dí a hacen

Oracle, Sun Microsystems y muchas otras. Pero hay un largo camino por seguir hasta que los

fabricantes de hardware abran totalmente las puertas de sus arquitecturas lo que facilitará 

que se gestione software mas útil y con mayor calidad.

• Administración de Paquetes: El problema de la gestión de instalación de programas en las

distribuciones se ha resuelto de diversas maneras. Actualmente existen en la práctica tressistemas en uso: paquetes RPM (Red Hat Package Manager), paquetes DEB (Para el

administrador de paquetes de Debian) y TGZ o Tarballs. Los RPM fueron creados como una

Page 5: Curso.linux

7/16/2019 Curso.linux

http://slidepdf.com/reader/full/cursolinux-5634f8a4acbc3 5/29

forma de distribuir aplicaciones por la empresa Red Hat y es una de las m ás usadas. Los

paquetes DEB fueron creados por el grupo que lidera la distribución Debian y es otra forma

muy eficiente de administración de paquetes. Y los TGZ son la forma primitiva como se

distribuí a el software en el mundo Un*x. Existen distribuciones de GNU/Linux muy usadas,

como la Slackware, que todaví a utilizan este sistema.

Herramientas para el programador: Las distribuciones incluyen un sin fin de componentes yherramientas para el desarrollo, además de lenguajes completos como el C, Python, Perl,

TCL, Lisp, Fortran, Ada, C++ y un muy largo etcétera.

Empresas como RedHat, Suse y el grupo de desarrollo Debian, son lí deres en este mercado,

cubriendo con sus distribuciones la mayorí a de los nichos disponibles, tanto para las empresas como

para los usuarios en el hogar. A continuación, analizaremos brevemente algunas de estas

distribuciones en su ultima versión, detallando sus caracterí sticas, Para mas información visitar la

página de DistroWatch.com.

Por que usar GNU/Linux y que nos

ofreceLos usuarios buscan sistemas que puedan satisfacer sus necesidades. Tal vez la curiosidad los ha

llevado a buscar en GNU/Linux, pero es bueno saber que la elección no solamente puede satisfacer

dicha curiosidad.

Como estudiantes, tendrán ante ustedes un sistema muy configurable y esa sola opción hace que sea

el preferido de los ámbitos académicos.

El poder tener el código fuente de cada punto de un sistema operativo funcional es un recursoinvaluable que no se podí a tener hasta no hace mucho. Pero no nos engañemos con que tenemos un

sistema solamente didáctico. GNU/Linux presenta un sin fin de aplicaciones que generan un

ambiente por demás de estable para los negocios de hoy en dí a. Y este es un punto interesante ya

que es en las empresas donde GNU/Linux tiene mayor entrada, debido en gran parte al poder contar

con un sistema Un*x de bajo costo total de la propiedad (TCO por sus siglas en inglés) y sin las

complicaciones de licencias que tienen otros SO.

Pongamos un ejemplo. Una empresa compra una distribución cualquiera por u$s 30, la instala en

sus 120 máquinas. Nada lo impide, no es ilegal y sobre todas las cosas, tendrán una plataforma

mucho más estable que con otros SO's. Dirán seguramente que GNU/Linux no cuenta con ningún

soporte. Es un gran error. Primero que todo GNU/Linux cuenta con una gran comunidad dispuesta a

ayudar y sobre todo, en esa comunidad se podrá contactar hasta a los mismos programadores que

formaron parte del proyecto. Tal vez a una empresa no le interese el soporte a través de un contacto

que supunen poco confiable. Las empresas necesitan echarle la culpa a alguna organización si el

servidor no funciona. Muy bien, empresas como IBM, Hewllett-Packard y Dell ya venden

servidores con GNU/Linux preinstalados y con garantí as y servicios técnicos similares a los que

ofrecen con otras plataformas. Por parte de las distribuciones, cuentan con soporte permanente, ya

sea a través de la web o correo electrónico, servicio que cuesta muchí simo en otros SO's y ni hablar

de SO's Un*x.

Page 6: Curso.linux

7/16/2019 Curso.linux

http://slidepdf.com/reader/full/cursolinux-5634f8a4acbc3 6/29

Ahora bien, GNU/Linux cuenta además con una serie de soportes para tecnologí as heredadas como

podrí an ser aplicaciones que corren en otro tipo de plataforma. Se cuenta con emuladores de DOS y

Windows, estando siendo además portadas una gran cantidad de aplicaciones tanto de corriente

principal como grandes aplicaciones. Esto da la seguridad de no tener que cambiar el software por

el que se pagó anteriormente, pero hay que decir que este tipo de programas emuladores todaví a

tienen sus fallas, siendo dif í cil poder ejecutar algunas aplicaciones poco conocidas.

Existe una frase que habla por si misma: GNU/Linux lo tiene todo: Estabilidad, soporte y software.

Además en época de recortes GNU/Linux es la clave para mantener nuestro negocio competitivo

tanto tecnológica como económicamente.

La documentación en GNU/LinuxLa documentación de todo software es un tema muy preocupante. Las distintas distribuciones

comerciales de GNU/Linux poseen documentación en formato impreso. Pero el mismo no cubre la

totalidad de funcionalidades y programas del SO, sino solamente lo que corresponde a su

implementación particular, quedando en manos de los usuarios el adquirir documentación másespecí fica. Sin embargo, existe tanto en la misma distribución como en Internet infinidad de

documentación que puede ser consultada.

El mayor problema al instalar un SO nuevo o un programa, es que los usuarios y administradores no

se toman el tiempo necesario para leer la documentación y es por ello que la mayorí a de las

llamadas a servicio técnico se deben más a problemas que están en la documentación que a los

inesperados. Si se tomara el tiempo necesario para leer la documentación, el costo de servicio

técnico se reducirí a notablemente y esto en una empresa se tiene que tener en cuenta tratando que

los usuarios y administradores puedan tener el material necesario para informarse de todos los

aspectos del sistema.

Desde sus inicios los desarrolladores se han preocupado por mantener todo lo que se hizo en este

sistema operativo bien documentado. Por esto existen numerosos proyectos que sirven para

documentar cada aspecto del sistema y sus aplicaciones. Uno de los proyectos más conocidos es el

LDP (Proyecto de Documentación de Linux), que se alza como una entidad centralizadora de

documentación. Esto es bueno para tener un solo lugar en donde buscar toda la información

necesaria.

GNU/Linux cuenta con gran cantidad de documentación en varios formatos y uno de los

desarrollados por el LDP son los HOWTO que están disponibles muchas veces con la misma

distribución o a través de Internet. En muchos casos estos HOWTO fueron escritos por los mismos

autores que los programas y en otros por personas que se han visto en un problema real en unaempresa, universidad u otra institución. También existen lo que se denomina MINI-HOWTO, que

son guí as rápidas para la pronta implementación de un servicio o un programa, sin detenerse en

aspectos que no se utilizarán o se utilizarán rara vez. Se pueden encontrar, tanto los HOWTO como

los MINI-HOWTO, en distintos formatos como en ASCII, PDF, PS, HTML, DocBook, etc. En

nuestro paí s existe un mirror de documentación del proyecto LUCAS (LinUx en CAStellano), en el

cual se podrán encontrar la mayorí a de ellos.

Uno de las formas de documentación más populares y simples de acceder es el uso de las man-

pages. Estas páginas de manual vienen en todas las distribuciones y cubren con notable detalle el

uso de comandos o programas. Además los programas nuevos que se instalen traerán en su mayorí a

man-pages que se podrán acceder de igual manera que a las propias del sistema.Se accede a ellascon el comando

Page 7: Curso.linux

7/16/2019 Curso.linux

http://slidepdf.com/reader/full/cursolinux-5634f8a4acbc3 7/29

shrek@pantano$ man <comando>

Existen varias opciones que se pueden utilizar y se pueden buscar tecleando

shrek@pantano$ man man

con lo que aparecerán las páginas de manual del comando man.

Muchas veces las páginas de manual indican un número luego del comando Ej. ls(1). Esto indica

que la información del comando ls puede encontrarse en la sección 1. Esta forma se remonta a

cuando las man-pages de los sistemas Un*x vení an en libros impresos que se dividí an en secciones

donde se abordaba el tema de un comando de acuerdo a su aplicación. También se puede contar con

las páginas de INFO de cada comando, utilizando el comando

shrek@pantano$ info <comando>

donde se encontrara información menos detallada que en las man-pages pero de pronta utilización.

Un lugar donde buscar cuando se instale un nuevo programa es los archivos README. Estos

explican todo el proceso de instalación así  como también los requerimientos necesarios. Ademáscada programa cuenta con documentación propia que se podrá encontrar en los directorios

/usr/doc y /usr/share/doc, pudiendo haber otros según el programa y/o la distribución.

Los fuentes del kernel también poseen una gran cantidad de información sobre aspectos generales

del SO y su funcionamiento, siendo una muy buena fuente de información al momento de meter

mano al sistema, abundando los comentarios técnicos y los jocosos, dirigidos por los distintos

desarrolladores a sus pares. Existen además muchí simas guí as que cubren aspectos muy importantes

y de alta complejidad del SO y sus aplicaciones. Cabe destacar que mucha de esta información se

encuentra en español pero existe un número mucho mayor que esta en inglés. Proyectos como

LuCAS tratan de que se revierta esto, aportando con su trabajo un aporte invaluable para toda la

comunidad hispanoparlante. Por todo lo expuesto hasta aquí , puede decirse que GNU/Linux es unode los sistemas con mayor cantidad de documentación que existe, tanto libremente como en forma

de libros impresos por editoriales de renombre en el campo técnico. No quedan excusas para no

informarse.

Empezando con GNU/LinuxLos usuarios que recién comienzan a utilizar un entorno operativo UNIX como es GNU/Linux se

sienten intimidados por la complejidad que este SO posee. Existen numerosos libros que ya han

tratado el tema de GNU/Linux pero ninguno de ellos puede cubrir en total profundidad todo lostemas que este SO tiene para dar. Este parte del curso no tratara de ahondar en detalles y como todo

el curso, solo dará las pautas necesarias para que el estudiante pueda investigar los temas que más

les interesen. Lo que trataremos de hacer es ganar conceptos fundamentales para el mejor

funcionamiento de esta clase de SO por lo que empezaremos con UNIX. Para ello pasaremos a ver

los interpretes de comando y algunos comandos simples pero solo a modo de que se tenga una

pequeña noción para comenzar a trabajar. Luego se profundizará en cada uno de estos puntos con

mayor detalle. Expondremos el concepto de árbol de directorios y su distribución así como también

una lista del comando más utilizados.

Page 8: Curso.linux

7/16/2019 Curso.linux

http://slidepdf.com/reader/full/cursolinux-5634f8a4acbc3 8/29

Conceptos básicos de Un*xComo antes vimos, GNU/Linux posee un 95 % de compatibilidad con el SO UNIX, es por esto

veremos que la mayorí a de las posibilidades de este se aplican. UNIX posee las caracterí sticas de

cualquier sistema operativo multiusuario y multitarea. Esto significa que puede existir más de una

persona usando la computadora a la vez, cada uno de ellos ejecutando un programa diferente. Estasensación la da el SO junto con las caracterí sticas del procesador ya que nos asigna tiempos para

cada usuario y cada programa haciéndonos pensar que contamos con un procesador solo para

nosotros.

El sistema de archivos es un árbol multinivel que permite a los usuarios crear sus propios

subdirectorios. Tanto los programas escritos por los usuarios, como los del sistema normalmente se

ejecutan por medio de un intérprete de comandos, que en Un*x o en GNU/Linux es un proceso de

usuario como cualquier otro, al cual se le denomina shell. Aunque el shell es un programa, lo

podemos observar como tres entes distintos: como programa, como proceso y como ambiente de

trabajo.

El shell que se tomaba anteriormente como estándar era el Bourne Shell llamado simplemente shescrito por el desarrollador Steven Bourne. Pero el paso del tiempo a dado lugar a un nuevo

estándar, el bash, y se usará de aquí  en adelante para referirse al shell dado su gran aceptación en

todos los sistemas UNIX y derivados.

Entrando al sistema y creación de

cuent as

Para empezar a ver las caracterí sticas de que GNU/Linux posee debemos dar algunas pautasgenerales sobre los usuarios que se ampliarán mas adelante.

Pondremos algunas pautas. Nuestro sistema tendrá un nombre que lo identificará en la red y este

será "pantano". Y aparecerá ante cualquier comando que pongamos como indicativo del sistema con

la forma

[usuario@pantano:/directorio_actual]{s ímbolo}

donde directorio_actual será el directorio donde estamos parados actualmente. Tendremos

que tener dos usuarios mí nimos de ejemplo para poder interactuar, que ya bautizaremos shrek y

fiona. Dos indicativos que nos dirán con que tipo de usuario estamos trabajando en el lugar de

{sí mbolo},se usará él "#" para el usuario root y "$" para el usuario común. Por supuesto que esto

puede configurarse de manera distinta. Esta es solo una muestra de posibilidades que se podr í an

tener configuradas.

[root@pantano:/home]#

Aquí  a entrado en el sistema el usuario "root" y esta parado sobre el directorio /home. Como se

habrá notado la barra indicativa del directorio raí z es / y no la acostumbrada en DOS \.

Page 9: Curso.linux

7/16/2019 Curso.linux

http://slidepdf.com/reader/full/cursolinux-5634f8a4acbc3 9/29

Cuando inicia el sistema lo más probable es que tenga que ingresar como root o lo que denomina

súper usuario. Para esta sección basta decir que el root es quien tiene poder absoluto sobre el

sistema. Es quien puede hacer cualquier cosa que le plazca y más. Por ello se dice muchas veces

"En un sistema eres root o no eres nadie" y con razón. Por ello se deberá usar esta cuenta lo menos

posible, solo en el caso de tener que utilizar algún comando privilegiado o para mantenimiento del

sistema. Sí , cuanto más tiempo estemos trabajando como root, tendremos más posibilidades de

cometer un error irreparable que si trabajamos como un simple usuario. Repetiremos esto otra vez,tal vea así se vea mejor

USA AL USUARIO ROOT LO MENOS POSIBLE, CUANTO MÁS TIEMPO ESTEMOS

TRABAJANDO COMO ROOT, TENDREMOS MAS POSIBILIDADES DE COMETER UN

ERROR IRREPARABLE QUE SI TRABAJAMOS COMO UN SIMPLE USUARIO.

Se vera un indicativo en la pantalla que le pedirá su nombre de usuario a través de la palabra login:

Bienvenido. Este sistema es Linux 2.4.26

pantano login:

Poniendo nuestro nombre de usuario y luego presionando In tro o E n ter (como más les guste), se

podrá pasa a ingresar nuestra contraseña o password que no será mostrada en la pantalla para evitar

que sea vista por alguna persona que este en los alrededores de su sistema, por ello se deber á teclear

cuidadosamente

Bienvenido. Este sistema es Linux 2.4.26

pantano login: root

Password:

Hay que recordar que GNU/Linux es case sensitive por lo que los caracteres en minúscula y

mayúscula son distintos. Si el password es incorrecto se mostrará el siguiente mensaje

Bienvenido. Este sistema es Linux 2.4.26

pantano login: root

Password:

login incorrect

login:

Y se deberá intentar de nuevo. Una vez introducido correctamente el nombre de usuario y elpassword uno es libre de empezar a trabajar con el sistema. Lo primero que se deberá hacer al entrar

al sistema recién instalado, si no es que se hizo durante la instalación, es crearnos una cuenta de

usuario común. Para esto podemos utilizar dos script que vienen por defecto en la mayorí a de las

distribuciones ad d u ser y u serad d. Ambos realizan el mismo trabajo pero se han nombrado

diferente en distintas distribuciones. En muchos casos uno es un enlace del otro. Para la creación de

una cuenta, se deberá entrar al sistema como root

pantano login: root

password:

Last login: Sun Mar 26 19:23:32 on tty1

Page 10: Curso.linux

7/16/2019 Curso.linux

http://slidepdf.com/reader/full/cursolinux-5634f8a4acbc3 10/29

Luego introduciremos uno de estos comandos seguido por el nombre de usuario que se quiera

agregar al sistema.

[root@pantano:~]# adduser shrek

[root@pantano:~]#

Este comando creará una entrada en el archivo /etc/password donde la clave estará en blanco,

ya veremos por qué, y un subdirectorio en el directorio /home o /usr/home según se hayainstalado. La entrada de la clave en blanco esta dada porque tendremos que asignarle una contraseña

para que el usuario pueda entrar al sistema y si le vienen ganas pueda cambiarla luego. Ya veremos

en el tema de Administración Básica de Sistemas, las diferentes posibilidades que se pueden llegar a

tener para la gestión de usuarios. Con el comando p assw d seguido del nombre del usuario le

asignaremos una contraseña

[root@pantano:~]# passwd shrek

New UNIX password:

Re-Type UNIX password:

[root@pantano:~]#

Algo a tener muy en cuenta en lo que se refiere a la creación de claves para los usuarios es que

muchas veces estos no la cambian durante mucho tiempo. Este es un gran problema de seguridad,

por lo que tendremos que darle a esta primera clave un plazo de expiración corto, no más de 30 dí as,

para que el usuario se vea obligado a cambiarla inmediatamente. Con respecto a la calidad de la

clave, se tendrá que tener en cuenta que cuanto más f ácil de recordar sea una clave, más f ácil será 

que la descubra otra persona y cuanto más dif í cil sea de recordar se anotara en algún lugar que será 

menos seguro que si guardase en la memoria. Usar palabras muy conocidas o fechas de cumpleaños

u otra cosa relacionada con nosotros es perjudicial para la seguridad de nuestro sistema. Volveremos

más adelante con esto.

Conceptos básicos de entorno shellAl hablar de un SO Un*x nos ponemos a pensar en un entorno de texto. ¿Pero que hay entre lo que

vemos y lo que es realmente? ¿Qué es este entorno de texto que se habla tanto? Este entorno se

maneja a través de lo que se denomina un interprete de comandos. De la misma forma que DOS

posee su interprete de comandos, el COMMAND.COM. Un*x y GNU/Linux posee los suyos. A

través de estos podremos efectuar una comunicación entre nosotros y el sistema dándole órdenes a

través de comando que el interprete de comandos descifrara para que el sistema haga lo que le

pedimos.Anteriormente ubicamos al interprete de comandos dentro de las capas con la que nos podremos

encontrar en un sistema. El interprete de comandos b ash es solo una interfase de las muchas que

posee Un*x o GNU/Linux. Dentro de este tipo de interpretes de comando al que nos estamos

refiriendo, existen muchas otras variantes.

Page 11: Curso.linux

7/16/2019 Curso.linux

http://slidepdf.com/reader/full/cursolinux-5634f8a4acbc3 11/29

Tan pronto se entra al sistema, se iniciara él interprete de comando que tengamos configurando, en

la mayorí a de los casos será el b ash y es en el que nos ocuparemos nosotros. En este momento,

podremos teclear las ordenes que necesitemos o que tengamos ganas de teclear.

pantano login: shrek

Password:

Last login: Sun Mar 26 19:23:32 on tty1

Bienvenido al sistema pantano. Que tenga un buen día.

[shrek@pantano:~]$

Aquí se ve el prompt del interprete de comandos, [shrek@pantano:~]$ indicándonos que esta

listo para recibir ordenes.

Tratemos de decirle al sistema que realice algo interesante

[shrek@pantano:~]$ make love

Bueno, si estamos muy enamorados de nuestro sistema puede resultar ló

gico que nos sintamos así ,pero el sistema no pensara lo mismo de nosotros y nos devolverá un mensaje de error indicándonos

que no puede ejecutar el comando que le hemos solicitado.

make: *** No hay ninguna regla para construir el objetivo `love'. Alto.

[shrek@pantano:~]$

Con razón dicen que GNU/Linux es poco amigable. Ahora con esto se nos presentan preguntas

interesantes. ¿Qué son órdenes? ¿Qué esta ocurriendo cuando tecleamos m a ke l o ve? El

programa make realmente existe en el sistema pero no puede interpretar lo que le estamos pidiendo

que realice.

La primera palabra de la orden, make, es el nombre de la orden a ejecutar. El resto de la orden estomado como argumento de la orden. Veamos un ejemplo

[shrek@pantano:~]$ cal 10 2004 octubre de 2004

do lu ma mi ju vi sá

1 2

3 4 5 6 7 8 9

10 11 12 13 14 15 16

17 18 19 20 21 22 23

24 25 26 27 28 29 30

31

[shrek@pantano:~]$

El comando cal sirve para mostrar un simple calendario, si no se le dan argumentos nos mostrará elmes en curso en el año actual. Aquí  el nombre de la orden es cal y los argumentos que le hemos

dado son 10 y 2004.

Cuando una orden se ingresa al sistema, el intérprete de comando efectúa varias operaciones.

Primero que todo, busca el nombre de la orden y comprueba si es una orden interna, propiedad del

mismo intérprete de comandos y que este sabe ejecutar por si mismo, existen numerosas de estas

órdenes. El interprete de comandos también comprueba si la orden es un "alias" o nombre sustituto

de otra orden. Si no cumple con ninguno de estos requisitos, él interprete de comandos busca el

programa y lo ejecuta pasándole los argumentos especificados en la lí nea de comandos. En el

ejemplo del make que es un comando que sirve para poder compilar, el intérprete de comandos ve

que no es una orden interna ni un alias, así que busca el programa, que está ubicado en /usr/bin,

y lo ejecuta pasándole el argumento love como un objeto a compilar. Como make no puede

Page 12: Curso.linux

7/16/2019 Curso.linux

http://slidepdf.com/reader/full/cursolinux-5634f8a4acbc3 12/29

encontrar un objetivo de ese nombre, falla enviando un mensaje de error y devolviendo el control al

intérprete de comandos.

Para que el intérprete de comandos pueda encontrar los programas a ejecutar, se basa en lo que se

denomina  path. Este path o ruta es cargado como una variable de entorno, la carga el mismo

interprete en memoria desde un archivo de configuración central llamado /etc/profile y

agregá

ndole ademá

s las propias configuraciones de path que cada usuario posea en su directoriopersonal, en el caso del interprete b ash, será  ~/.bash_profile, además de ~/.profile.

Volveremos en el próximo capí tulo sobre esto.

Ahora, que ocurre si tecleamos un comando que el sistema no pueda ni interpretar ni encontrar en la

ruta definida

[shrek@pantano:~]$ besame

-bash: besame: command not found

[shrek@pantano:~]$

Si no se encuentra el programa con el nombre de la orden que indicamos (en este caso besame),

se mostrará

un mensaje de error que deberá

explicar bien ese problema.

Como en UNIX también en GNU/LinuxEn el capí tulo anterior vimos el funcionamiento de la interfase de comandos bash y comenzamos

viendo el poder que posee Un*x para el manejo de la información. En este capí tulo trataremos

temas un poco más especí ficos, concentrándonos en los aspectos más importantes que podremos ver

en nuestro sistema operativo. El hecho de que estas terminologí as empleadas en GNU/Linux, antes

se hayan aplicado a Un*x, hacen que él saberlas nos abra las puertas a todo un sinf í n de

particularidades compartidas que hacen mucho más versátil el trabajo con cualquier entorno que sea

equivalente.

Plomería en GNU/Linux

Entrada y salida estándar

Hablamos antes de los 3 archivos que el sistema abrí a en memoria al iniciarse, estos eran el stdin, el

stdout y stderr. El intérprete de comandos configurará estos archivos para que apunten al teclado, en

el caso del stdin, y al monitor, en el caso del stdout y stderr. Existen numerosos comandos de Un*xque utilizan la entrada estándar para tomar sus datos y la salida estándar para volcarlos a la pantalla.

La configuración esta dada de este modo ya que el shell espera que se ingresen los datos por el

teclado y que su resultado o algún error se reflejen en la pantalla. Un ejemplo seráa el caso del

comando cat . Si usáramos el comando cat , sin ningún argumento, todo lo que ingresemos se verí a

repetido en la pantalla.

[shrek@pantano:~]$ ca t

Hola (1)

Hola (2)

Que tal (3)

Que tal (4)

Page 13: Curso.linux

7/16/2019 Curso.linux

http://slidepdf.com/reader/full/cursolinux-5634f8a4acbc3 13/29

(1)(3)

Lí nea escrita por nosotros.

(2)(4)

Lí nea devuelta a la salida estándar.

La entrada se termina presionando Ctrl-D que es el carácter de EOT (end of text) fin de texto.

Canalización y redirección

Existe la posibilidad de desviar la salida o la entrada a un comando para poder realizar funciones

complejas u obtener los datos que saldrí an por la pantalla directamente a otro archivo. Lo primero

se denomina canalización y lo segundo redirección. El sí mbolo que se utiliza para efectuar la

canalización es el denominado pipe o sí mbolode canalización (|). Este sí mbolo permite que se pase

la salida de unacomando o programa a la entrada de otro. Un ejemplo clásico de lautilización de este

sí mbolo es cuando se requiere listar un directorioque ocupa más de una pantalla. Se podrá entonces

utilizar el comandoclásico para listar ls y enviar su salida a otroprograma que lo muestre de a una

página de pantalla por vez, por ejemplo el more .

[shrek@pantano:~]$ ls -l | more

Esto servirá para realizar lo antedicho ya que la salida del comando ls será canalizada para que sea

la entrada del comando more y este se encargara de mostrar los datos por pantalla. Lo que se esta

utilizando es la canalización de la entrada estándar y la salida estándar. La salida estándar del

comando ls es redireccionada hacia la entrada estándar del comando more que es cambiada para

que también apunte a la canalización. Otros dos sí mbolos utilizados son el < y el >. Lo que hacen es

redirigir tanto la salida como la entrada estándar de o hacia un archivo. Por ejemplo, supongamos

que necesitamos guardar en un archivo llamado listado la salida del comando ls .[shrek@pantano:~]$ ls > listado

Con esto le indicamos al comando ls que redireccione la salida estándar hacia un archivo de nombre

listado. En caso de que el archivo exista, será reemplazado con la nueva información. Para

agregar contenido a un archivo, inmediatamente después del contenido que posea, se tendrá que

poner el sí mbolo de redirección dos veces

[shrek@pantano:~]$ ls >> listado

El uso de < es para redireccionar el contenido de un archivo hacia la entrada estándar de un

comando o programa. Supongamos que necesitamos ordenar el contenido de un archivo en orden

alfabético, lo que lograremos con el comando sort . Podremos entonces redireccionar el contenido

de un archivo a la entrada del comando sort para que éste lo ordene.

[shrek@pantano:~]$ sort < nombres

De esta manera saldrí a por pantalla la lista de nombres ordenadas alfabéticamente. También se

podrá redireccionar el error estándar para que no salga en pantalla. Si quisieramos realizar un

listado de un directorio y, en caso de producirse un error, este fuese redirigido a un archivo, haremos

lo siguiente

[shrek@pantano:~]$ ls /bin 2>/tmp/error.ls

Page 14: Curso.linux

7/16/2019 Curso.linux

http://slidepdf.com/reader/full/cursolinux-5634f8a4acbc3 14/29

Esta simple redirección solo tendrí a efecto sobre el error estándar (stderr) o como también se

denomina, descriptor de archivo nº 2. Con esta redirección los posibles errores serí an redirigidos al

archivo /tmp/error.ls. Si quisiéramos dividir tanto la salida por pantalla como el error en dos

archivos separados podemos hacerlo de esta manera

[shrek@pantano:~]$ ls /bin 1>/tmp/salida 2>/tmp/error.ls

La redirección y la canalización pueden combinarse para hacer cosas un poco más complejas o

realizar tareas en un solo paso. Supongamos que necesitábamos obtener las 10 primeras lí neas del

listado que anteriormente guardamos del directorio /bin. Para esto podrí amos usar el comando

h ead directamente para que obtenga las 10 primeras lí neas del archivo listado, pero para entender

el uso combinado de la canalización y la redirección lo haremos de otra forma

[shrek@pantano:~]$ sort < listado | head

Como se puede ver, se a pasado por medio de una redirección el contenido del archivo listado al

comando sort y por medio de la canalización hemos pasado la salida estándar del comando sort al

comando h ead .

Permisos de archivos, sus dueños y

gruposPara entender mejor el concepto de permisos se tendrá que tener en cuenta que cada usuario puede

pertenecer a uno o más grupos. Cada usuario pertenece por lo menos a un grupo, que es establecido

en el momento en que el usuario se crea. El administrador del sistema puede agregar al usuario a

otros grupos. Estos grupos son necesarios para poder establecer una polí tica de acceso más

organizada dado que en cualquier momento se podrí a dar a un archivo el acceso a personas de un

grupo determinado. Lo único que se tendrí a que hacer es agregar a los usuarios que se quieran dar

permisos a ese grupo.

Para cada objeto (archivo) que se encuentre en el sistema, GNU/Linux guarda información

administrativa en la tabla de inodos, tema que abarcaremos en mayor detalle más adelante. Entre los

datos que se guardan en esta tabla se encuentran la fecha de creación del archivo, modificación del

archivo y la fecha en que se cambio el inodo. Pero además contiene los datos en los que se centra

toda la seguridad en Un*x. Estos son

• El dueño de archivo

• El grupo del archivo

• Los bits de modo o también llamados permisos de archivo

En este tramo nos centraremos en primer medida en entender los permisos y en establecer la forma

en que pueden trabajar con ellos.

Page 15: Curso.linux

7/16/2019 Curso.linux

http://slidepdf.com/reader/full/cursolinux-5634f8a4acbc3 15/29

Conceptos

Al ser Un*x y GNU/Linux sistemas operativos multiusuario, para que se puedan proteger los

archivos se estableció un mecanismo por el cual se otorgan permisos a un determinado usuario y/o

grupo. Esto permite, por ejemplo, que si existe un archivo creado por un usuario en particular, este

será propiedad del usuario y también tendrá el grupo del usuario. Se permite que los archivos sean

compartidos entre usuarios y grupos de usuarios. Por ejemplo si shrek quisiera puede prohibir losaccesos a un archivo determinado que le pertenezca a todos los usuarios que no pertenezcan a su

grupo de usuarios.

Los permisos están divididos en tres tipos: lectura, escritura y ejecución (rwx). Estos permisos

pueden estar fijados para tres clases de usuario: el propietario del archivo, el grupo al que pertenece

el archivo y para todo el resto de los usuarios. El permiso de lectura permite a un usuario leer el

contenido del archivo o en el caso de que el archivo sea un directorio, la posibilidad de ver el

contenido del mismo. El permiso de escritura permite al usuario modificar y escribir el archivo. En

el caso de un directorio permite la crear nuevos archivos en él o borrar archivos existentes. El

permiso de ejecución permite al usuario ejecutar el archivo, si tiene algo para ejecutarse. Para los

directorios permite al usuario cambiarse a él con el comando cd .

Como se interpretan los permisos

Para poder interpretar los permisos de archivos nada mejor que utilizar el comando ls -la. Con

esto vemos un listado largo de un directorio.

[shrek@pantano:~]$ ls -la

total 13

drwxr-sr-x 2 shrek user 1024 May 2 09:04 .

drwxrwsr-x 4 root staff 1024 Apr 17 21:08 ..

-rw------- 1 shrek user 2541 May 2 22:04 .bash_history-rw-r--r-- 1 shrek user 164 Apr 23 14:57 .bash_profile

-rw-r--r-- 1 shrek user 55 Apr 23 14:44 .bashrc

-rwxrwxr-x 1 shrek user 0 Apr 14 19:29 a.out

-rwxrwxr-x 1 shrek user 40 Apr 30 12:14 hello.pl

-r-------- 1 shrek user 64 Apr 29 14:04 hola

-rwxrw-r-- 1 shrek user 337 Apr 29 13:57 lista

-rw-rw-r-- 1 shrek user 40 Apr 30 12:31 listador

-rw-rw-r-- 1 shrek user 0 May 2 09:04 null

-rwxrwxr-x 1 shrek user 175 Apr 30 12:30 prue.pl

-rwxrwxr-x 1 shrek user 56 Apr 23 15:08 que.sh

Como se puede apreciar en este listado, también están el directorio actual, representado por un

punto . y el directorio padre representado por dos puntos .. . Ellos también poseen permisos yatributos que son mostrados. Para ir entendiendo un poco más vamos a explicar que significan los

primeros 10 dí gitos. Tomemos como ejemplo el siguiente archivo

-rw-r--r-- 1 shrek user 337 Apr 29 13:57 lista

Page 16: Curso.linux

7/16/2019 Curso.linux

http://slidepdf.com/reader/full/cursolinux-5634f8a4acbc3 16/29

Para esclarecer un poco mas que significa cada uno de estos caracteres al inicio, utilizaremos unas

tablas. Primero veamos aquellos caracteres que podrí an aparecer en el primer lugar, que en el

ejemplo anterior es un solo guión. Esto nos indica que es un archivo común. La tabla siguiente

explica el significado del primer sí mbolo de acuerdo al tipo de archivo.

Tabla 1. Tipos de archivo

Co nt en id o Si gni fic ado

- Archivo común

d Directorio

c Dispositivo de caracteres (tty o impresora)

b Dispositivo de Bloque (usualmente disco rí gido o CD-ROM)

l Enlace simbólico

s Socket

p Pipe

Los siguientes 9 sí mbolos se toman en grupos de tres y cada grupo pertenece a una clase de

permisos, y se muestran a continuación

Tabla 2. Tipos de permisos

Pe rm is o S ig ni f ic ad o

r Permiso de lectura

w Permiso de escritura

x Permiso de ejecución

Page 17: Curso.linux

7/16/2019 Curso.linux

http://slidepdf.com/reader/full/cursolinux-5634f8a4acbc3 17/29

Tabla 3. Grupos de permisos

Columnas S e aplica a Signif icad o

2,3,4 owner Establece los permisos para el dueño del archivo

5,6,7 group Establece los permisos para el grupo del archivo

8,9,10 other Establece los permisos para los usuarios que no entran en las

categorí as anteriores

De esta forma podremos interpretar el listado generado a partir de l s - l a de mejor manera.

Como ya dijimos, el primer sí mbolo nos esta indicando que el archivo es un archivo común. El

primer grupo de tres sí mbolos representa los permisos para el dueño del archivo (owner) que en este

caso posee permisos de lectura, escritura y ejecución. El segundo grupo de tres sí mbolos representa

los permisos para el grupo al cual pertenece el archivo (group), que en este caso tienen permisos delectura y escritura. El tercer grupo de tres sí mbolos representa los permisos para todo el resto de los

usuarios (other) en este caso es solo de lectura.

El número que sigue (1) representa el número de nombres que el archivo posee. Esto indica la

cantidad de enlaces que existen a este archivo y lo veremos más adelante cuando tratemos el tema

de enlaces simbólicos y duros.

A continuación esta el nombre del dueño del archivo y del grupo al cual pertenece el archivo.

El "337" representa el tamaño del archivo expresado en bytes.

Lo siguiente es la fecha y hora de modificación del archivo e inmediatamente después esta el

nombre del mismo.

Dependencias

Los permisos de los archivos también dependen del directorio donde estén guardados. En un

ejemplo común podrí amos dar el caso de un archivo que posea todos los permisos, tanto para el

usuario, grupo y otros pero no se podrá acceder a él si no se cuenta con permisos de lectura y

ejecución en el directorio que los contiene.

Esto funciona en el caso que se quiera restringir el acceso a un directorio determinado y a todos los

archivos que este contiene. En lugar de cambiar los permisos uno por uno solo tenemos que sacarlelos permisos necesarios para que se prohí ba el acceso mismo al directorio y con esto no podrán

ingresar para usarlos. Esto también esta dado para toda la ruta del archivo. Es decir que no solo el

último directorio, el cual lo contiene, tiene que tener los permisos necesarios, sino que todos los

directorios que lo preceden también.

Page 18: Curso.linux

7/16/2019 Curso.linux

http://slidepdf.com/reader/full/cursolinux-5634f8a4acbc3 18/29

Cambiando permisos

En el el capí tulo de nombre Empezando con GNU/Linux  vimos la utilización del comando chmod ,

pero en este entraremos a explicar en mejor forma su utilización. Además trataremos el tema de otro

forma de representar los permisos posibles, la representación octal, que es extremadamente útil a la

hora de establecer nuevos permisos.

El comando chmod se emplea utilizando sí mbolos como a,u,g,o que representan a todos (a "all"), al

usuario (u), al grupo (g) y a todos los demás (o). Existen sí mbolos para agregar (+) quitar (-) o dejar

invariantes los permisos (=). Además tendrán que usarse los sí mbolos caracterí sticos para cada tipo

de permiso. Para el permiso de lectura (r), para el permiso de escritura (w) y para el permiso de

ejecución (x). Solo el dueño del archivo puede cambiarlo con él; excepción del root que también lo

puede hacer. Para ejemplificar un cambio de permisos usaremos el archivo lista.

[shrek@pantano:~]$ ls -l lista

total 1

-rwxrw-r-- 1 shrek user 337 Apr 29 13:57 lista

[shrek@pantano:~]$ chmod a-r lista

[shrek@pantano:~]$ ls -l listatotal 1

--wx-w---- 1 shrek user 337 Apr 29 13:57 lista

De esta forma se le ha sacado a todos los grupos y usuarios los permisos de lectura. Algunos

ejemplos más

[shrek@pantano:~]$ chmod u+r lista

[shrek@pantano:~]$ ls -l lista

total 1

-rwx-w---- 1 shrek user 337 Apr 29 13:57 lista

[shrek@pantano:~]$ chmod o+w lista

[shrek@pantano:~]$ ls -l lista

total 1-rwx-w-w-- 1 shrek user 337 Apr 29 13:57 lista

[shrek@pantano:~]$ chmod og-w lista

[shrek@pantano:~]$ ls -l lista

total 1

-rwx------ 1 shrek user 337 Apr 29 13:57 lista

Ahora bien, esta es la forma simbólica. Pero existe una forma un poco más sistemática que es la

forma de representación octal. El comando chmod permite establecer los permisos de un archivo

por medio de un número octal. Comúnmente nosotros usamos para contar una representación

decimal (0,1,2,3,4,5,6,7,8,9) pero en una representación octal solo se usan 8 números

(0,1,2,3,4,5,6,7). Para establecer el permiso habrá que sumar los dí gitos octales de acuerdo a una

tabla que se dará a continuación. Dado que no se realiza acarreo, la suma será trivial.

Page 19: Curso.linux

7/16/2019 Curso.linux

http://slidepdf.com/reader/full/cursolinux-5634f8a4acbc3 19/29

Tabla 4. Permisos en notación octal

Número

octal

Permiso

4000 Establece el número de identificación de usuario al ejecutarse SUID [a]

2000 Establece el número de identificación de grupo al ejecutarse SGID[a]

1000 Establece el bit adhesivo[a]

0400 Lectura por parte del dueño

0200 Escritura por parte del dueño

0100 Ejecución por parte del dueño

0040 Lectura por parte del grupo

0020 Escritura por parte del grupo

0010 Ejecución por parte del grupo

0004 Lectura por parte de los otros

0002 Escritura por parte de los otros

0001 Ejecución por parte de los otros

Notas:

a. Se verá al finalizar el tema

Para dar un ejemplo de la suma que se tendrá que realizar, tomemos un archivo con los permisosexpresados en forma simbólica y realicemos la conversión. Para representar -rwxr-x---

0400 Lectura por parte del dueño

+ 0200 Escritura por parte del dueño

+ 0100 Ejecución por parte del dueño

+ 0040 Lectura por parte del grupo

+ 0010 Ejecución por parte del grupo

-----------------------------------------

0750 Resultado

Page 20: Curso.linux

7/16/2019 Curso.linux

http://slidepdf.com/reader/full/cursolinux-5634f8a4acbc3 20/29

De esta forma si lo que quisiéramos es cambiar los permisos de un archivo, solo se tendrí a que

efectuar la suma necesaria y establecerlo con el comando chmod . Si quisiéramos cambiar los

permisos para que el dueño tenga permisos de lectura y escritura y que el grupo y otros solo tengan

permisos de lectura, la sintaxis es

[shrek@pantano:~]$ chmod 0644 lista

[shrek@pantano:~]$ ls -l lista

total 1-rw-r--r-- 1 shrek user 337 Apr 29 13:57 lista

Con la práctica se sabrán cuales son las sumas mas utilizadas y podrán ver que es mucho más

sencillo el establecer de esta forma los permisos de archivos.

Cambiando grupos y usuarios

Lo que nos queda por ver es el caso en que se quisiera cambiar el usuario o el grupo del archivo.

Para esto se usa el comando chown y su sintaxis es similar a la de chmod pero con la variante que

se dan los nombres del usuario y del grupo. Si quisiéramos cambiar el nombre de usuario delarchivo lista tendremos

[root@pantano:/home/shrek]# ls -l lista

total 1

-rw-r--r-- 1 shrek user 337 Apr 29 13:57 lista

[root@pantano:/home/shrek]# chown fiona lista

[root@pantano:/home/shrek]# ls -l lista

total 1

-rw-r--r-- 1 fiona user 337 Apr 29 13:57 lista

Si se quisiera cambiar también el nombre del grupo, se tendrí a que poner un punto entre el nombre

de usuario y el grupo

[root@pantano]# ls -l lista

total 1

-rw-r--r-- 1 shrek user 337 Apr 29 13:57 lista

[root@pantano]# chown fiona.ventas lista

[root@pantano]# ls -l lista

total 1

-rw-r--r-- 1 fiona ventas 337 Apr 29 13:57 lista

Por supuesto que tanto el usuario como el grupo al que se hacen referencia tendrán que existir en el

sistema, sino se producirá un error. En el caso que solo se quiera cambiar el grupo y no el usuario,

se tendrá que poner un punto delante del nombre del grupo, omitiendo poner el nombre del algún

usuario. O si se quiere, se podrá poner el nombre de usuario que estaba anteriormente.

[root@pantano]# ls -l lista

total 1

-rw-r--r-- 1 shrek user 337 Apr 29 13:57 lista

[root@pantano]# chown .ventas lista

[root@pantano]# ls -l lista

total 1

-rw-r--r-- 1 shrek ventas 337 Apr 29 13:57 lista

Page 21: Curso.linux

7/16/2019 Curso.linux

http://slidepdf.com/reader/full/cursolinux-5634f8a4acbc3 21/29

Puntos adicionales

Explicaremos algunos puntos sobre permisos que son de gran utilidad para la seguridad de nuestro

sistema.

umask

Esta es la abreviatura de user file-creation mode mask o máscara del modo de creación de archivos

de usuario y es un número octal de cuatro dí gitos que se utilizan para fijar los permisos de los

archivos recién creados. Esto puede ocasionar confusión pero en realidad es una utilidad que

permite el uso del sistema por múltiples usuarios sin que peligre la privacidad. En la mayor í a de los

Un*x los archivos que son creados por el usuario, poseen permisos 0666 que dan permiso de lectura

y escritura a cualquier usuario. En relación con los programas, estos se crean con 0777 donde

cualquier usuario puede leer, escribir y ejecutar el programa. Normalmente el administrador delsistema aplica una máscara al usuario en el archivo .bash_profile y esta es usada para la

creación de archivos haciendo una operación simple "AND" bit por bit con el complemento del

valor umask bit por bit. La función umask esta integrada al intérprete de comandos. Para

ejemplificar el proceso tomemos un archivo creado por el usuario.

0666 Modo predeterminado de creación de archivos

- 0022 Umask 

-------------------------------------------------------

0644 Modo resultante

El modo resultante es que el dueño tiene permisos de lectura y escritura y los demás y el grupo solo

de lectura.

0666 Modo predeterminado de creación de archivos

- 0077 Umask 

-------------------------------------------------------

0600 Modo resultante

El modo resultante es que el dueño tiene permisos de lectura y escritura y los demás y el grupo no

tienen ningún permiso. Una forma de darse cuenta de la forma en que funciona el umask es tener en

cuenta que el valor 2 inhabilita el permiso de escritura mientras que el valor 7 inhabilita los

permisos de lectura escritura y ejecución. A continuación daremos una tabla con los valores

comúnmente usados para el umask.

Page 22: Curso.linux

7/16/2019 Curso.linux

http://slidepdf.com/reader/full/cursolinux-5634f8a4acbc3 22/29

Tabla 5. Valores usuales de la variable umask

Umas k Accesos d el usuar io Accesos d el gr up o Accesos de los otros

0000 Todos Todos Todos

0002 Todos Todos Lectura y ejecución

0007 Todos Todos Ninguno

0022 Todos Lectura y ejecución Lectura y ejecución

0027 Todos Lectura y ejecución Ninguno

0077 Todos Ninguno Ninguno

SUID y SGID

Existen ocasiones que los usuarios necesitan ejecutar algún programa que requiere de privilegios.

Un ejemplo de esto es el uso del programa p assw d para cambiar la contraseña. Serí a un error darle

a los usuarios los privilegios necesarios para que puedan ejecutar esta clase de programas ya que el

usuario podrí a cambiarse de grupo o crear una cuenta con privilegios de root. Para que esto no

suceda, se implemento en Un*x, un sistema por el cual un programa que cuente con SUID o SGID

puede ser ejecutado con los privilegios del dueño y/o grupo del programa. Para que quede más clarose tiene que saber que cada usuario esta identificado por el sistema con un número de identificación

tanto para él, como para el grupo. Este número se denomina UID (user ID) para el caso de los

usuarios y GID para el caso de los grupos. Por ejemplo, un usuario podrí a tener un UID 100 y un

GID 500. En el caso del root, este tiene UID 0 y GID 0. Más adelante sé verá esto en mayor detalle.

Lo que se efectúa con el sistema SUID es una adquisición temporal de un UID o GID distinto al

propio cuando se está ejecutando el programa. Cuando un programa cambia de UID se denomina

SUID (set-UID: se establece UID) y cuando cambia de GID se denomina SGID (set-GID: se

establece GID) Un programa puede ser SUID y SGID al mismo tiempo. Para darse cuenta si un

programa es SUID o SGID basta con hacer un listado largo con el comando l s - l y se verá que

donde tendrí a que estar una x, que asigna permisos de ejecución, va a estar una letra s.

[shrek@pantano:~]$ ls -l /usr/bin/passwd

-rwsr-sr-- 1 root bin 36068 2003-06-23 20:40 /usr/bin/passwd*

/usr/bin/passwd

Page 23: Curso.linux

7/16/2019 Curso.linux

http://slidepdf.com/reader/full/cursolinux-5634f8a4acbc3 23/29

Bit adhesivo

En los antiguos sistemas Un*x, la memoria era algo esencial y escasa dado su costo. Para poder

aprovechar más esta, se empleo una tecnologí a que mantení a parte de programas esenciales en el

área swap de memoria para que pudieran ser usados más rápidamente dado que si se tendrí an que ir

a buscar al disco se adhesivo o sticky bit y estos archivos así marcados eran los que valí a la pena

mantener ya que esas partes del programa que se guardaban en memoria también podí an ser usadaspor otros.

Administración básica del sistemaEn este capí tulo trataremos de ver los aspectos generales sobre la administración de nuestro sistema

contemplando algunas configuraciones que se tendrán que hacer, tomando como base un sistema

pequeño como el de nuestro hogar o de una empresa con pocas máquinas interconectadas.

Empezaremos reforzando el concepto de la cuenta root para comprender su alcance y que

restricciones y libertades podremos dar a los demás usuarios.Luego veremos varias maneras para poder arrancar nuestro sistema ejemplificando tres métodos: la

utilización de un diskette, el uso del LILO o desde la aplicación para DOS LOADLIN.

Nuestro sistema tendrá que tener la posibilidad de imprimir y es por ello que ejemplificaremos dos

métodos para imprimir. Uno en la máquina local y otro en una máquina remota.

Como todo sistema requerirá en algún punto que se instale un kernel nuevo o se actualice parte del

mismo, veremos aspectos generales sobre las actualizaciones necesarias para nuestro sistema.

La cuenta root y sus implicaciones 

Si no eres root no eres nadie

En este punto sabemos que la cuenta raí z, que tiene el nombre de usuario root, es el más importante

del sistema y además es quien tiene los privilegios más altos para interactuar con él. También

sabemos, y esto a fuerza de malas experiencias en muchas ocasiones, que el ser root requiere

responsabilidades y el estar conciente de lo que se hace con este tipo de cuentas ya que muchas

veces un error cometido será irreparable.

Los usuarios del sistema están bastante restringidos en lo que pueden realizar, ya sea con los

archivos de otros usuario o archivos de sistema, ya que no tienen los permisos necesarios para podermodificarlos o borrarlos e incluso en muchos casos leerlos. Todas estas limitaciones se terminan con

la cuenta root ya que posee acceso a cada área del sistema pudiendo borrar, crear, modificar

archivos de cualquier parte del sistema así  como cambiar permisos y dueños de estos. Puede

ejecutar cualquier programa y hasta incluso si se le ocurriese podrí a literalmente matar al sistema

por completo. Esto es así  ya que es necesario que exista por lo menos una persona que pueda

intervenir al sistema si es necesario y que tenga los privilegios adecuados para poder forzar al

sistema a realizar algo. La idea es que esta cuenta se utilice sobriamente, únicamente cuando es

necesario y no en cualquier momento. Para ejemplificar un hecho que seria peligroso si e fuerce

root, si un usuario normal de le ocurriese borrar los archivos que se encuentran en el directorio

/boot el sistema no lo dejarí a, en cambio si es el root quien lo pide, lo que este en /boot

desaparecerá muchas veces, de acuerdo a la configuración de GNU/Linux que se posea, cargándose

al kernel completo con ellos.

Page 24: Curso.linux

7/16/2019 Curso.linux

http://slidepdf.com/reader/full/cursolinux-5634f8a4acbc3 24/29

Para evitar cualquier accidente al utilizar la cuenta root es recomendable los siguientes pasos a

seguir

1. Pensarlo dos veces antes de apretar la tecla E n ter en un comando que pueda causar algún

daño. Por ejemplo si se esta borrando algún archivo de configuración releer la lí nea del

comando completo.

2. No acostumbrarse a usar root. Cuando más confortable se encuentre uno trabajando con elusuario root, más seguro que se confundirán los privilegios con los de un usuario normal.

3. Usar siempre un marcador distinto para un usuario normal y el root. Esto ya viene por

defecto en la mayorí a de las distribuciones pero siempre esta bien repetirlo. Un signo $ o %

representara al usuario normal y un # representara al root.

4. Conectarse como usuario root solo cuando sea absolutamente necesario. Y desconectarse

tan pronto como se haya terminado el trabajo. Cuando menos se use la cuenta root, menos

posibilidades de cometer un error habrá.

Existen personas que son verdaderos hackers de Un*x que utilizan la cuenta root para todo, pero hay

que recordar dos cosas con respecto a esto. Lo primero que no estamos a esa altura de conocimiento

sobre Un*x y segundo que estas personas en algún momento han hecho algo que les a hecho perder

su información.

La cuenta root es poderosa en el sistema, y ese poder es peligroso muchas veces para el resto de los

usuarios del sistema. La tendencia a la destrucción de un usuario con el poder de root es perjudicial

para el resto del sistema ya que en sucesivas oportunidades se a sabido de casos en los que los

administradores del sistema leen correo de otro usuarios o borran archivos sin avisar a nadie

 jugando con el sistema informático como si fuesen niños y no como verdaderos administradores.

Por ello se requiere cierto grado de madurez y responsabilidad ademá

s del conocimiento necesariopara poder llegar a ser administrador de un sistema y es en nuestros sistemas que tendremos en el

hogar o en la oficina con GNU/Linux donde tendremos que aprender a serlo.

Gestión de usuarios

El sistema mantiene una cierta cantidad de información acerca de cada usuario. Dicha información

se resume a continuación.

nombre de usuario

El nombre de usuario es el identificador único dado a cada usuario del sistema. Ejemplos denombres de usuario son: shrek, burro y fiona. Se pueden utilizar letras y dí gitos junto a los

caracteres "_" (subrayado) y el punto. Los nombres de usuario se limitan normalmente a 8

caracteres de longitud.

clave

El sistema también almacena la clave encriptada del usuario. El comando p assw d se utiliza

para poner y cambiar las claves de los usuarios.

Page 25: Curso.linux

7/16/2019 Curso.linux

http://slidepdf.com/reader/full/cursolinux-5634f8a4acbc3 25/29

user ID

El user ID, o UID, es un número único dado a cada usuario del sistema. El sistema

normalmente mantiene la pista de la información por UID, no por nombre de usuario.

group ID

El group ID, o GID, es la identificación del grupo del usuario por defecto.

nombre completo

El nombre real o nombre completo del usuario se almacena junto con el nombre de usuario.

Por ejemplo, el usuario burro puede tener el nombre "Platero Equino" en la vida real.

directorio inicial

El directorio inicial es el directorio en el que se coloca inicialmente al usuario en tiempo deconexión. Cada usuario debe tener su propio directorio inicial, normalmente situado bajo

/home.

intérprete de comando

El intérprete de comando del usuario es el intérprete de comandos que es arrancado para el

usuario en tiempo de conexión. Ejemplos pueden ser /bin/bash y /bin/tcsh.

El archivo /etc/passwd contiene la información anterior acerca de losusuarios. Cada lí nea del

fichero contiene información acerca de un único usuario. El formato de cada lí nea es

nombre:clave_encriptada:UID:GID:nombre completo:dir_inicio:intérprete

Un ejemplo puede ser

shrek:Xv8Q981g71oKK:102:100:Shrek Ogre:/home/shrek:/bin/bash

El primer campo , "shrek", es el nombre de usuario. El siguiente campo, "Xv8Q981g71oKK", es la

clave encriptada. Las claves no se almacenan en el sistema en ningún formato legible por el hombre.

Las claves se encriptan utilizándose a sí  mismas como clave secreta. En otras palabras, sólo si se

conoce la clave, ésta puede ser desencriptada. Esta forma de encriptación es bastante segura.

Algunos sistemas utilizan "claves en sombra" (shadow) en la que la información de las claves serelega al fichero /etc/shadow. Puesto que /etc/passwd es legible por todo el mundo,

/etc/shadow suministra un grado extra de seguridad, puesto que éste no lo es. Las claves en

sombra suministran algunas otras funciones como puede ser la expiración de claves; no entraremos

a detallar estas funciones aquí .

El tercer campo, "102", es el UID. Este debe ser único para cada usuario. El cuarto campo,"100", es

el GID. Este usuario pertenece al grupo numerado 100. La información de grupos, como la

información de usuarios, se almacena en el fichero /etc/group. El quinto campo es el nombre

completo del usuario, "Shrek Ogre". Los dos últimos campos son el directorio inicial del usuario,

/home/shrek y el intérprete de conexión /bin/bash, respectivamente. No es necesario que el

directorio inicial de un usuario tenga el mismo nombre que el del nombre de usuario. Sin embargo,

ayuda a identificar el directorio.

Page 26: Curso.linux

7/16/2019 Curso.linux

http://slidepdf.com/reader/full/cursolinux-5634f8a4acbc3 26/29

Borrando usuarios

Anteriormente vimos como podemos crear un usuario para empezar a utilizar el sistema, y este

método puede emplearse para la creación de cualquier otro usuario. De forma parecida, borrar

usuarios puede hacerse con los comandos u serd el o d elu ser dependiendo del software instalado

en el sistema.

Si se desea "deshabilitar" temporalmente un usuario para que no se conecte al sistema (sin borrar la

cuenta del usuario), se puede prefijar con un asterisco ("*") el campo de la clave en

/etc/passwd.Por ejemplo, cambiando la lí nea a

shrek:*Xv8Q981g71oKK:102:100:Shrek Ogre:/home/shrek:/bin/bash

evitará que shrek se conecte.

Después de que haya creado un usuario, puede necesitar cambiar algún atributo de dicho usuario,

como puede ser el directorio inicial o la clave. La forma más simple de hacer esto es cambiar los

valores directamente en /etc/passwd. Para poner clave a un usuario, utilice el comando

p assw d. Por ejemplo

[root@pantano:~]# passwd burro

cambiará la clave de burro. Sólo root puede cambiar la clave de otro usuario de ésta forma. Los

usuarios pueden cambiar su propia clave con p assw d también.

En algunos sistemas, los comandos chfn y chsh están disponibles, permitiendo a los usuarios el

cambiar sus atributos de nombre completo e intérprete de conexión. Si no, deben pedir al

administrador de sistemas que los cambie por ellos.

Gr upos

Como hemos citado anteriormente, cada usuario pertenece a uno o más grupos. La única

importancia real de las relaciones de grupo es la perteneciente a los permisos de ficheros, como

dijimos anteriormente cada fichero tiene un "grupo propietario" y un conjunto de permisos de grupo

que define de qué forma pueden acceder al fichero los usuarios del grupo. Hay varios grupos

definidos en el sistema, como pueden ser bin, mail, y sys. Los usuarios no deben pertenecer a

ninguno de estos grupos; se utilizan para permisos de ficheros del sistema. En su lugar, los usuarios

deben pertenecer a un grupo individual, como users. Si se quiere ser detallista, se pueden mantener

varios grupos de usuarios como por ejemplo estudiantes, soporte y facultad.

El fichero /etc/group contiene información acerca de los grupos. El formato de cada lí nea es

nombre de grupo:clave:GID:otros miembros

Algunos ejemplos de grupos pueden ser:

root:*:0:

users:*:100:fiona,burro,shrek

invitados:*:200:

otros:*:250:shrek

Page 27: Curso.linux

7/16/2019 Curso.linux

http://slidepdf.com/reader/full/cursolinux-5634f8a4acbc3 27/29

El primer grupo, root, es un grupo especial del sistema reservado para la cuenta root. El siguiente

grupo, users, es para usuarios normales. Tiene un GID de 100. Los usuarios fiona y pedro tienen

acceso a este grupo. Recuérdese que en /etc/passwd cada usuario tiene un GID por defecto. Sin

embargo, los usuarios pueden pertenecer a mas de un grupo, añadiendo sus nombres de usuario a

otras lí neas de grupo en /etc/group. El comando groups lista a qué grupos se tiene acceso.

El tercer grupo, invitados, es para usuarios invitados, y otros es para "otros" usuarios. El usuarioshrek tiene acceso a éste grupo.

Como se puede ver, el campo "clave" de /etc/group raramente se utiliza. A veces se utiliza para

dar una clave para acceder a un grupo. Esto es raras veces necesario. Para evitar el que los usuarios

cambien a grupos privilegiados (con el comando newgroup), se pone el campo de la clave a "*".

Se pueden usar los comandos ad d grou p o grou p ad d para añadir grupos a su sistema.

Normalmente es más sencillo añadir lí neas a /etc/group uno mismo, puesto que no se necesitan

más configuraciones para añadir un grupo. Para borrar un grupo, sólo hay que borrar su entrada de

/etc/group.

Administración de LAMPA este punto, ya deberí amos estar familiarizados con Linux, por lo tanto esta sección está enfocada

en los otros tres complementos de la sigla LAMP: Apache, MySQL y Php, y las funciones que estos

cumplen en el servidor LAMP.

Componentes

Apache

El servidor HTTP Apache es un software (libre) servidor HTTP de código abierto para plataformas

Unix(BSD, GNU/Linux, etc.), Windows, Macintosh y otras, que implementa el protocolo HTTP/1.1

y la noción de sitio virtual. Cuando comenzó su desarrollo en 1995 se basó inicialmente en código

del popular NCSA HTTPd 1.3, pero más tarde fue reescrito por completo. Su nombre se debe a que

originalmente Apache consistí a solamente en un conjunto de parches a aplicar al servidor de NCSA.

Era, en inglés, a patchy server (un servidor "parcheado").

MySQL

MySQL es un sistema de manejo de base de datos (DBMS) open source que se ha ido ganandopopularidad en los servidores web debido a su velocidad, estabilidad y desempeño. MySQL es un

servidor que maneja almacenamiento y acceso a datos, y un cliente para manejar la interf áz de

manejo del servidor. Dentro del servidor LAMP, MySQL es usado para almacenar datos en forma

ordenada, que luego serán usados por las aplicaciones web.

Php

Php es un lenguaje de programación desarrollado especí ficamente para ser usado en scripts web.

Originalmente era un set de scripts en Perl, pero con el tiempo se han ido agregando capacidades.

Es un lenguaje orientado a objeto, muy utilizado en la creación de contenido dinámico para sitios

web.

Page 28: Curso.linux

7/16/2019 Curso.linux

http://slidepdf.com/reader/full/cursolinux-5634f8a4acbc3 28/29

C onfigur ac ión de LAMP

Instalación de Apache

A continuación comenzaremos con la instalación de nuestro servidor web, el cual puede ser

instalado desde diferentes fuentes dependiendo la distribució

n que estemos usando. Para esta guí asupondremos el uso de alguna distribución basa en debian, por lo que usaremos la herramienta APT

para la instalación.

[shrek@pantano:~]# apt-get install apache2

Una vez finalizada la instalación el servidor deberí a ser levantado autmáticamente, lo que nos indica

que podemos seguir con la instalación de Php.

Instalación de Php

Una vez finalizada la instalación de Apache podemos instalar Php. Para esto podemos elegir algunade las tantas formas de instalación, pero seguiremos usando la herramienta APT.

En este caso también necesitaremos instalar algunos otros paquetes si queremos que nuestro Php sea

capáz de conversar con MySQL.

[shrek@pantano:~]# apt-get install php5 php5-mysql

Una vez finalizada la instalación de Php debemos reiniciar nuestro servidor Apache para que los

cambios sean efectuados y sea capáz de entender Php.

[shrek@pantano:~]# /etc/init.d/apache2 restart

Instalación de MySQL

Al igual que en el resto de los paquetes instalados, para instalar MySQL usaremos APT, pero en este

caso debemos tener cuidado con qué instalamos ya que el sistema base de MySQL está dividido en

tres paquetes: el servidor, el cliente y las librerias cliente. En nuestro caso solo debemos

preocuparnos por el servidor, por lo tanto lo instalaremos así :

[shrek@pantano:~]# apt-get install mysql-server

Una vez finalizado el proceso de instalación, el servicio será levantado en forma automática y

quedará listo para usarse.

Page 29: Curso.linux

7/16/2019 Curso.linux

http://slidepdf.com/reader/full/cursolinux-5634f8a4acbc3 29/29

Administración de Samba

Definición

Samba es un servicio que nos permite compartir sistemas de archivos e impresoras en una red de

computadores que usen el protocolo Session Message Block, entre los cuales se encuentran todas lasversiónes de cierto sistema operativo propietario...

Instalación de Samba

Dependiendo de la distribución que estemos usando, la forma en que tendremos que instalar Samba.

En nuestro caso, como se supone que estamos usando una distribución basada en Debian, usaremos

la herramienta APT de la siguiente forma:

[shrek@pantano:~]# apt-get install samba samba-common swat

En algunas distribuciones, Samba no levanta automáticamente cuando termina de instalar, por lo

que tendremos que hacerlo nosotros.

[shrek@pantano:~]# /etc/init.d/samba start

Esto nos levantará el servicio con un archivo de configuración básico que posiblemente no se ajuste

a las caracterí sticas ni necesidades de nustra red. Para crear un archivo de configuración acorde a

nuestra realidad usaremos la herramienta SWAT.

Configuración de Samba con SWAT

Para poder utilizar la herramienta de configuración web de Samba lo único que debemos hacer es

abrir nuestro navegador favorito y dirigirnos a la dirección http://localhost:901

Agregando usuarios

Para que Samba pueda trabajar con seguridad en base a los usuarios, estos deben existir dentro del

sistema Linux. En caso contrario no podrán acceder a los recursos compartidos.

La creación de usuarios para el sistema Samba es tan simple como la creación de usuarios en elsistema Linux. La única diferencia es que, además, debemos crear una contraseña para Samba. Esto

lo hacemos de la siguiente forma.

[shrek@pantano:~]# smbpasswd -a <usuario>

Con lo anterior ya tenemos al usuario <usuario> dado de alta para usar el sistema Samba.