#include <sys/types.h> #include <sys/param.h> #include <sys/stat.h> #include <stdio.h> #include <unistd.h> /* Check directory Access */ int check_directory_access(char *directory) { struct stat statbuf; printf("Checking %s\n", directory); if (stat(directory, &statbuf) == -1) { printf("FAIL: %s. Could not obtain directory status\n", directory); return 1; } if (statbuf.st_uid != 0) { printf("FAIL: %s. Invalid owner\n", directory); return 1; } if ((statbuf.st_mode & S_IWGRP) || (statbuf.st_mode & S_IWOTH)) { printf("FAIL: %s. Invalid write access\n", directory); return 1; } printf("PASS: %s\n", directory); return 0; } int main(int argc, char *argv[]) { if (argc != 2) { printf("Please enter target directory"); return 1; } return check_directory_access(argv[1]); }