elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  chmod aleatorio con program en c++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: chmod aleatorio con program en c++  (Leído 3,816 veces)
patilanz


Desconectado Desconectado

Mensajes: 481

555-555-0199@example.com


Ver Perfil WWW
chmod aleatorio con program en c++
« en: 22 Junio 2015, 00:02 am »

Hola escribí esto:

Código
  1. #include <fcntl.h>
  2. #include <stdio.h>
  3. #include <unistd.h>
  4. #include <string.h>
  5.  
  6. int main(){
  7. char name[100];
  8. int i = 0;
  9. int file = -1;
  10. do{
  11. if(file != -1)
  12. close(file);
  13. sprintf(name,"file%d",i);
  14. }while((file = open(name,O_RDONLY)) != -1 && ++i);
  15. file = open(name,O_WRONLY | O_CREAT);
  16. char text[1024];
  17. for(int j = 0;j<i+1;j++){
  18. sprintf(text,"Hola %d veces\n",j);
  19. while(write(file,text,strlen(text)) != strlen(text));
  20. }
  21. close(file);
  22. return 0;
  23. }

luego use un bucle
Código
  1. while true; do ./a.out;done

En el escritorio me aparecieron mucho archivos con sus permisos aleatorios y raros.
Ejemplo:
Código
  1. ----r-Sr-t 1 root     root     14155 jun 21 23:57 file950
  2. --wS---r-x 1 root     root     14170 jun 21 23:57 file951
  3. ---Sr-Sr-x 1 root     root     14185 jun 21 23:57 file952
  4. ------Sr-x 1 root     root     14200 jun 21 23:57 file953
  5. --ws---r-t 1 root     root     14215 jun 21 23:57 file954
  6. -rwxr-Sr-x 1 root     root     14230 jun 21 23:57 file955
  7. -r----Sr-x 1 root     root     14245 jun 21 23:57 file956
  8. -r-xr--r-t 1 root     root     14260 jun 21 23:57 file957
  9. -r-sr--r-t 1 root     root     14275 jun 21 23:57 file958
  10. -r-Sr-Sr-t 1 root     root     14290 jun 21 23:57 file959
  11. -r-Sr--r-T 1 root     root      1348 jun 21 23:57 file96
  12. --wSr--r-x 1 root     root     14305 jun 21 23:57 file960
  13. ---xr--r-x 1 root     root     14320 jun 21 23:57 file961
  14. -rwSr-Sr-t 1 root     root     14335 jun 21 23:57 file962
  15. --wxr-Sr-x 1 root     root     14350 jun 21 23:57 file963
  16. -r-sr--r-t 1 root     root     14365 jun 21 23:57 file964
  17. ---xr--r-t 1 root     root     14380 jun 21 23:57 file965
  18. -rw-r--r-x 1 root     root     14395 jun 21 23:57 file966
  19. -rw-r--r-t 1 root     root     14410 jun 21 23:57 file967
  20. -rwx--Sr-x 1 root     root     14425 jun 21 23:57 file968
  21. ---xr--r-x 1 root     root     14440 jun 21 23:57 file969
  22. -r--r-Sr-T 1 root     root      1362 jun 21 23:57 file97
  23. -r--r--r-x 1 root     root     14455 jun 21 23:57 file970
  24. --w----r-t 1 root     root     14470 jun 21 23:57 file971
  25. -r----Sr-t 1 root     root     14485 jun 21 23:57 file972
  26. -rw---Sr-x 1 root     root     14500 jun 21 23:57 file973
  27. ------Sr-x 1 root     root     14515 jun 21 23:57 file974
  28. --w-r-Sr-t 1 root     root     14530 jun 21 23:57 file975
  29. -rw---Sr-t 1 root     root     14545 jun 21 23:57 file976
  30. -rwx--Sr-t 1 root     root     14560 jun 21 23:57 file977
  31. ---x--Sr-t 1 root     root     14575 jun 21 23:57 file978
  32. -------r-t 1 root     root     14590 jun 21 23:57 file979
  33. ----r-Sr-T 1 root     root      1376 jun 21 23:57 file98
  34. -r-sr--r-t 1 root     root     14605 jun 21 23:57 file980
  35. -rwxr--r-t 1 root     root     14620 jun 21 23:57 file981
  36. --wxr-Sr-t 1 root     root     14635 jun 21 23:57 file982
  37. --ws---r-t 1 root     root     14650 jun 21 23:57 file983
  38. ---Sr--r-x 1 root     root     14665 jun 21 23:57 file984
  39. -rw-r--r-x 1 root     root     14680 jun 21 23:57 file985
  40. -rw-r-Sr-t 1 root     root     14695 jun 21 23:57 file986
  41. --wxr-Sr-t 1 root     root     14710 jun 21 23:57 file987
  42. -r-S--Sr-t 1 root     root     14725 jun 21 23:58 file988
  43. --wsr--r-x 1 root     root     14740 jun 21 23:58 file989
  44. --ws---r-T 1 root     root      1390 jun 21 23:57 file99
  45. --wS---r-t 1 root     root     14755 jun 21 23:58 file990
  46. -r-xr--r-x 1 root     root     14770 jun 21 23:58 file991
  47. -rwS--Sr-x 1 root     root     14785 jun 21 23:58 file992
  48.  

