umask函数笔记
来源:互联网 发布:狩猎者安全防护软件 编辑:程序博客网 时间:2024/05/20 02:27
当我们使用creat函数时候,可以设置文件的权限。但是是不是creat想设置什么权限就设置什么权限呢?
当我们在终端输入umask -S的时候
表面我们所在的用户可以设置的权限。
同样在我们使用进程创建文件的时候,并不是可以使用creat函数为文件添加任何权限。
Creat函数的权限是进程权限的子集。换句话说,当进程只能具有的是u=rwx,g=rx,o=rx的时候。我们使用creat函数创建文件设置,u=rwx,g=rwx,o=rwx。这时候所创建的文件权限只能是u=rwx,g=rx,o=rx。Creat只能在进程权限的范围内活动。
现在引用umask函数,umask函数为进程设置文件模式创建屏蔽字。每个进程都有默认的防止权限,而umask这事更改防止权限
#include <stdio.h>
#include <fcntl.h>
#define RWRWRW (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH)
int main()
{
umask(0);
if(creat("foo1",RWRWRW)<0)
printf("foo\n");
umask(S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH);
if(creat("bar1",RWRWRW)<0)
printf("bar\n");
exit(0);
}
这时候foo1具有u=rw,g=rw,o=rw的权限,bar1具有u=rw权限。因为umask屏蔽掉了S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH这四个权限
对creat来说,当进程屏幕了某些权限时候,creat为文件添加这些权限也无效。
umask(creat)也可以使用另外一种屏蔽(添加)权限的方法。
所有上面代码也可以写成
#include <stdio.h>
#include <fcntl.h>
#define RWRWRW (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH)
int main()
{
umask(0);
if(creat("foo1",077)<0)
printf("foo\n");
umask(066);
if(creat("bar1",077)<0)
printf("bar\n");
exit(0);
}
Umask函数只改变进程权限,不改变用户权限。
- umask函数笔记
- 《UNIX环境高级编程》笔记--umask函数
- umask 函数
- umask 函数
- umask()函数
- umask 函数
- umask函数
- umask函数
- umask()函数
- Linux学习笔记7——umask函数
- 《UNIX环境高级编程》笔记11--umask函数
- umask()函数 -- linux函数
- umask( )函数、setsid( )函数
- linux中的 umask 函数
- open|creat & umask函数
- umask函数的用处
- umask函数linux
- APUE学习笔记:umask
- HTML中form标签
- 14. 代码审查
- [每日一题] OCP1z0-047 :2013-08-12 view视图的描述哪些是正确的?...............................32
- objective-c 参考学习资料---来自台湾海峡兄弟
- 【C基础】动态内存分配
- umask函数笔记
- UNIX操作系统
- <C++沉思录>学习笔记
- ubuntu command for me
- 二叉树遍历方式之间的关系(递归)
- boost库
- Javascript中Dom常用操作总结
- CSS和HTML结合的方式
- java 数据库编程