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组内的所有用户都能访问这个文件
原文地址:https://www.cnblogs.com/yaoyaojcy/p/9188544.html
时间: 2024-11-04 01:59:46