C program to test file permissions in Linux

One way to check the file permissions is using “access” system call.

 int access(const char *pathname, int mode); 

This system call requires a test mode to be passed, R_OK, W_OK, and X_OK test whether the file exists and grants read, write, and execute permissions, respectively.

 $ vim check_file_permissions.c 
[bash] #include <stdio.h> // for printf #include <stdlib.h> // for malloc #include <string.h> // for strcpy #include <unistd.h> // for access int main(int argc, char **argv) { int result; //allocate memory of 512 bytes char *filename = (char *)malloc(512); if (argc < 2) { strcpy(filename, "/usr/bin/adb"); } else { strcpy(filename, argv[1]); } result = access (filename, R_OK); // R_OK for readable if ( result == 0 ) { printf("%s is readable\n",filename); } else { printf("%s is not readable\n",filename); } result = access (filename, W_OK); // W_OK for writeable if ( result == 0 ) { printf("%s is Writeable\n",filename); } else { printf("%s is not Writeable\n",filename); } result = access (filename, X_OK); // X_OK for executable if ( result == 0 ) { printf("%s is executable\n",filename); } else { printf("%s is not executable\n",filename); } //free allocated memory free(filename); return 0; } [/bash]
 $ gcc -o check_file_permissions check_file_permissions.c 
$ ./check_file_permissions check_file_permissions.c
check_file_permissions.c is readable
check_file_permissions.c is Writeable
check_file_permissions.c is not executable

Now, lets check the file permissions of a binary file adb which is already installed as part of android utilities.

$ ./check_file_permissions
/usr/bin/adb is readable
/usr/bin/adb is not Writeable
/usr/bin/adb is executable

Leave a Comment