clinuxchmod

How to change/show permissions in C


I am new to C programming and I'd like to implement chmod command on files of a dir and subdir. How can I change/show permissions with a C code? Could someone help with a example? I would appreciate if anyone can provide me a code.


Solution

  • There's a chmod function. From man 3p chmod:

    SYNOPSIS
       #include <sys/stat.h>
    
       int chmod(const char *path, mode_t mode);
    
    ...
    

    If you want to read the permissions, you'd use stat. From man 3p stat:

    SYNOPSIS
       #include <sys/stat.h>
    
       int stat(const char *restrict path, struct stat *restrict buf);
    
    ...
    

    If you want to do it recursively like you mentioned, you'll have to do the looping over results of readdir yourself. Caveat!: you will have to do setting the permissions from bottom-up, because, for example, if you set the top-directory to read-only, you will not be allowed to set anything below it.