heh! nº1:(0x006):06/01/2000 << Back To heh! nº 1
-=Atributos de archivos en Linux=- Los archivos en linux poseen informacion complementaria, ademas de un nombre, una cierta cantidad de bytes, fecha y un formato. Los archivos de plataformas *nix tienen un propietario, pemisos y un grupo. Linux posee cuatro comandos que nos permiten cambiar esos atributos: chmod ( permisos del propietario), chown (due#o del file), chgrp (grupo del file). chown = change owner chgrp = change group chmod = change mode <--(por lo menos asi lo veo yo) Antes tienes que saber que cuando haces un ls -l, y aparece algo asi: -rw-rw-r-- 1 root root 12334 Jan 2 03:51 prueba ~~|~~~~~~ El primer lugar pertenecen al tipo de archivo (en esta nota no es importante), los segundos tres lugares pertenecen a los permisos otorgados al due#o del file (rw-), los segundos tres lugares a los otorgados al grupo (rw-) y los ultimos tres lugares a los permisos de otros usuarios que no pertenecen al grupo (r--). Ahora si podemos ver chmod. Sintaxis: chmod [opciones] [(u) (o) (g) (a)] [(+) (-) (=)] [(r) (w) (x)] [archivos] Con esto indicamos que parte de los usuarios queremos modificar: u El due#o del file g Otros usuarios que formen parte del grupo del file o Los demas usuarios a Todos los usuarios Aca le decimos de que manera modificamos el acceso: + Agrega los permisos indicados - Quita los permisos indicados = A#ade los permisos indicados a un archivo Y por ultimos estas letras indican los permisos: r Permiso de lectura w Permiso de escritura x Permiso de ejecucion Ah... tambien habran visto en la sintaxis a [opciones]. Estas se pueden utili- zar en los tres comandos (chmod, chown y chgrp). -f No muestra los errores -R Agrega los cambios a un directorio y su contenido -c Muestra los cambios realizados (ta' bueno este che!) -v Explica que acciones realizo sobre el archivo Pero hay mas, mis fieles seguidores... tal vez se le complica tanto lio de letras, por eso los arabes inventaron los numeros decimales [pzi: ehm... el chmod se usa con base octal, no decimal :)] y a travez de esta tablita, el uso de CHMOD se te puede simplificar. ------------------------------------------------------------------- | Permiso Numerico Caracter | |~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~| | Solo lectura 4 r-- | | Solo escritura 2 -w- | | Solo ejecucion 1 --x | | Lectura y escritura 6 rw- | | Lectura y ejecucion 5 r-x | | Lectura, escritura y ejecucion 7 rwx | |-----------------------------------------------------------------| Veamos... Si tenemos un file con los permisos -rwxrwxrwx y yo ejecuto chmod asi... chmod 727 pepito es lo mismo que... chmod u-rx pepito o mas facil supongamos que queremos darle todos los permisos a todos los usuarios, lo ejecutamos de esta manera... chmod 777 pepito Entendiste?... primer 7 afecta al due#o, el segundo al grupo y el tercero a otros usuarios. Bue... creo que acabamos con este comando, sigamos con CHOWN Su sintaxis es: chown [opciones] [due#o]:[grupo] [archivos] (Recuerda que "opciones" son las mismas utilizadas por chmod) Ejemplo: chown pedro:libres chanchu.txt Este ejemplo, cambia en el archivo chanchu.txt que se encuentra en el directorio actual el propietario a "pedro" y a "libres" el grupo, siempre y cuando estos datos sean validos. Estos datos los encontras en los files /etc/passwd y /etc/group. Tambien encontras en ellos el UID y GID, son numeros identificatorios que se le asignan a cada usuario y a cada grupo. Estos numeros pueden ser reemplazados en la sintaxis de esta manera... chown 500:250 chanchu.txt 500 hace referencia al UID del nuevo propietario y 250 al nuevo grupo. Recorda, que el UID y el GID deben ser validos!!!!! No siempre es necesario ingresar los dos datos, solo el que necesites cambiar. chown 500: chanchu.txt chown :250 chanchu.txt El ultimo ejemplo cumple la misma funcion que el comando CHGRP... chgrp [opciones] [grupo] [archivos] ==-^-^-^--BonusTrack--^-^-^-==CHROOT==--....... El se#or Zomba (si, si! se#or!!) me pidio que le agregara a la nota el comando CHROOT, aqui esta una simples descripcion, de un comando muy util para la programacion segura. Basicamente los que este comando hace es desterrar procesos a un subdirectorio elegido, esto quiere decir que un proceso no puede acceder a otro subdirectorio anterior a el. Esto nos ayuda en la seguridad ante ataques no permitiendo ingresar a lugares donde haya informacion importante y tambien con la ejecucion de programas donde no sabemos que efectos puede trar al sistema. Este comando debe ser ejecutado como usuario "root". A partir de su ejecucion todas los nuevos procesos dependeran del nuvo directorio raiz indicado y no se podra acceder a ninguno fuera del nuevo raiz creado. La sintaxis basica es: chroot [directorio] [comando] Donde "directorio" se refiere al nuevo directorio del root y "comando" al comando que va a correr bajo ese directorio. Por ejemplo: chroot /prueba date Tendremos que crear el subdirectorio "prueba" y ademas el subdirectorio "bin" donde ubicaremos el archivo "date", que debe estar ahi para que pueda ser ejecutado. Es la misma ruta de subdirectorios que se encontraba dentro del directorio raiz "/" pero ahora colgando desde "prueba". Por eso deben copiarse antes de hacer un chroot todas las librerias dependientes del archivo a ejecutar. Con esto llegamos a su fin, espero haber sido claro con esta breve pasada sobre un comando que tiene mucho que decir. -==MacMas==- macmas@teletel.com.ar ---------------------------------- CUT HERE! ---------------------------------- <++> chown.c /* Hola Queridos HEH!.c Reader's: Bueno, este programa cambia de user un archivo. Realmente, estube con algunos problemas, y no pude armarlo como queria. Pero por alli, quizas halla uno. No es muy USER-FRIENDLY, tener un chown que para cambiar de user un archivo halla que poner el UID y el GID, pero pido disculpas ya que cerramos la ezine rapidamente, y tuve algunos problemas y no pude armarlo como deberia. Quizas, por alli halla algun Coder que quiera hacerlo, es simple: Hagan un programa que abre el /etc/passwd, que lea el user y compare con el ingresado por el usuario. Cuando lo encuentra, que tome el UID y GID del usuario y eso es todo simplemente. Bueno, este programa fue escrito para el Texto escrito por Macmas sobre Permisos de Archivos para la HEH! edicion 1 Escrito por Zomba (zomb4@yahoo.com) */ #include<stdio.h> #include<sys/types.h> #include<sys/stat.h> #include<pwd.h> int uid; int gid; main (int argc, char *argv[]) { FILE *fd; printf("Ahora podes cambiar tus permisos con el...\n -=HEH!chowner=- by Zomba(zomb4@yahoo.com)\n"); printf("A solo 9.90$ + IVA el minuto\n"); if(argc!=4) { printf("Uso: %s <archivo> <UID del user> <GID del user>\n",argv[0]); exit(1); } if((fd=fopen("/etc/passwd", "r"))==NULL) { printf("Error en el archivo /etc/passwd\n"); exit(1); } uid=atoi(argv[2]); gid=atoi(argv[3]); chown(argv[1], uid, gid); printf("Permiso Cambiado...\n Read HEH!\n FEEL HEH!\n BE HEH!\nZomba"); } <--> ----------------------------------- CUT HERE! --------------------------------- -EOF-