Porque??

Saludos


En línea

MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: chmod aleatorio con program en c++
« Respuesta #1 en: 22 Junio 2015, 00:47 am »

Yo creo que esta pregunta iría mejor en C. Yo no puedo ver que hagas chmod pero bueno, no se mucho de C en todo caso:

Código
  1. file = open(name,O_WRONLY | O_CREAT);
Esta creando tus archivos raros.


En línea

patilanz


Desconectado Desconectado

Mensajes: 481

555-555-0199@example.com


Ver Perfil WWW
Re: chmod aleatorio con program en c++
« Respuesta #2 en: 22 Junio 2015, 10:12 am »

Si, esta parte me crea el archivo pero se produce lo mismos si hago un chmod con 0x00777

Código
  1. chmod(fileName,0x00777);

Aunque aqui el resultado es siempre -r-xrwSrwt

Que significa ?? Porque nunca he visto una S mayúscula y la t no me cuadran.

Y el open(..) debería de crear un archivo con los mismos permisos que el programa que lo esta ejecutando.
En línea

banwave_

Desconectado Desconectado

Mensajes: 14


Ver Perfil
Re: chmod aleatorio con program en c++
« Respuesta #3 en: 22 Junio 2015, 18:49 pm »

El chmod en C se usa sin "0x", prueba:

Código
  1. chmod(fileName,00777);

Para el caso de tu programa, creo que al OPEN debes indicar cada permiso con RWX y asi tu umask te limita en la creacion del archivo, ejemplo:

Código
  1. file = open(name,O_RDWR | O_CREAT, S_IRWXU | S_IRWXG | S_IRWXO);

Y si tu umask es 0022, entonces tus archivos se crearan con "-rwxr-xr-x"..

En línea

patilanz


Desconectado Desconectado

Mensajes: 481

555-555-0199@example.com


Ver Perfil WWW
Re: chmod aleatorio con program en c++
« Respuesta #4 en: 22 Junio 2015, 22:49 pm »

Vale pero que significan los permisos que se crearon antes ? La S mayúscula. Es un archivo sin permisos?
En línea

banwave_

Desconectado Desconectado

Mensajes: 14


Ver Perfil
Re: chmod aleatorio con program en c++
« Respuesta #5 en: 22 Junio 2015, 23:27 pm »

La S mayuscula son permisos especiales:

Citar
    `s'
    If the setuid or setgid bit and the corresponding executable bit are both set.

    `S'
    If the setuid or setgid bit is set but the corresponding executable bit is not set.

Te paso esta liga con un poco de info.
http://rm-rf.es/permisos-especiales-setuid-setgid-sticky-bit/
http://www.linuxnix.com/2011/12/suid-set-suid-linuxunix.html

Lo que aun no reviso es porque te asigno esos permisos random, apenas voy hacer debug de tu programa  :xD
En línea

patilanz


Desconectado Desconectado

Mensajes: 481

555-555-0199@example.com


Ver Perfil WWW
Re: chmod aleatorio con program en c++
« Respuesta #6 en: 23 Junio 2015, 03:37 am »

Gracias por los links
Me los leí y probé esto:

Tengo 1 shell y una carpeta

Código
  1. -rwsrwxr-x 1 root     root       25 jun 23 03:29 test.sh
  2. drwxr-xr-x 2 root     root     4096 jun 23 03:28 a

Shell:
Código
  1. #!/bin/sh
  2. id
  3. chmod 777 a

Ahora entro desde el usuario y abro la shell test.sh que contiene el SUID por lo que debería de tener los mismos permisos que el usuario creador. Pero no es asi...
En línea

banwave_

Desconectado Desconectado

Mensajes: 14


Ver Perfil
Re: chmod aleatorio con program en c++
« Respuesta #7 en: 23 Junio 2015, 19:37 pm »

Man.... no es por nada, pero tienes que buscar un poco antes de publicar las dudas, hay mucha info sobre estos temas:
http://unix.stackexchange.com/questions/364/allow-setuid-on-shell-scripts

Mientras tanto, tu programa funciono? o al final que necesitas hacer?

En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
No funciona chmod +x para dar permisos
GNU/Linux
ithory 7 5,486 Último mensaje 20 Noviembre 2012, 15:57 pm
por adgellida
chmod PHP no funciona
PHP
KateLibby 6 3,099 Último mensaje 10 Septiembre 2014, 00:04 am
por MinusFour
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines