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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Como parsear los distintos permisos chmod() c / c++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Como parsear los distintos permisos chmod() c / c++  (Leído 1,718 veces)
d91

Desconectado Desconectado

Mensajes: 165


Ver Perfil
Como parsear los distintos permisos chmod() c / c++
« en: 1 Junio 2018, 01:42 am »

Hola, tengo una tarea de quitar / poner permisos a archivos asi como lo hace chmod(), pero el usuario me dira cuales quitara / pondra, entonces estoy buscando una forma de almacenar los diversos codigos para pasarselo a chmod() segun me los diga el usuario (ya intente meter los codigos en un arreglo pero me lanza errores y como cadena no funciona), alguien me puede brindar una idea o tenga algun algoritmo
Código
  1. #include <stdio.h>
  2. #include <sys/stat.h>
  3. #include <iostream>
  4. #include <sys/types.h>
  5.  
  6. using namespace std;
  7.  
  8. int main(int argc, char *argv[]){
  9.  
  10. int resultado;
  11.  
  12. char archivo[100];
  13.  
  14. //char permisos[100] = "S_IWOTH | S_IROTH";
  15.  
  16. cout<<"\nIngrese nombre del archivo: ";
  17. cin>>archivo;
  18.  
  19. //resultado = chmod(archivo, permisos);
  20.  
  21. resultado = chmod(archivo, S_IWOTH | S_IROTH);
  22.  
  23. cout<<"\nResultado: "<<resultado<<"\n";
  24.  
  25. return 0;
  26.  
  27. }
  28.  


En línea

SrMcLister

Desconectado Desconectado

Mensajes: 35



Ver Perfil
Re: Como parsear los distintos permisos chmod() c / c++
« Respuesta #1 en: 2 Junio 2018, 13:58 pm »

Buenas d91.

Los permisos disponibles para chmod son:
0 (cero) = Sin permisos
1 = permiso de ejecutar únicamente
2 = permiso de escribir solamente
3 = escribir y ejecutar
4 = permiso de leer
5 = leer y ejecutar
6 = leer y escribir
7 = leer, escribir y ejecutar

Al usar CHMOD tienes 3 grupos de números, lo cual representa igualmente 3 grupos de usuarios:
1. Owner o User, el cual de manera general es el webmaster
2. Group, un grupo de usuarios configurado por el webmaster
3. World o Anyone, que es básicamente cualquier usuario que usa tu sitio web.

Como tu tarea será a nivel de usuario el 2 y el 3 no se toca, o le pones los mismos que al owner.

Por lo tanto yo haría un programilla tal que fuera un menú y un switch.

Código
  1. #include <stdio.h>
  2. #include <sstream>
  3. #include <stdlib.h>
  4. #include <iostream>
  5. using namespace std;
  6.  
  7. int menuChmod(){
  8.   int eleccion;
  9.   cout << "+++++++MENU+++++++" << endl;
  10.   cout << "1 - Solo ejecutar" << endl;
  11.   cout << "2 - Solo escribir" << endl;
  12.   cout << "3 - Escribir y ejecutar" << endl;
  13.   cout << "4 - Solo leer" << endl;
  14.   cout << "5 - Leer y ejecutar" << endl;
  15.   cout << "6 - Leer y escribir" << endl;
  16.   cout << "7 - Leer, escribir y ejecutar" << endl;
  17.   cout << "Ingrese eleccion: ";
  18.   cin >> eleccion;
  19.   return eleccion;
  20. }
  21.  
  22. int main(int argc, char *argv[]){
  23.  
  24.    char archivo[100];
  25.    ostringstream oss;
  26.    oss << "chmod ";
  27.  
  28.    cout<<"\nIngrese nombre del archivo: ";
  29.    cin>>archivo;
  30.  
  31.    switch(menuChmod()){
  32.        case 1: {oss << "100 "<<archivo;
  33.                 system((oss.str()).c_str());
  34.                 break;
  35.                }
  36.        case 2: {oss << "200 "<<archivo;
  37.                system((oss.str()).c_str());
  38.                break;
  39.                }
  40.        case 3: {oss << "300 "<<archivo;
  41.                 system((oss.str()).c_str());
  42.                 break;
  43.                }
  44.        case 4: {oss << "400 "<<archivo;
  45.                system((oss.str()).c_str());
  46.                break;
  47.               }
  48.        case 5: {oss << "500 "<<archivo;
  49.                 system((oss.str()).c_str());
  50.                 break;
  51.                }
  52.        case 6: {oss << "600 "<<archivo;
  53.                 system((oss.str()).c_str());
  54.                 break;
  55.                }
  56.        case 7: {oss << "700 "<<archivo;
  57.                 system((oss.str()).c_str());
  58.                 break;
  59.                }
  60.        default:;
  61.    }
  62.  
  63.    ostringstream ls;
  64.    ls << "ls -la | grep " << archivo;
  65.    system((ls.str()).c_str());
  66.  
  67.    return 0;
  68. }

Lo hice con system porque desconozco como funciona chmod en la libreria que usaste.
La idea está en el codigo.
SI al grupo y a todo el mundo quieres asignarle los mismos permisos, en vez de 100, sería 111, y así con todos.

Espero haberme explicado bien.
Un Saludo.


« Última modificación: 2 Junio 2018, 14:48 pm por SrMcLister » En línea

Código
  1. return((u.areHappy() && u.knowIt()) ? u.clapYourHands() : u.goFuckYourself());
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Como Grabar los extras de dos dvd´s distintos en uno solo?¿?¿
Multimedia
Murnau_Vs_Bunuel 3 1,933 Último mensaje 11 Enero 2005, 00:23 am
por LuChO-PuChO
¿Como creo DVD con una compilacion de extras de distintos DVD's?
Multimedia
robelastik 1 1,535 Último mensaje 12 Diciembre 2005, 20:48 pm
por Sourraund
Como cortar una imagen en distintos trozos
Desarrollo Web
pajaras 3 3,268 Último mensaje 10 Septiembre 2011, 01:02 am
por pajaras
No funciona chmod +x para dar permisos
GNU/Linux
ithory 7 5,497 Último mensaje 20 Noviembre 2012, 15:57 pm
por adgellida
[C]Como puedo parsear un simple comando
Programación C/C++
huchoko 9 3,066 Último mensaje 13 Febrero 2019, 22:48 pm
por ThunderCls
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines