2500hz2:(e02a05.txt):27/03/2000 << Back To 2500hz2


.--[ @_2500Hz - Underground Scene - ]------------(http://pagina.de/2500hz)--. | | | Titulo : Guia del Usuario Novicio de Linux - Capitulo 2 | | Autor : Asejua (asejua@linuxfan.com) | | Fecha : 27/03/2000 | `-----------------------------------------------------(2500hz@mixmail.com)--┤ CAPITULO 2 - PERMISOS A NIVEL DE ARCHIVOS Y DIRECTORIOS Advertencia: Distribuye este documento sin modificarlo. Si crees conveniente alguna modificacion, adicion o has encontrado algun fallo, por favor remitemelo a asejua@linuxfan.com Los permisos en Linux son la base de la piramide en la administracion de un sistema Linux, el que un sistema este abierto o cerrado frente a ataques locales depende de una buena administracion de estos permisos.. bueno... por supuesto contando con una buena adminsitracion de usuarios y grupos. Como sistema operativo dedicado a las redes, Linux posee un buen sistema de permisos a nivel de accesos de red. Pero tambien a nivel local es necesario poseer un buen sistema de permisos para evitar intrusiones y accesos no deseados a nuestros datos. Los permisos de cada archivo y directorio se dividen en tres grandes grupos de usuarios: Propietario (user) Grupo (group) Otros usuarios (others) Para cada grupo de usuarios, cada fichero y directorio tiene tres tipos de permisos... Lectura (read) Escritura (write) Ejecucion (execute) ...Mas un permiso especial llamado æbit SUIDÆ (explicado mas adelante) æbit SUIDÆ (suID) Para cada tipo de usuario, es decir u, g y o; se pueden activar los permisos r, w, x y s con respecto a ese archivo o directorio. Linux tambien nos permite asignar a cada archivo y directorio quΘ usuario y grupo son los æpropietariosÆ de un archivo o directorio a los que se aplicaran los permisos Propietario (u) y Grupo (g). Esto nos da la posibilidad de poseer una proteccion muy alta a la hora de poner en manos de personas ajenas nuestro sistema. Veamos un ejemplo: Una linea caracteristica de un ls (con parametros -alF) nos mostraria lo siguiente.... -rwxr-xr-- root root ... archivo-de-texto.txt drwx--x--- root pepe ... textos/ 1¬ linea: Tenemos un primer guion que define la propiedad de directorio, aparece un guion puesto que archivo-de-texto.txt no es un directorio, sino un archivo. A partir de aquφ agruparemos las propiedades de tres caracteres en tres, que definiran los tipos de usuario: propietario(u), grupo(g) y otros(o). Tras estas letras tenemos el usuario propietario del archivo: ærootÆ y el grupo al que pertenece el archivo: ærootÆ. Entonces, tenemos rwx para el propietario, que es ærootÆ, un r-x para el grupo ærootÆ y un r-- para otros usuarios. Lo que nos indica que: -> El usuario ærootÆ como propietario del archivo podra ver, modificar y ejecutar (si se pudiese) ese archivo. -> Todo el que este en el grupo ærootÆ podra leerlo y ejecutarlo. -> El resto de usuarios podran leerlo solamente. Nota: El usuario root tambien pertenece al grupo root, sin embargo sus permisos por propiedad del archivo prevalecen sobre los permisos de grupo. 2¬ linea: Tenemos una d en primer lugar. Tras esto tenemos un rwx para el propietario que es 'root', un --x para el grupo 'pepe' y un --- para otros usuarios. Esto nos indica que: -> La d nos indica que es un directorio, no un archivo. -> El propietario (root) del directorio puede verlo, modificarlo y ejecutarlo. -> Cualquiera del grupo pepe podra ver y copiar archivos dentro de ese directorio. -> Otros usuarios no podran ver ni modificar ese directorio ni su contenido. Nota: Un permiso x en un directorio nos indica que podremos ver, copiar, etc... archivos que esten en ese directorio, ademas tambien debera tener r para que podamos verlo. Los comandos necesarios para administrar los permisos a nivel de archivo y directorio en un sistema Linux son: Orden: chmod Descripcion: Cambia los permisos de un archivo o directorio. Sintaxis: chmod <ugo>[<+/-><rwxs>] <archivo o directorio> <ugo>: (1) u Asigna los permisos de propietario (user)... g Asigna los permisos de grupo (group)... o Asigna los permisos de otros usuarios (other)... <+/->: + ...activando el permiso... - ...desactivando el permiso... <rxws>: r ...de lectura. w ...de escritura. x ...de ejecucion. s ...de suID. (1) Seg·n veremos despues en los dos metodos de asignacion de permisos, las letras u, g y o pueden cambiarse por valores octales, lo que nos permite el cambio de permisos sin necesidad de usar los demas parametros (<+/-> y <rwxs>). Para asignar estas propiedades tenemos dos metodos: - en forma binaria - en forma parametros - Forma Binaria Aquφ tenemos esta tabla... Pr Propietario Grupo Otros -------------------------------------------- r w x r w x r w x -------------------------------------------- 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 1 2 0 1 0 0 1 0 0 1 0 3 0 1 1 0 1 1 0 1 1 4 1 0 0 1 0 0 1 0 0 5 1 0 1 1 0 1 1 0 1 6 1 1 0 1 1 0 1 1 0 7 1 1 1 1 1 1 1 1 1 -------------------------------------------- A primera vista, esto puede rayarnos un poco, pero este metodo es realmente mas sencillo y rapido que el segundo si tenemos un poco de memoria o lo usamos mucho, por experiencia, al final se te acaban quedando los numeros. De todas formas lo explicare despacito: Tenemos una tabla que nos muestra los tres tipos principales de usuarios con sus respectivos permisos. Un 1 representa 'permiso aceptado' y un 0 'permiso denegado'. Asi tenemos todas las combinaciones de permisos posibles para cada tipo de usuario, agrupadas en un solo numero decimal, del 0 al 7 (en la columna de la izquierda). Solo tenemos que elegir nuestra combinacion de 3 binarios para cada tipo de usuario y obtendremos 3 numeros (u, g y o) de la table celeste, que usaremos como parametros para chmod. chmod ugo [</nombre_archivo>|</nombre_directorio] La mejor forma de verlo es con un ejemplo: Digamos que el archivo fulanito.txt tiene los siguientes permisos. Hacemos un ls -alF: -r-xr-x--- root root ... fulanito.txt Y hacemos un... chmod 735 fulanito.txt Separando los tres numeros y mirandolos en la tabla vemos que: El 7 = 111 = rwx : A Propietario le aceptamos r, w y x. El 3 = 011 = -wx : A Grupo le denegamos r y aceptamos w y x. El 5 = 101 = r-x : A Otros le aceptamos r y x. Con lo cual si volvemos a hacer un ls nos aparecera asi... -rwx-wxr-x root root ... fulanito.txt Desglosado seria: - directorio (no le echamos cuenta pq es meramente informativo) rwx usuario rwx => 111 => 7 -wx grupo -wx => 011 => 3 r-x otros usuarios r-x => 101 => 5 La cosa es bien simple, donde quieras que el permiso este activado (quieres que aparezca r, w o x) es un 1 y donde quieras que no (quieres que aparezca un '-'), un 0. Nos salen tres trios de binarios que, al pasarlos a decimal nos dan los tres numeritos magicos. Parece dificil, parece lioso, pero creedme, la experiencia y el continuo uso os lo hara saber de memoria. Sabiendo lo minimo de conversion binaria-decimal o logica binaria, es muy facil. Incluso la mejor tecnica es la 'memorieta'. ;D Hay una forma de usar este metodo mas sencilla (muchas gracias por hacerme ver la luz Alejandra :* ) este metodo es el siguiente: r w x ------- 1 2 4 Lo que hacemos es sumar los valores de los parametros que queremos activar para obtener los 3 numeros que forman el parametro para chmod, veamos... ┐Que queremos activar 'r' y 'x' para Propietario? 1 + 4 = 5 ┐Que queremos activar 'r', 'w' y 'x' para Grupo? 1 + 2 + 4 = 7 Y ademas queremos activar 'r' para Otros Usuarios? 1 = 1 Pues ya tenemos 571, el parametro para hacer el chmod... :) El bit SUID El æBit SUIDÆ hace que, durante el uso (normalmente ejecucion) de ese archivo, el usuario tiene los permisos de æsuperuserÆ o ærootÆ. El permiso se coloca en forma de una s mayuscula o minuscula (seg·n distribucion) en la posicion que se coloca el x. El bit s se podra activar para los tipos de usuario o y g (Propietario y Grupo), nunca para o (Otros) por motivos de seguridad. El tema del bit s se explica facilmente con el comando para cambiar la clave de un usuario passwd. Pongamos un ejemplo: El usuario pepe tiene como clave pepe1234 y, como usuario normal que es, no puede ver y mucho menos modificar el contenido del archivo de claves del sistema /etc/passwd. Aun asi, pepe puede cambiar en cualquier momento su clave de usuario. ┐C≤mo es esto? El comando passwd posee el bit SUID en æOtros usuariosÆ con lo que, si pepe va a cambuar su clave, al ejecurar passwd, pepe obtendra derechos de root momentaneos, lo que le permitira escribir en el archivo /etc/passwd para cambiar su clave. Aceptar el permiso del bit SUID es mas de lo mismo, solo es poner un decimal (traduccion de un binario) mßs delante de los tres numeros anteriores. Este numero puede ser 2, 4 o 6. Si s es igual a: 2 - s en 'g' 2 = 010 (0 propietario, 1 grupo, 0 otros) 4 - s en 'o' 4 = 100 (1 propietario, 0 grupo, 0 otros) 6 - s en 'o' y 'g' 6 = 110 (1 propietario, 1 grupo, 0 otros) Tampoco es tan dificil ┐No? - Forma por Parametros La otra forma es mediante parametros, aceptando (+) y denegando (-) los permisos y es un poco mas lento, aunque para algunos, es mas facil... Imaginemos que tenemos un archivo... -rwxrwxr-- root root .............. fulanito.txt ...y hacemos: chmod ug-wx o+x fulanito.txt Esto nos indica: A el propietario y el grupo (æuÆ y ægÆ) le quitas (æ-æ) los permisos de escritura y ejecucion (æwÆ y æxÆ). Y a los otros usuarios (æoÆ) le a±ades (æ+Æ) permisos de ejecucion (æxÆ). Y quedaria: -r--r--r-x root root .............. fulanito.txt Para asignar el bit UID (æsÆ) se usa la misma cantinela... chmod u+s fulanito.txt -r-sr---w- root root .............. fulanito.txt Mhm... ┐mas lento? Si, pero tal vez mas facil de aprender... particularmente este metodo no me gusta nada. Pero alla vosotros y vuestros metodos :) Orden: chown Descripcion: Cambia el propietario de un archivo. Sintaxis: chown <nombre_propietario_nuevo> <archivo/directorio> Ejemplo: chown asejua programa.c Orden: chgrp Descripcion: Cambia el grupo de un archivo. Sintaxis: chgrp <nombre_grupo_nuevo> <archivo/directorio> Ejemplo: chgrp users programa.c En el proximo capitulo : Montaje de unidades de almacenamiento Para mßs ayuda, consulta las paginas man o HowTo existente sobre el tema Nota de la version en texto plano: En la seccion documentos de la web de @_2500hz encontrareis este documento en formato texto plano y html como de costumbre, mas una version en Word97 mejor organizada. Ademas, esta version en ASCii ha sido levemente retocada a causa del ajuste para 78 columnas, pero no se ha eliminado nada importante, solo palabras sueltas. -- Asejua - -- -- - -- - -- - -- - -- - -- @_2500Hz - Underground Scene -- -- - -- - - - -- - -- - -- - -- - -- - -- - -- - -- - -- - -- - -- - -- - --