在 Ubuntu(Linux)中,opendir() 用于打开一个目录,其所需权限取决于你要打开的目录本身,而不是目录里的文件。
opendir() 需要的权限opendir(path) 成功的前提是:
x)r) 才能用 readdir() 读取内容r-x (读 + 执行) ✅ 最常用
--x (仅执行) ⚠ 能 opendir,但 readdir 可能失败
r-- (仅读) ❌ opendir 失败
原因通常是:
x)x 权限(无法进入路径)例如:
drwxr----- user group dir/
其他用户无法 opendir()
访问:
/a/b/c
需要:
/a 有 x/a/b 有 x/a/b/c 有 x(和 r)#include <dirent.h>
#include <stdio.h>
int main() {
DIR *dir = opendir("/some/dir");
if (!dir) {
perror("opendir");
return 1;
}
closedir(dir);
return 0;
}
ls -ld /path/to/dir
chmod 755 /path/to/dir
| 操作 | 所需目录权限 |
|---|---|
opendir() |
x |
readdir() |
r + x |
| 遍历子目录 | 父目录 x |
如果你有 具体目录 / 用户 / 错误提示,可以贴出来,我帮你精确分析。