Download Documentacion de apollo sobre permisoslinux

Document related concepts
Transcript
LINUX
El sistema operativo Linux nace en la Universidad de Helsinki, en Finlandia de las manos de Linux Trovalds que
contaba con la ayuda de muchos colaboradores expertos en Unix. Este sistema operativo en un principio sólo
fue un proyecto de aficionado de Linux Trovalds pero en la actualidad se ha convertido en uno de los sistemas
operativos mejor diseñados del mundo.
Éste es un sistema de libre distribución donde cualquier persona puede participar en la escritura del código.
Esto lo hace todavía más interesante porque todos los fuentes del sistema se pueden consultar y ver.
En lo referente a la arquitectura el sistema Linux en un principio se inspiraba en Minix y en la actualidad es un
clónico de Unix capaz de ejecutar el entorno gráfico X-windows, TCP/IP, Emacs, UUCP y software de correo y
News.
Linux es un sistema operativo completo multitarea u multiusuario como cualquier sistema Unix. Linux es
compatible con ciertos estándares como IEE, POSIX.1, System V y BSD.
Al ser un sistema operativo clónico de Unix, los conceptos sobre procesos y archivos son iguales que el , es
decir iguales que Minix. En Linux los dispositivos hardware son tratados como archivos y los software como
procesos. Es por esto que el conjunto de llamadas al sistema de Linux sea muy parecido al de minix si bien
Linux incluye más llamadas porque es un sistema operativo más completo capaz de soportar redes y entornos
gráficos si bien el entorno gráfico no forma parte del sistema operativo y se puede tener Linux en perfecto
funcionamiento sin X-windows.
La gestión de procesos en Linux y mínix se realiza de las misma forma y por tanto las llamadas al sistema que
se utilizan en los dos sistemas son las mismas. Utiliza la llamada fork() para la creación de procesos hijos y al
igual que minix execv() para cambiar la memoria del proceso hijo. Des esta forma consigue hacer que el padre
ejecute un código mientras que el hijo ejecuta otro diferente. En Línux también existe la llamada wait() para
que un padre espere a que el hijo termine de ejecutar un código. La llamada utilizada para que un proceso
termine es exit(). Existen otras llamadas más para la gestión de procesos pero estas son las principales. Estos
procesos pueden estar ejecutándose en paralelo y por tanto es necesario que puedan comunicarse para
establecer un orden de ejecución o simplemente para que de unos a otros puedan pasarse la información que
necesiten. Los procesos en Linux se pueden comunicar de dos formas mediante las señales o mediante
ficheros intermedios que reciben el nombre de tubos. Para el manejo de señales Linux proporciona una serie
de llamadas que permiten a los procesos enviar señales (kill) y prepararse para recibir señales signal, ya que si
un proceso recibe una señal para la que no está preparado este directamente hará exit. En cuanto a la
comunicación mediante tubos de esta forma los procesos pueden pasarse información, como he dicho antes
los tubos son ficheros intermedios y por tanto para leer y escribir en ello se utilizarán las llamadas al sistema
que permiten leer y escribir en ficheros. Para la creación de tubos la llamada al sistema que proporciona Linux
es pipe. Las llamadas al sistema para la gestión del sistema de ficheros de Linux son en este caso también las
mas numerosas. Existen llamadas que son muy parecidas en todos los sistemas operativos como son las de
crear (creat), cerrar (close), abrir (open), leer y escribir (read , write). También posee una llamada al sistema
que nos devuelve el estado del archivo, esta llamada es fstat y se utiliza mucho ya que también devuleve los
permisos de los archivos ya que en Linux como en Unix y en los demas sistemas que son multiusuario los
ficheros están protegidos según para quien los use. Relacionado con esto de los permisos tenemos un
conjunto de llamadas al sistema que nos permite cambiar los modos de los archivos así como saber que
usuario pide una operación sobre un archivo para saber si este tiene permiso para realizar la operación pedida
o no. Estas llamadas son: Chmod para cambiar los modos de un archivo y getuid, setuid, getgid y setgid para
obtener iformación sobre los usuarios.
Junto con las llamadas al sistema de gestión den sistema de ficheros tenemos también una serie de llamadas
para la gestión de directorios, estas llamadas entre otras cosas nos permiten , al igual que en minix crear
enlaces con ficheros así como montar sistemas de directorios con la orden mount. A parte de estas dos
operaciones también existen una serie de llamadas que nos permiten movernos por el arbol de directorios del
sistema como puede ser chdir.
Como se puede observar el sistema operativo Linux utiliza las mismas llamadas al sistema que el sistema
operativo minix y esto parece razonable ya que los dos son sistemas operativos que parten como base de Unix.
Pero Linux aparte es capaz , como he dicho antes de ejecutarse en modo gráfico utilizando las X-Windows, las
X no forman parte de S.O. pero en sí pero proporcionan un interfaz gráfico para el usuario. El modelo que
utilizan las X es el mismo que utiliza Amoeba o Windows NT, este es el modelo cliente servidor, en el que
procesos clientes (aplicaciones) realizan una serie de peticiones a procesos servidores que se encargan de
ejecutarlas y dar respuesta a los clientes. Ademas de esto Linux es un sistema opertivo que incorpora soporte
para redes y por tanto existen llamadas para gestionar esta red. De esta forma Linux se convierte en uno de
los sistemas operativos con un diseño muy robusto y estable que proporciona un amplio soporte.
Version mas actual de UBUNTU 13.04 (LINUX)
Permisos
-------------------------------------------------------------------------------------------El comando chmod este comando se aplica sobre ficheros o carpetas, en el caso de que sean
carpetas podemos usar la opcion -R para dar permisos recursivamente a todas las carpetas y
ficheros que contenga recursivamente.En cuanto a la sintaxis del comando, podemos decir
que responde a
chmod [opciones] XXX nomFichero/nomCarpeta
donde en opciones podemos expecificar por ejemplo cosas como -R, XXX es el número de
permisos tal y como especificamos a continuación:
Relación Numérica con los Permisos
0 = Ningún permiso (Lectura = 0 + Escritura = 0 + Ejecución = 0)
1 = Permiso de Ejecución (Lectura = 0 + Escritura = 0 + Ejecución = 1)
2 = Permiso de Escritura (Lectura = 0 + Escritura = 2 + Ejecución = 0)
3 = Permiso de Escritura y Ejecución (Lectura = 0, Escritura = 2, Ejecución = 1)
4 = Permiso de Lectura (Lectura = 4 + Escritura = 0 + Ejecución = 0)
5 = Permiso de Lectura y Ejecución (Lectura = 4 + Escritura = 0 + Ejecución = 1)
6 = Permiso de Lectura y Escritura (Lectura = 4 + Escritura = 2 + Ejecución = 0)
7 = Permiso de Lectura, Escritura y Ejecución (Lectura = 4 + Escritura = 2 + Ejecución = 1)
Luego, por cada Identidad, podemos obtener un número comprendido entre 0 y 7, que
delimitarán por Identidad, claramente, sus privilegios en particular sobre un archivo o
carpeta.
¿Entonces, que es, por ejemplo, chmod 644?
Son los Permisos que tiene asignados cada Identidad, sobre un archivo o carpeta, según
su Relación Numérica. Siempre siguiendo este orden:
Propietario = 6 (Puede Leer y Escribir)
Grupo = 4 (solo puede Leer)
Otros = 4 (solo puede Leer)
Nota: Evidentemente el comando chmod contiene muchas más opciones y formas de asignar
permisos, puedes consultarlas consultando el manual del comando, para ello abre un
terminal y teclea:
man chmod
La “regla” de los números quedaría mejor explicado y entendible si la
explicas
en
binario:
// el 1 activa el permiso, el 0 lo apaga
Lectura escritura ejecución
000 =0
001 =1
010 =2
011 =3
100 =4
101 =5
110 =6
111 =7
Pues eso, para los que no entendiesen la relación, que vean que no está hecha al
azar, si no que tiene su por qué y así no te lo tienes que aprender de memoria y
nunca se te olvida
Un comando util de aprender es el ls -l lista el directorio actual con los permisos
correspondiente
ls lista los directorios en la carpeta actual y el parametro -l muestras los permisos de cada
uno
por ejemplo el directorio Descargas
Propietario-Grupos-Otros
tiene los permisos drwr-xr-x que vendria siendo
Ejemplo :existe una carpeta llamada ejemplo en el directorio Documentos la cual tiene
los permisos
Se le cambia los premiso con el siguiente comando: chmod 777 ejemplo la sitaxis es la
siguiente comando chmod los permisos que deseamos cambiar y el directorio o archivo
que se desea modificar los permisos
Ahora listamos los archivos y vemos sus permisos con ls -l
Ahora el archivo tiene todos los permisos
R= Lectura(Read)
W=Escritura(Write)
X=Ejecucion(Run)
Permisos de lectura. Permiso para ver el contenido de los archivos guardados en una
carpeta – directorio o el contenido de un archivo. En el modo de texto, por ejemplo, en una
consola o terminal este atributo se identifica como una R (de Read, leer).
Permisos de escritura. Permiso para modificar el contenido de un archivo, o copiar y borrar
ficheros del contenido de una carpeta o directorio. También será posible crear ficheros
dentro de una carpeta o directorio. Se le asigna la letra W (de Write, escribir).
Permisos de ejecución. Permiso para ejecutar archivos, un programa o un script. En el caso
de las carpetas o directorios, es posible entrar en ellas, pero no ver su contenido. Es
identificado por el atributo X (de eXecute, ejecutar).
Si se revisa el archivo de forma grafica se vera asi
porque el Directorio se encuentra
con los permisos
dr--rwxrwx 2 ruizperez ruizperez
4096 dic 17 21:18 ejemplo