Файл stat () vs access () для проверки прав доступа к каталогу

Я успешно использовал как stat () , так и access () по отдельности, чтобы определить, есть ли у пользователя доступ на чтение или чтение / запись к каталогу. .

Мой вопрос: - Есть ли предпочтительный метод? Я вижу множество примеров с использованием stat , но для моей цели доступ кажется более легким и служит цели.
- Есть ли проблемы (например, с безопасностью) с тем или другим? - Возникли проблемы с моим подходом?

Вот псевдокод (воссоздание из памяти без компиляции):

       // Using access():
    bool readAccessPermission = false; 
    bool writeAccessPermission = false;

    if (mode == 'r'){
            if (access(directory, R_OK) == 0)
                    readAccessPermission = true;                        
    }
    else{
            if (access(directory, R_OK && W_OK) == 0)
                    readAccessPermission = true;
                    writeAccessPermission = true;
    }


    // vs. using stat function
    // assume I already called stat(directory) and have the object


    bool readAccessPermission = false; 
    bool writeAccessPermission = false;

    var retmode = ((stats.mode) & (0777));

    if (modeString == 'r'){ 
        if ((retmode) & (consts.S_IRUSR)){
            readAccessPermission = false; 
        }    
    } 
    else{ 
        if ((retmode) & (consts.S_IRUSR)){
            readAccessPermission = true; 

            if ((retmode) & consts.S_IWUSR)){               
                writeAccessPermission = true; 
            }
        }
    }
8
задан BartoszKP 31 August 2015 в 13:36
поделиться