shell_9.Linux共享文件

1.Linux 为每个文件和目录存储了 3 个额外的信息位。
(1)SUID(set user ID):当用户执行该文件时,程序会以文件属主的权限运行。
(2)SGID(set group ID):对文件而言,程序会以文件属组的权限运行;对目录而言,该目录中创建的新文件会以目录的属组作为默认属组。
(3)粘滞位(sticky bit):应用于目录时,只有文件属主可以删除或重命名该目录中的文件。

2.可以通过 chmod 命令设置 SGID,将其添加到标准 3 位八进制值之前(组成 4 位八进制值),或者在符号模式下用符号 s。
如果使用的是八进制模式,则需要知道这些位的排列

000         0         清除所有位
001         1         设置粘滞位
010         2         设置 SGID 位
011         3         设置 SGID 位和粘滞位
100         4         设置 SUID 位
101         5         设置 SUID 位和粘滞位
110         6         设置 SUID 位和 SGID 位
111         7         设置所有位

3.要创建一个共享目录,使目录中的所有新文件都沿用目录的属组,只需设置该目录的SGID 位。

$ mkdir testdir 
$ ls -l 
drwxrwxr-x 2 rich rich 4096 Sep 20 23:12 testdir/ 
$ chgrp shared testdir 
$ chmod g+s testdir 
$ ls -l 
drwxrwsr-x 2 rich shared 4096 Sep 20 23:12 testdir/ 
$ umask 002 
$ cd testdir 
$ touch testfile 
$ ls -l 
total 0 
-rw-rw-r-- 1 rich shared 0 Sep 20 23:13 testfile 
$

4.Linux 开发者设计出了一种更先进的文件和目录安全方法:访问控制列表(access control list,ACL)。
ACL 允许指定包含多个用户或组的列表以及为其分配的权限。
可以使用 setfacl 命令和 getfacl 命令在 Linux 中实现 ACL 特性。getfacl 命令能够查看分配给文件或目录的 ACL:

$ touch test
$ ls -l
$ getfacl test
# file: test
# owner: rich
# group: rich

5.setfacl 命令可以为用户或组分配权限:

setfacl [options] rule filenames

setfacl 命令允许使用-m 选项修改分配给文件或目录的权限,或使用-x 选项删除特定权
可以使用下列 3 种格式定义规则:

u[ser]:uid:perms
g[roup]:gid:perms
o[ther]::perms

6.要为用户分配权限,可以使用 user 格式;要为组分配权限,可以使用 group 格式;要为其他用户分配权限,可以使用 other 格式。


(1)为 test 文件添加了 sales 组的读写权限。

$ setfacl -m g:sales:rw test 
$ ls -l

(2)getfacl 的输出显示为两个组分配了权限

$ getfacl test

(3)要想删除权限,可以使用-x 选项:

$ setfacl -x g:sales test 
$ getfacl test

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

微辣已是极限

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值