zoukankan      html  css  js  c++  java
  • 自学Linux Shell7.3-linux共享文件

    点击返回 自学Linux命令行与Shell脚本之路

    7.3-linux共享文件

    在linux系统中共享文件的方法是通过创建组。

    1. linux为每个文件和目录存储了3个额外的信息位:

    • SUID设置用户ID 
      当文件被用户使用时,程序会以文件属主的权限运行
    • SGID设置组ID     
      对文件来说,程序会以文件属组的权限运行
      对目录来说,目录创建的新文件会以目录的默认属组作为默认属组
    • 粘着位    
      进程结束后文件还驻留在内存中

    SUID设置用户ID用s表示。

    • 用户对应的前三位的x位上如果有,就用小s表示suid。当x位上没有x的时候,suid就是大写的S。
    • 设置用户ID位就是让普通用户可以以root或其他用户的权限运行只有root或其它用户才能运行的程序或命令,或程序命令对应本来没有权限操作的文件等。
    • 仅对二进制命令程序有效,不能用在shell等类似脚本文件上。shell脚本仅仅是调用二进制命令程序而已,因此,具体权限还需要看二进制命令本身。
    • 二进制命令程序需要有可执行权限x
    • suid权限仅在程序执行过程中有效。
    • 执行命令的任意用户可以获得该命令程序执行期间拥有这的权限。
    • suid是双刃剑,是一个比较危险的功能,对系统安全有一定的威胁。

    SGID设置组ID    
    与suid不同,sgid既可以针对文件,也可以阵地目录设置。sgid是针对用户权限修改的。
    sgid主要用在目录中,当为某个目录设置了sgid位以后,在该目录中创建的文件具有该目录的所有这权限,而不是创建该文件的用户的默认所有者。这样,使得在多个用户之间共享一个目录中的文件 变得简单。

     对文件,sgid功能如下:

    • sgid仅对二进制命令程序有效。
    • 二进制命令或程序需要可执行权限。
    • 执行程序的任意用户可以获得该命令程序执行期间所属组的权限。

     对目录,sgid功能如下:

    • 用户在此目录下创建的文件和目录,具有和此目录相同的用户组设置。

    粘着位 sticky bit 

    粘滞位功能用得少,不过对于/tmp目录这样的,是整个系统临时文件存放地,需要设置粘滞位。
    一个目录即使开发所有权限rwxrwxrwx,如果设置了粘滞位,除非目录属主和root用户有权限删除它,其它用户不能删除这个目录。
    让所有用户都具有/tmp目录所有权限,但是每个用户只能删除自己的文件。用t表示,如果没有执行权限,那么就是T。/tmp目录谁都可以写,常常是木马第一手跳板地点。

     如上图,/tmp权限位最后一位是t。这就是设置了粘滞位。

    2. 如何共享文件

    通过以上的介绍,SGID位对共享文件非常重要,以下就是建立共享文件步骤:

    • 用mkdir命令创建共享目录
    • 通过chgrp命令将目录的默认属组改成包含所有需要共享文件的用户的组
    • 更改目录的SGID位置位,确保目录中的新建文件都用shared作为默认属组
    • 所有组成员将umask值设置成文件对属组成员可写
    • 最后,,组成员能到共享目录下创建新文件,同时shared组内的所有用户都能访问这个文件
  • 相关阅读:
    【pandas实战】时间差计算
    【pandas实战】数据分类整理
    海量数据处理方法整理记录
    Springboot中实现策略模式+工厂模式
    实现一个秒杀系统
    Redis实现的分布式锁和分布式限流
    实现分布式服务注册及简易的netty聊天
    聊聊数据库乐观锁和悲观锁,乐观锁失败后重试
    聊聊RPC原理二
    聊聊kafka结构
  • 原文地址:https://www.cnblogs.com/yaoyaojcy/p/9188544.html
Copyright © 2011-2022 走看看