读书人

《UNIX环境高级编程》札记-umask函数

发布时间: 2013-10-08 17:02:59 作者: rapoo

《UNIX环境高级编程》笔记--umask函数

umask函数为进程设置文件模式创建屏蔽字,并返回以前的值。函数的定义如下:


所以0002代表屏蔽了其他写权限。如果是0077呢,代表屏蔽了组读写执行和其他读写执行。


实践:

int main(void){        umask(S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH|S_ISUID|S_ISGID);        if(creat("a",S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH|S_ISUID|S_ISGID)<0){                perror("creat");                return -1;        }        return 0;}
运行结果:

yan@yan-vm:~/apue$ ll a
-rwS--S--- 1 yan yan 0 Jun 12 13:32 a

还是成功设置了setuid和setgid,在网上查了下有人说umask函数会自动清除mode的setuid,setgid和stick标志

位,所以在umask中就不需要设置设3个标志位,虽然不是权威的资料,但是从现象上来看是正确的,如果有人知

道也请在评论中告诉我,谢谢~

读书人网 >编程

热点推荐