• 新建文件所属组设置


    问题来源

    问题场景1:在Linux进行开发Web程序,Web root目录下某些目录需要被www用户进行写操作,而开发过程中使用的用户假设为mn,新建的目录和文件默认用户/组为mn:mn,这对www用户来讲是不可写的。最简单的办法是使用chown -R mn:www xxx设置用户/组为mn:www。这样每次有新的文件都需要进行设置,十分不方便。

    问题场景2:对于运维人员来讲,需要在dirA目录下新建的文件为groupA组,在dirB目录下新建的文件为groupB组。

    解决办法

    使用Linux下的特殊权限位即可以实现。例如对于问题场景2中的情况,将dirA目录的用户组设置为groupA,然后添加SGID权限,即:

    chgrp groupA dirA/
    chmod g+s dirA/

    这样得到dirA的目录权限为

    drwxrwsr-x

    以后在dirA下新的目录具有相同的权限,且用户组为groupA;新建的文件用户组同样为groupA。

    如果是已经存在的目录需要同样的设置,使用如下命令:

    find /some/dir -type d -exec chgrp www {} +
    find /some/dir -type d -exec chmod g+s {} +

    NB: 上述命令的 {} + 表示将find查找到的所有目录添加到命令后进行执行,而不是对每一个查找到的目录执行一次。

    特殊权限知识

    Linux下的文件权限除了用户、组、其他的可读(r)、可写(w)、可执行(x)之外,还有三个特殊的权限位,它们是SUID、SGID、SBIT(粘滞位)。

    SUID

    s出现在文件所有者的x权限位上。
    SUID用于可执行文件,使得该文件在执行时具有该文件所有者的权限。
    对于没有可执行权限的文件设置SUID,该文件不会具体可执行权限。
    chmod u+s somefile
    

    如/usr/bin/passwd的文件。

    SGID

    s出现在文件所属组的x权限上。
    SGID用于文件和目录。

    对于目录,设置SGID,在该目录下新建的目录同样有SGID权限和所属组。
    对于文件,设置SGID,使用该文件执行时具有所属组的权限。
    chmod g+s somefile

    SBIT

    t出现在文件其他的x权限上。
    SBIT用于目录。

    设置了SBIT的目录,下新建的文件,只有自己和root可以进行删除。

    如/tmp目录。


  • 相关阅读:
    Why use strong named assemblies?
    Dependency Walker
    “等一下,我碰!”——常见的2D碰撞检测
    MOBA游戏的网络同步技术
    VS2017如何配置openGL环境
    UE4关于Oculus Rift (VR)开发忠告
    UE4 的json读写方式
    Blueprint 编译概述
    UE4编码规范
    Unreal Enginer4特性介绍
  • 原文地址:https://www.cnblogs.com/furzoom/p/7710124.html
Copyright © 2020-2023  润新知