Permisos y propietarios de archivos en Unix. - ALIPSO.COM: Monografías, resúmenes, biografias y tesis gratis.
Aprende sobre marketing online, desarrollo de sitios web gratis en Youtube
Suscribite para recibir notificaciones de nuevos videos:
Viernes 19 de Abril de 2024 |
 

Permisos y propietarios de archivos en Unix.

Imprimir Recomendar a un amigo Recordarme el recurso

Agregado: 12 de ABRIL de 2000 (Por ) | Palabras: 1634 | Votar | Sin Votos | Sin comentarios | Agregar Comentario
Categoría: Apuntes y Monografías > Computación > Seguridad informatica >
Material educativo de Alipso relacionado con Permisos propietarios archivos Unix
  • Unix basico.: ...
  • Apuntes de UNIX 2º CURSO: Informe sobre todo lo que está relacionado con el sistema UNIX.
  • Bases de datos: introducción a los sistemas de archivos.: Almacenamiento. Tipos de acceso. Componentes físicos. Tipos de organización. Accesos a disco. Operaciones sobre ficheros.

  • Enlaces externos relacionados con Permisos propietarios archivos Unix

    PERMISOS Y PROPIETARIOS DE ARCHIVOS EN UNIX

    ============================================

    Todos los archivos y directorios en los Unix's tienen propietarios y permisos,

    es la base de la seguridad de archivos del sistema. Se pueden cambiar los

    permisos y los propietarios para restar o agregar restricciones de acceso.

    Los permisos son tambien los que definen si un archivo se puede ejecutar como

    un comando.

    cuando tipeamos ls -l vemos algo como esto:

    -rwxr-x--- 1 vorax users 65 Dec 13 15:59 prueba*

    drwx------ 2 vorax users 1024 Dec 12 00:02 tmp/

    El primer campo es el que indica los permisos (-rwxr-x---). Tambien vemos que

    "vorax" es el *usuario* propietario del archivo y "users" es el *grupo*

    propietario.

    /tmp es un directorio, el primer caracter de los permisos es una "d".

    Estos son los caracteres que pueden aparecer al principio de los permisos:

    Caracter Significado

    úÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿

    ³ - | Archivo comun ³

    ³ d | Directorio ³

    ³ b | Block Device (disco,CD-ROM,etc) ³

    ³ l | Symbolic Link (BSD o V.4) ³

    ³ s | Socket (BSD o V.4) ³

    ³ = | FIFO (System V, Linux) ³

    ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

    Los permisos se interpretan asi:

    Son 10 caracteres, si quitamos el primero que es el que indica el tipo de

    archivo nos quedan 9 que se agrupan de a tres:

    úÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿

    ³ propietario grupo otros usuarios ³

    ³ (owner) (group) (others) ³

    ³ | rwx | | r-x | | --- | ³

    ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

    r= read-lectura w= write-escritura x=eXecute-ejecucion

    Con estos datos sabemos que el usuario propietario del archivo (owner) puede

    leer(r), escribir(w) y ejecutar(x). Los miembros del grupo propietario pueden

    leerlo(r) y ejecutarlo(x). Los otros usuarios no pueden hacer nada (---)

    En el caso del directorio (/tmp):

    (drwx------)

    En un directorio los caracteres se interpretan asi:

    r= Permite ver el contenido del directorio con ls.

    w= Se pueden crear, mover o borrar archivos dentro del directorio.

    x= Se puede acceder al directorio mediante cd.

    Lo mas comun para un directorio es r-x o rwx.

    Modo numerico

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

    Los permisos pueden representarse con tres numeros octales (base 8) (ej:664)

    y podemos usar el modo numerico para cambiar los permisos a un archivo.

    El primer digito indica los privilegios del propietario, el segundo los del

    grupo y el tercero los de los otros usuarios. Cada digito se obtiene sumando

    todos los privilegios (rwx) de cada propietario (owner,group,others): Cada

    privilegio es un bit de un grupo de 3, su valor posicional si valen 1:

    r=4 w=2 x=1

    úÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ Volviendo a nuestro ejemplo (-rwxr-x---)

    ³owner = rwx = 4+2+1 = 7 ³ la codificacion numerica es 750 y este numero

    ³group = r-x = 4+1 = 5 ³ se obtiene de la forma que se muestra en la figura.

    ³other = --- = 0 ³ Si tomamos cada digito octal como un numero de tres

    ³ 750³ digitos binarios. Y si consideramos que si el

    ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ permiso esta habilitado es 1 y si no 0, entonces

    r-x seria 101 en binario, en decimal 4+0+1=5,y obtenemos un digito del permiso

    octal.

    Los mas comunes son : 0,1,4,5,6,7 y en los tres casos: 600 750 640 644

    SUID: 4000 SGID: 2000 (ver mas adelante)

    CAMBIAR PERMISOS (comando chmod)

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

    Cuando creamos un archivo nos convertimos en sus propietarios y podemos

    cambiar los permisos de este mediante el comando "chmod"

    <=SOLO EL PROPIETARIO PUEDE CAMBIAR LOS PERMISOS=>

    La sintaxis es: chmod <especificacion> archivo_o_directorio

    Hay dos formas de cambiar los permisos: en forma numerica o con codigos de

    letras.

    =Modo numerico=

    (en el prompt del UNIX)

    unix:~$ ls -l prueba

    -rwxr-x--- 1 vorax users 65 Dec 13 15:59 prueba*

    unix:~$chmod 511 prueba

    unix:~$ls -l prueba

    -r-x--x--x 1 vorax users 65 Dec 13 15:59 prueba*

    unix:~$chmod 710 prueba

    unix:~$ls -l prueba

    -rwx--x--- 1 vorax users 65 Dec 13 15:59 prueba*

    Aunque al principio puede parecer dificil, posiblemente el modo numerico

    sea el que mas uses. Arriba explico como se obtiene el numero.

    =Modo simbolico=

    La sintaxis es: chmod [ugoa...][=-+][rwxXstugo][...] pueden hacerse

    multiples operaciones simbolicas separadas por comas.

    1) Primero debemos especificar que permisos queremos modificar mediante una

    letra: u= los del propietario (user)

    g= los del grupo (group)

    o= los de los otros (other)

    a= los de todos (ugo)

    2) Debemos indicar si agregamos o sacamos un permiso, + y - respectivamente

    o si lo modificamos, signo =

    3)Indicamos los permisos mediante el codigo de letras.

    Ejemplo, para agregar el permiso de lectura para el grupo y los otros:

    unix:~$ chmod go+r

    otros ejemplos :

    unix:~$ ls -l prueba

    -rwxr-x--- 1 vorax users 65 Dec 13 15:59 prueba*

    unix:~$ chmod u-w,g-r,o+x prueba

    unix:~$ ls -l prueba

    -r-x--x--x 1 vorax users 65 Dec 13 15:59 prueba*

    unix:~$ chmod u+w,o-x prueba

    unix:~$ ls -l prueba

    -rwx--x--- 1 vorax users 65 Dec 13 15:59 prueba*

    unix:~$chmod a+x,u-rw prueba

    unix:~$ ls -l prueba

    ---x--x--x 1 vorax users 5 Dec 13 15:59 prueba*

    NOTAS

    Estos comandos son equivalentes: chmod ugo+rx =igual a= chmod a+rx

    Se pueden usar comodines: chmod a-r *sec* (saca permiso de lectura a todos

    los archivos que tengan "sec" en su nombre: seco.txt casiseco.txt,etc)

    Varios archivos a la ves: chmod a+x zap.x wedit.x

    Recursivamente (como attrib /s en DOS) chmod a-r * -R (saca permiso de lectura

    a todos los archivos y directorio del directorio actual y subdirectorios)

    Si un directorio tiene permiso de escritura para todos (chmod o+w) cualquiera

    puede borrar los archivos que esten adentro sin importar los permisos.

    Cualquiera con permisos de lectura puede copiar el archivo. El propietario

    de la copia es el que la copio.

    Chmod no cambia los permisos de un link, si no del archivo al que este apunta.

    SUID y GUID

    ===========

    Hay casos en que un usuario comun necesita tener privilegios. Por ejemplo

    el programa passwd que permite cambiar el password de un un usuario necesita

    escribir en /etc/passwd, y un usuario comun no tiene privilegios para hacerlo.

    Para solucionar esto UNIX permite que un programa se 'encubra' bajo la

    identidad de su propietario, asumiendo un UID o GID distinto al del usuario

    que lo ejecuto. Un programa que puede hacer esto se denomina SUID o SGID.

    Cuando un programa SUID se ejecuta, el "effective UID" (EUID) es el del

    propietario del archivo, aunque el usuario que lo ejecuto sea otro.

    Si seteamos los bits de permiso suid o sgid a un archivo ejecutable, otros

    usuarios pueden tener acceso a los mismos recursos (mediante el ejecutable)

    que los propietarios reales. Ejemplo:

    el programa cat que se encuentra generalmente en /bin nos permite ver el

    contenido de un archivo al que tenemos acceso de lectura:

    unix:~$ cat /etc/passwd

    root:KQc4YhmF6pc6X:0:0:root:/root:/bin/bash

    bin:*:1:1:bin:/bin:

    [sigue]

    Los permisos normales de /bin/cat son:

    unix:~$ls -l /bin/cat

    -rwxr-xr-x 1 root bin 7737 Aug 6 1995 /bin/cat*

    SI SOMOS ROOT PODEMOS HACER ESTO:

    unix:~$chmod u+s /bin/cat (agregamos suid a /bin/cat)

    unix:~$ls -l /bin/cat

    -rwsr-xr-x 1 root bin 7737 Aug 6 1995 /bin/cat*

    ( ^-la x de ejecucion fue reemplazada por una "s")

    Entonces cada vez que un usuario usa "cat" toma momentaneamente la identidad

    de su propietario (root) por lo tanto puede leer cualquier archivo aunque

    no tenga permisos reales (si de Carlos) para hacerlo. :)

    Si seteamos suid un shell tenemos acceso de root como si entramos con login

    y password: (HAY QUE SER ROOT PARA HACER ESTO)

    unix:~$cp /bin/sh ./rootsh

    unix:~$chmod u+s rootsh

    unix:~$ls -l rootsh

    -rwsr-xr-x 1 root users 299649 Dec 13 18:56 rootsh*

    unix:~$rootsh

    unix:~# (somos root :)

    Si rootsh tuviera estos permisos:

    -rwsr-sr-x 1 juan clientes 299649 Dec 13 18:56 rootsh*

    Tomariamos la identidad de "juan" y el grupo "clientes", aunque realmente

    fueramos "carlos" del grupo "users".

    NOTAS

    Si encontramos un archivo suid escribible por nosotros es suficiente para

    ganarse el r00t.

    No les recomiendo dejar shells suid root en los lugares que hakean como

    forma para volver a entrar, muchas utilidades de seguridad los detectan

    y hay mejores metodos para asegurarse el reingreso.

    Estos comandos son equivalentes: chmod a+x,u+s =igual a= chmod 4111

    chmod a+x,g+s =igual a= chmod 2111

    chmod u+s,g+s =igual a= chmod 6111

    Sticky Bit= si la ultima x de un archivo es un "t" el programa

    es Sticky. Esta permiso en archivos es obsoleto pero se usa en directorios.

    Este comando muestra todos los SUID find / -type f -perm +u+s -ls

    Si un archivo es SUID o SGID pero no ejecutable (!) se ve una S mayuscula

    prueben!.

    CAMBIAR PROPIETARIOS (chown,chgrp)

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

    Para cambiar el grupo o usuario propietario de un archivo, se debe ser

    "due¤o" del mismo, o root. Para cambiar el grupo se debe pertenecer a el.

    Sintaxis:

    Cambiar grupo : chgrp <grupo> archivo

    Cambiar 'owner': chown <usurio> archivo

    Ejemplos:

    unix:~$chown vorax .hosts_n (cambio el propietario del archivo .hosts_n)

    unix:~$chgrp users .hosts_n (cambio el grupo propietario del archivo)

    unix:~$chown vorax * (todos los archivos del directorio)

    unix:~$chown vorax .titbax prueba ckd.c (varios archivos)

    Si usamos los numeros UID o GID:

    unix:~$chown 501 .rare.txt (507 es el UID del usuario)

    unix:~$chgrp 100 .rare.txt (100 es GID del grupo)

    Todo junto:

    chown usuario:grupo archivo

    unix:~$chown juan:users juan.txt (setea usuario:grupo de una vez)

    unix:~$chown juan: (setea usuario y el grupo con el que esta logeado)

    Y todas las combinaciones posibles...

    Usen el comando id en cada uno de los ejemplos para entender mejor.

    ===========================================================================

    Sacado del e-zine RareGazz nº 10 por BrainSCAN para HackUMA

    Votar

    Ingresar una calificación para del 1 al 10, siendo 10 el máximo puntaje.

    Para que la votación no tenga fraude, solo se podrá votar una vez este recurso.

    Comentarios de los usuarios


    Agregar un comentario:


    Nombre y apellido:

    E-Mail:

    Asunto:

    Opinión:



    Aún no hay comentarios para este recurso.
     
    Sobre ALIPSO.COM

    Monografias, Exámenes, Universidades, Terciarios, Carreras, Cursos, Donde Estudiar, Que Estudiar y más: Desde 1999 brindamos a los estudiantes y docentes un lugar para publicar contenido educativo y nutrirse del conocimiento.

    Contacto »
    Contacto

    Teléfono: +54 (011) 3535-7242
    Email:

    Formulario de Contacto Online »