mkdir中设置文件夹访问权限不起作用
2013-01-29 21:14
176 查看
问题描述:
在使用下面函数设置文件夹访问权限时,发现创建的文件夹的访问权限其实不是自己传进去的mode权限。
int mkdir(const char *pathname, mode_t mode)
原因解释如下:
man 2 mkdir 告诉我们:The argument mode specifies the permissions to use. It is modified by the processâs umask in the usual way: the permissions of the created directory are (mode & ~umask & 0777),意思就是,用mkdir创建的文件夹的访问权限不是mode ,而是mode & ~umask & 0777,这里的umask是“文件夹默认权限”,即“当前用户在建立文件或目录时候的属性默认值”。
知道了 mode & ~umask & 0777 这个公式,就明白为什么我们设了mode,却得不到想要的权限了。
解决办法:
先mkdir,然后chmod。
注意:
下面函数中的mode与mkdir中的类似,也存在umask的计算,因此,建议,在open成功后,再做一遍chmod操作,以确保创建的文件的访问权限是正确的。
int open(const char *pathname, int flags, mode_t mode)
在使用下面函数设置文件夹访问权限时,发现创建的文件夹的访问权限其实不是自己传进去的mode权限。
int mkdir(const char *pathname, mode_t mode)
原因解释如下:
man 2 mkdir 告诉我们:The argument mode specifies the permissions to use. It is modified by the processâs umask in the usual way: the permissions of the created directory are (mode & ~umask & 0777),意思就是,用mkdir创建的文件夹的访问权限不是mode ,而是mode & ~umask & 0777,这里的umask是“文件夹默认权限”,即“当前用户在建立文件或目录时候的属性默认值”。
知道了 mode & ~umask & 0777 这个公式,就明白为什么我们设了mode,却得不到想要的权限了。
解决办法:
先mkdir,然后chmod。
注意:
下面函数中的mode与mkdir中的类似,也存在umask的计算,因此,建议,在open成功后,再做一遍chmod操作,以确保创建的文件的访问权限是正确的。
int open(const char *pathname, int flags, mode_t mode)
相关文章推荐
- 设置磁盘,文件夹,文件访问权限
- 在Windows Server 系统中根据用户对文件夹设置访问权限设置的方法
- PHP对文件夹做访问权限设置
- 如何快速设置Windows XP系统中某个文件夹对某用户的访问权限
- 用cacls命令设置磁盘,文件夹,文件访问权限
- apache环境下禁止某文件夹内运行PHP脚本、禁止访问文件或目录执行权限的设置方法
- 配置共享文件夹--不同文件夹设置不同访问权限
- Web.config 设置项目文件夹的访问权限
- 为AD安全组或账户设置Sharepoint库文件夹访问权限 推荐
- 设置文件夹访问权限,非文件夹属性
- XP设置不同用户对硬盘和文件夹的访问权限
- XP操作系统文件夹访问权限设置
- C# 设置文件夹访问权限
- linux设置其他用户可以访问本用户下的文件夹的权限
- php的mkdir()函数创建文件夹比较安全的权限设置方法
- XP文件夹访问权限设置
- 在XP操作系统中设置文件夹的访问权限
- XP中文件夹访问权限的设置
- Win2003共享文件夹权限设置以及如何不需要密码访问共享文件?
- Windows中合理设置共享文件夹访问权限