zoukankan      html  css  js  c++  java
  • 重读APUE(6)-umask

    umask函数设置当前进程的权限为屏蔽字;系统会有一个默认的屏蔽字,为了确保创建文件具有的权限位成功被设置,需要使用umask将屏蔽字置0

    系统屏蔽字用shell查看,比如得到如下结果,其为八进制表示形式,以0开头;这个屏蔽字表示屏蔽掉了组的写和其他的写权限;

    1 0022

    下面的例子很好的说明了umask的使用,首先使用umask(0)将屏蔽字置0,此时新建foo文件,可见其具有设置的全部读写权限;而后用umask屏蔽掉组和其他的读写位,新建bar,可见bar之具有用户读写权限;

    另外需要注意的是,进程设置umask不会改变到系统的umask,只在进程内部有效

     1 #include "apue.h"
     2 #include <fcntl.h>
     3 
     4 #define RWRWRW (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH)
     5 
     6 int
     7 main(void)
     8 {
     9     umask(0);
    10     if (creat("foo", RWRWRW) < 0)
    11         err_sys("creat error for foo");
    12     umask(S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH);
    13     if (creat("bar", RWRWRW) < 0)
    14         err_sys("creat error for bar");
    15     exit(0);
    16 }
    1 $ umask first print the current file mode creation mask
    2 002
    3 $ ./a.out
    4 $ ls -l foo bar
    5 -rw------- 1 sar 0 Dec 7 21:20 bar
    6 -rw-rw-rw- 1 sar 0 Dec 7 21:20 foo
    7 $ umask see if the file mode creation mask changed
    8 002
  • 相关阅读:
    MySQL优化---主从复制
    MySQL性能优化---优化方案
    MySQL性能优化---索引
    MySQL性能优化---定位慢查询
    Linux开机启动过程详解
    naginx
    Git搭建
    脚本中特殊字符
    Shell脚本
    简单Shell脚本(实例)
  • 原文地址:https://www.cnblogs.com/wanpengcoder/p/11762732.html
Copyright © 2011-2022 走看看