目录上的 Setgid 未授予目录内文件的执行权限

目录上的 Setgid 未授予目录内文件的执行权限

我创建的目录如下:

root@host [~]#  mkdir mydir
root@host [~]#  ls -ld mydir
drwxrwxr-x 2 test test 4096 Mar 2 19:36 mydir
root@host [~]# 

然后我使用“chgrp”命令更改了目录的组所有权,然后还添加了“setgid”权限。

root@host [~]#  chgrp test2 mydir/
root@host [~]#  chmod g+s mydir
root@host [~]#  ls -ld mydir/
drwxrwsr-x 2 test test2 4096 Mar 2 19:36 mydir/
root@host [~]# 

现在,当我在目录下创建文件时,我看到该文件丢失execute permission

root@host [~]#  touch mydir/myfile3
root@host [~]#  ls -l mydir/myfile3
-rw-rw-r-- 1 test test2 0 Mar 2 19:59 mydir/myfile3
root@host [~]#

我的理解是该文件应该获得与父目录完全相同的权限。并且,rwx permission文件的父目录也应该得到rwx permission.

答案1

目录上的 sgid 位会导致在其中创建的文件由拥有该目录的组拥有,仅此而已。您可以在示例中看到这一点:myfile2由 group 拥有test2

sgid 位不能确定在目录内创建的文件的权限。

再次,参见了解 UNIX 权限和文件类型了解详情。

相关内容