zoukankan      html  css  js  c++  java
  • Linux使用SGID实现某个目录下文件对目录所属组的用户共享

    要共享的用户所属组设置为zp_group

    添加这个用户组:

    groupadd zp_group

     

    要共享的目录名设置为zp_group_publicDir, 暂时放在/tmp目录下:

    cd /tmp
    
    mkdir -m 2770 zp_group_publicDir  #数字2是为了给zp_group_publicDir目录设置SGID权限
    
    chgrp zp_group zp_group_publicDir #将zp_group_publicDir目录所属组设置为 zp_group组
    
    ls -ld ./zp_group_publicDir

    可以看到zp_group_publicDir目录有了SGID并属于 zp_group群组, 到这里就成功了, 

    只要某用户所属组包含zp_group组就可以共享zp_group_publicDir目录了.

     

    接下来进行测试:

    新建两个用户user1和user2; user1添加到zp_group组, user2暂时不添加:

    useradd -G zp_group user1
    
    useradd user2

    查看user1和user2的信息:

    id user1 && id user2

     

    可以看到user1含有zp_group组, user2不含有zp_group组.

     

    切换到user1用户并进入zp_group_publicDir, 用vim创建文件 a.txt 并写入内容”a.txt file”, 然后用cat查看文件内容, 用ll(ls -l的别名)显示文件信息, 命令如下:

    su user1
    
    cd zp_group_publicDir
    
    vim a.txt
    
    cat a.txt
    
    ll

    由于zp_group_publicDir设置了SGID权限, 因此该目录下创建的文件默认的群组与该目录的群组一致, 都为zp_group;

    然后切换到user2用户, 进入zp_group_publicDir目录报Permission denied表示权限不足:

     

    因为zp_group_publicDir目录对other用户没有rwx权限, user2对于zp_group_publicDir目录属于other身份, 所以无法查看编辑与进入zp_group_publicDir目录;

    然后切换到root用户把user2也加入到zp_group群组:

     

    然后切换到user2用户, 进入zp_group_publicDir目录并创建b.txt文件:

     

     

    现在user2也可以进入zp_group_publicDir目录了, 只要某用户所属组包含zp_group组就可以共享zp_group_publicDir目录, 并且在zp_group_publicDir目录下创建的文件也会自动属于zp_group组, 由此可见SGID对于项目开发来说是非常重要的.

  • 相关阅读:
    使用jetty部署配置solr服务
    solr 与 MySQL(二)
    学习solr(一)
    FormData 上传文件
    node.js cannot find module 'mysql'
    select2 ajax 无法选中
    jenkins持续集成文件冲突的问题
    Inno Setup 实现每次jenkins自动构建时版本号自动+1
    jenkins 配置slave节点(win10系统)
    Jenkins+Gradle实现android开发持续集成和打包
  • 原文地址:https://www.cnblogs.com/zp106/p/12885372.html
Copyright © 2011-2022 走看看