Obtener los permisos de acceso de usuario utilizando C ++ y stat
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
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