我创建的目录如下:
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 权限和文件类型了解详情。