2012-01-11 48 views

回答

22

系統調用stat(2)返回struct stat,其中包含st_mode成員。這是ls -l顯示的模式位。

在我的系統中,man 2 stat頁說:

The following flags are defined for the st_mode field: 

    S_IFMT  0170000 bitmask for the file type bitfields 
    S_IFSOCK 0140000 socket 
    S_IFLNK 0120000 symbolic link 
    S_IFREG 0100000 regular file 
    S_IFBLK 0060000 block device 
    S_IFDIR 0040000 directory 
    S_IFCHR 0020000 character device 
    S_IFIFO 0010000 FIFO 
    S_ISUID 0004000 set UID bit 
    S_ISGID 0002000 set-group-ID bit (see below) 
    S_ISVTX 0001000 sticky bit (see below) 
    S_IRWXU 00700  mask for file owner permissions 
    S_IRUSR 00400  owner has read permission 
    S_IWUSR 00200  owner has write permission 
    S_IXUSR 00100  owner has execute permission 
    S_IRWXG 00070  mask for group permissions 
    S_IRGRP 00040  group has read permission 
    S_IWGRP 00020  group has write permission 
    S_IXGRP 00010  group has execute permission 
    S_IRWXO 00007  mask for permissions for others (not in group) 
    S_IROTH 00004  others have read permission 
    S_IWOTH 00002  others have write permission 
    S_IXOTH 00001  others have execute permission 
+4

這裏鏈接到文檔頁面http://linux.die.net/man/2/stat。非常感謝格雷格 – 2012-01-11 01:30:59

2

這是C中的函數,在字符串格式返回文件權限 「rwxr-R--」

char* permissions(char *file){ 
    struct stat st; 
    char *modeval = malloc(sizeof(char) * 9 + 1); 
    if(stat(file, &st) == 0){ 
     mode_t perm = st.st_mode; 
     modeval[0] = (perm & S_IRUSR) ? 'r' : '-'; 
     modeval[1] = (perm & S_IWUSR) ? 'w' : '-'; 
     modeval[2] = (perm & S_IXUSR) ? 'x' : '-'; 
     modeval[3] = (perm & S_IRGRP) ? 'r' : '-'; 
     modeval[4] = (perm & S_IWGRP) ? 'w' : '-'; 
     modeval[5] = (perm & S_IXGRP) ? 'x' : '-'; 
     modeval[6] = (perm & S_IROTH) ? 'r' : '-'; 
     modeval[7] = (perm & S_IWOTH) ? 'w' : '-'; 
     modeval[8] = (perm & S_IXOTH) ? 'x' : '-'; 
     modeval[9] = '\0'; 
     return modeval;  
    } 
    else{ 
     return strerror(errno); 
    } 
} 
+3

雖然這段代碼可能回答這個問題,但提供關於如何解決問題和/或爲什麼解決問題的額外上下文會提高答案的長期價值。 – glennsl 2017-09-26 22:36:31

相關問題