Как изменить / показать разрешения в C - PullRequest
6 голосов
/ 29 марта 2010

Я новичок в программировании на C и хотел бы реализовать команду chmod для файлов dir и subdir. Как я могу изменить / показать разрешения с кодом C? Может ли кто-нибудь помочь с примером? Буду признателен, если кто-нибудь сможет предоставить мне код.

Ответы [ 3 ]

11 голосов
/ 29 марта 2010

Есть функция chmod. От man 3p chmod :

SYNOPSIS
   #include <sys/stat.h>

   int chmod(const char *path, mode_t mode);

...

Если вы хотите прочитать разрешения, вы должны использовать stat. От человек 3p стат :

SYNOPSIS
   #include <sys/stat.h>

   int stat(const char *restrict path, struct stat *restrict buf);

...

Если вы хотите сделать это рекурсивно, как вы упомянули, вам придется выполнить цикл по результатам readdir самостоятельно.

2 голосов
/ 29 марта 2010

с библиотекой GNU C вы сможете сделать это напрямую с

int chmod (const char *filename, mode_t mode)
int chown (const char *filename, uid_t owner, gid_t group)

проверить это здесь .. все эти функции в sys/stat.h

0 голосов
/ 03 июня 2015

пример: (показать / проверить права доступа)

struct stat st; 
int ret = stat(filename, &st);
if(ret != 0) {
    return false;
}   
if((st.st_mode & S_IWOTH) == S_IWOTH) {

} else {

}
...