Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2308957
  • 博文数量: 395
  • 博客积分: 10994
  • 博客等级: 上将
  • 技术积分: 5586
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-17 19:49
文章存档

2014年(1)

2013年(10)

2012年(74)

2011年(303)

2010年(7)

分类: LINUX

2011-07-29 15:23:42

关于umask以及umask函数,用户权限的解析

linux下默认情况下rootumask022,其他用户的umask002,但是,用命令和用函数来创建的时候权限是不一样的,呵呵

一。用命令来创建:

文件:

如果你用命令来创建文件的的话,由于处于安全考虑新创建的文件没有执行权力,也就是说权限为:666-022root),666-002(普通用户)

目录:

如果你用命令来创建目录的话,由于目录的执行权力的意思是进入该目录的权限,所以说默认是有的,则权限为:777-022root),777-002(普通用户)

 

[root@localhost p4.8]# touch zhang.txt

[root@localhost p4.8]# ll

-rw-r--r-- 1 root root    0  8 10 08:15 zhang.txt

[root@localhost p4.8]# mkdir fei

[root@localhost p4.8]# ll

总用量 16

drwxr-xr-x 2 root root 4096  8 10 08:27 fei

-rw-r--r-- 1 root root    0  8 10 08:15 zhang.txt

 

二。用函数来创建文件:用函数来创建文件的话,是有执行权限的,如下分析和测试

#include

#include

#include

#include

 

int main(void){

        int fd1,fd2;

 

        fd1=open("test",O_CREAT|O_RDWR,0777);

 

        if(fd1<0){

                perror("Cannot create the test file");

                return 1;

        }

 

        close(fd1);

 

        struct stat file_stat;

 

        if(stat("test",&file_stat)==-1){

                perror("Cannot get the informention of the file!\n");

                return 1;

        }

 

        printf("Permission is: %o\n",file_stat.st_mode&0x1ff);

 

        umask(077);

 

 

        fd2=open("test1",O_CREAT|O_RDWR,0777);

 

        if(fd2<0){

                perror("Cannot create the test file");

                return 1;

        }

 

 

        close(fd2);

 

        if(stat("test1",&file_stat)==-1){

                perror("Cannot get the informention of the file!\n");

                return 1;

        }

 

        printf("After MOdify umask value,Permission is: %o\n",file_stat.st_mode&0x1ff);

}

 

注:程序有开始的777-022到修改后的777-077

 

[root@localhost p4.8]# ls

p4.8.c

[root@localhost p4.8]# gcc -o p4.8 p4.8.c

[root@localhost p4.8]# ls

p4.8  p4.8.c

[root@localhost p4.8]# ./p4.8

Permission is: 755

After MOdify umask value,Permission is: 700

[root@localhost p4.8]# ll

总用量 12

-rwxrwxr-x 1 root root 5967  8 10 08:05 p4.8

-rw-r--r-- 1 root root  780  8 10 08:04 p4.8.c

-rwxr-xr-x 1 root root    0  8 10 08:05 test

-rwx------ 1 root root    0  8 10 08:05 test1

阅读(2774) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~