ユーザーがディレクトリへの読み取りアクセス権または読み取り/書き込みアクセス権を持っているかどうかを判断するために、 両方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;
}
}
}