点击返回 自学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组内的所有用户都能访问这个文件

自学Linux Shell7.3-linux共享文件的更多相关文章

  1. linux上挂载windows共享文件夹

    linux上挂载windows共享文件夹 1.共享windows目录 挂载之前得创建一个有password的用户(当前用户也能够),并将你要挂载的目录进行共享,并赋予读写权限 如图. watermar ...

  2. 配置VirtualBox Linux系统与Windows共享文件

    手动方式配置VirtualBox Linux系统与Windows共享文件 首先,要安装VirtualBox自带的扩展工具,这个ISO可以在虚拟主机安装目录下找到. 将这个文件Copy到你的Linux主 ...

  3. [Linux] - Windows与Linux网络共享文件夹挂载方法

    Windows与Linux网络SMB方式文件夹共享挂载 本示例系统: Windows 2003+ Linux-Centos/Ubuntu 本示例全为命令行操作,如何使用Windows.Linux命令行 ...

  4. linux(ubuntu)共享文件夹

    Linux系统的文件或目录的共享功能是非常强大,而且是非常灵活的,其对权限的控制可以做到非常的细致,当然如果你是通过命令行方式进行设置的 话,那么对于刚接触linux系统的用户来说将是一件十分头痛的事 ...

  5. (转)关于linux挂载window下共享文件

    关于linux挂载window下共享文件的方法: ①事先建立linux下文件夹,例如“ /mnt/linux-folder”②用mount命令挂载    mount -o username=windo ...

  6. VMware,win7与linux centos6.4文件互传,linux下挂载windows共享文件夹,vmware tools安装方法

    本方法是以win7,VMware9.0.1 ,centos6.4为基础实验的. 对于linux的初级使用阶段,都会Windows中使用linux虚拟机VMWare或者其它的.在Windows与linu ...

  7. VirtualBox中Linux虚拟机与主机共享文件夹

    VirtualBox中Linux虚拟机与主机共享文件夹 一.Linux虚拟机安装增强功能 二.点击虚拟机 设置-->选择 共享文件夹-->点击右侧的带加号的文件夹图标,执行下面的操作1. ...

  8. Linux基础与Linux下C语言编程基础

    Linux基础 1 Linux命令 如果使用GUI,Linux和Windows没有什么区别.Linux学习应用的一个特点是通过命令行进行使用. 登录Linux后,我们就可以在#或$符后面去输入命令,有 ...

  9. Linux基础-兄弟连Linux

    Linux基础增强与辅助知识梳理... ------------ Linux学习基础需要学习那些知识 学习Linux对于程序开发的好处 怎样开始学习Linux Linux的学习方法参考 Linux系统 ...

  10. 【转】Linux基础与Linux下C语言编程基础

    原文:https://www.cnblogs.com/huyufeng/p/4841232.html ------------------------------------------------- ...

随机推荐

  1. 解决webapi首次启动速度慢的问题 - z

    原理与下面两篇文章提及的相同 https://blog.csdn.net/godcyx/article/details/38517135 http://www.huaface.com/p/12

  2. Intel Digital Innovation Industry Summit(2018.08.17)

    时间:2018.08.17地点:北京金隅喜来登大酒店

  3. 使用sklearn进行K_Means聚类算法

    首先附上官网说明 [http://scikit-learn.org/stable/modules/generated/sklearn.cluster.KMeans.html#examples-usin ...

  4. Intellij Idea 返回上次编辑快捷键设置

    由于默认的返回上次编辑快捷键和和笔记本冲突. 需要从新设置快捷键. 找了好久终于找到了.  分别选中Back和Forward后设置新的快捷键即可

  5. python语言程序设计?

    1, 别说了,我还是有几分蛋疼的.女朋友..计算机..唉 2, 今天把那几个练习写完吧? 3, 这个注释有啥用最前面的?? 4, 我在学完python后必须学完C和C++并开始离散数学和线代高数等全复 ...

  6. Daily Scrum NO.10

    工作概况 今天是两周正是开发的最后一个工作日,虽然也是编译的DEADLINE,但成员们还是较为积极.计划内的工作基本都能够完成:线程池.异常清理器和动态爬取的功能.异常清理器界面的第一版也在今晚做了出 ...

  7. Dynamic Routing Based On Redis

    Dynamic Routing Based On Redis Ngnix技术研究系列2-基于Redis实现动态路由   上篇博文我们写了个引子: Ngnix技术研究系列1-通过应用场景看Nginx的反 ...

  8. squid反向代理

    反向代理的作用是就爱那个网站中的静态自原本地化.也就是将一部分本应该有原是服务器处理的请求交给 Squid 缓存服务处理 编辑 Squid  服务程序的配置文件*(正向代理与反向代理不能同时使用,) ...

  9. 使用PHP + Apache访问有错误的php脚本时不报错

    遇到一个问题: 在命令行编辑php脚本后,直接使用php命令行执行该php脚本,如果脚本出现错误,在命令行的情况下会报错,显示错误信息,比如下面的情况. [root@localhost wwwroot ...

  10. shell脚本--cut命令与awk简单使用

    cut:对内容进行列切割 -d 后面的是分割符,表示用什么符号来分割符来分割列,分隔符使用引号括起来: -f后面跟着要选择的字段列,从1开始,表示第一列,如果要多列,可以用逗号分隔 : -c参数后面跟 ...