Set-group-id on directory

Set-group-id on directory

虽然用linux多年,但是还不知道,原来set-group-id还可以在directory上设置,它的作用是:任何用户在该directory下创建的文件,其group都是该directory所属于的组,任何用户在该directory下创建的目录,其group都是该directory所属的组,而且继承set-group-id设置。


举例

普通用户jason(它的primary group也是jason),在/home/jason目录下创建了目录dir。然后为设置dir设置set-group-id。
jason@jason:~ cd/home/jasonjason@jason:  chmod g+s dir

此时使用ls -l时,显示dir目录时,它的group executable bit显示为s,而不在是x;当然如果dir目录已经关闭了group executable bit,那么显示为S。

为了允许其它的用户创建和访问dir目录,需要设置dir的other权限为rwx。
jason@jason:~$ chmod o=rwx dir

然后使用用户jixu(它的primary group为jixu,它不属于jason组)登陆,进入到dir目录,创建文件jixu_file,此时该文件的group为jason;创建目录jixu_dir,此时该目录的group为jason,且该目录也开启了set-group-id设置(ls -l显示时,该folder的group executable bit显示为s)。

在mount磁盘分区的时候,如果设置了grpid,那么效果与对mount分区的跟目录设置set-group-id相同。

原因

方便各个用户之间对文件的共享和操作。

Corner case

如果把set-group-id应用到可执行文件,那么表示执行该文件时,该进程的effective group id将被设置为该文件的group id。

当把set-user-id应用到可执行文件时,那么表示执行该文件时,该进程的effective user id将被设置为该文件的user id。

那么把set-user-id应用到目录呢?在linux上,尽管目录的user executable bit会显示为s,但是没有实质的作用。根据GNU-gcc的描述,在有些系统上,它与set-group-id在目录上的作用类似:即任何用户在该目录下创建的文件都会与该目录所属的user相同,方便文件共享。

On most systems, if a directory’s set-group-ID bit is set, newly created subfiles inherit the same group as the directory, and newly created subdirectories inherit the set-group-ID bit of the parent directory. On a few systems, a directory’s set-user-ID bit has a similar effect on the ownership of new subfiles and the set-user-ID bits of new subdirectories. These mechanisms let users share files more easily, by lessening the need to use chmod or chown to share new files.


[1]: Linux programming interface 15.3.1

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值