curso.linux
TRANSCRIPT
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
Emiliano Gavilán
Asociación Argentina de Nuevas Tecnologí as
Adaptación B oris Qu iroz.
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
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
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.
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
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.
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
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.
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 \.
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
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.
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
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)
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
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.
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
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
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.
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.
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
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
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.
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
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.
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.
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.
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
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.
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.
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.