Pregunta

¿Cómo puedo obtener los permisos de acceso de los propietarios de archivos utilizando estadísticas de sys / stat.h usando C ++ en Linux Kubuntu?

En la actualidad, me sale el tipo de archivo de la siguiente manera:

  struct stat results;  

  stat(filename, &results);

  cout << "File type: ";
  if (S_ISDIR(results.st_mode))
    cout << "Directory";
  else if (S_ISREG(results.st_mode))
    cout << "File";
  else if (S_ISLNK(results.st_mode))
    cout << "Symbolic link";
  else cout << "File type not recognised";
  cout << endl;

Sé que debería utilizar bits de modo de archivo de t_mode, pero no sé cómo. Ver sys / stat.h

¿Fue útil?

Solución

  struct stat results;  

  stat(filename, &results);

  cout << "Permissions: ";
  if (results.st_mode & S_IRUSR)
    cout << "Read permission ";
  if (results.st_mode & S_IWUSR)
    cout << "Write permission ";
  if (results.st_mode & S_IXUSR)
    cout << "Exec permission";
  cout << endl;

Otros consejos

Los bits de permiso de propietario están dadas por la S_IRWXU macro desde <sys/stat.h>. El valor se multiplica por 64 (0100 octal), por lo tanto:

cout << "Owner mode: " << ((results.st_mode & S_IRWXU) >> 6) << endl;

Esto imprimirá un valor entre 0 y 7. Hay máscaras similares para grupo (S_IRWXG) y otros (S_IRWXO), con cambios de 3 y 0, respectivamente. También hay máscaras separadas para cada uno de los 12 bits de permisos individuales.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top