zoukankan      html  css  js  c++  java
  • (转)go新建文件权限与设置不符

    原文:https://blog.csdn.net/lipengfeihb/article/details/54415283

    一. 问题

    fileName := "/Users/my/tests/perm_file"
    f, _ := os.OpenFile(fileName, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0666)
    //代码
    f.Close()


    上述代码是打开一个文件,如果文件不存在则创建一个新文件,同时权限设置为0666(-rw-rw-rw-),但实际生成的文件权限可能与你认为的不一致:

    bogon:tests didi$ ll perm_file
    -rw-r--r-- 1 my staff 0 1 12 16:06 perm_file

    这个跟umask值相关,下面说明下umask

    功能说明:指定在建立文件时预设的权限掩码。
    语  法:umask [-S][权限掩码]
    补充说明:umask可用来设定[权限掩码]。[权限掩码]是由3个八进制的数字所组成,将现有的存取权限减掉权限掩码后,即可产生建立文件时预设的权限。
    参  数:
    -S  以文字的方式来表示权限掩码。
    文件:用八进制基数666,即无x位(可执行位)rw- rw- rw-.执行位需由用户自行加入。

    umask就是系统的一个安全机制,通过设置不同的权限,可以达到限制用户操作的目的,有效地保证了文件的完整性。

    接着说上面的例子
    需要的权限是-rw-rw-rw-,但实际生成的文件权限是-rw-r–r–,用户组和其他用户的w权限被去掉了,查看下系统的umask值

    bogon:tests my$ umask

    bogon:tests my$ umask
    0022


    umask值是0022,r是4,w是2,x是1,对应如下

    说明 所属用户 所属用户组 其他用户
    需要的 -rw- rw- rw-
    减去umask 0 2(w) 2(w)
    得到 -rw- r– r–
    二. 解决方法
    1.设定umask值

    syscall.Umask(0)

    2.通过chmod重新赋权限

    os.Chmod(fileName, 0666)
  • 相关阅读:
    javascript基础
    html基础
    css基础
    django-session和cookie
    rest架构
    django-models
    django-templates
    Alignment
    ural 1225.Flags
    ural 1009. K-based Numbers
  • 原文地址:https://www.cnblogs.com/feiquan/p/11429065.html
Copyright © 2011-2022 走看看