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