S在linux文件属性中是什么意思?

我使用下面的代码创build目录并在perl中更改它们的权限:

umask 0000; mkdir $path, 0770; chown $userid, $groupid, $path; 

现在,当我在我刚刚创build的目录上执行ls -l时,它们如下所示:

 drwxrws--- 2 user group 4096 Nov 3 15:34 test1 

我注意到组权限,有一个s而不是x。 即使我chmod手动删除用户和组的所有权限(“chmod g =”和“chmod u =”,它仍然存在:

 d-----S--- 2 user group 4096 Nov 3 15:36 test2 

互联网build议S意味着文件夹中的所有内容都以su或其他方式运行? 我不太明白这是什么意思,但我想我应该明白,因为这些都是根源,所以如果有安全隐患的话,我应该意识到这一点。

非常感谢您的帮助!

s意味着setgid / setuid位和executable位都被设置

S表示只设置了setgid / setuid

检查man chmod获取更多信息。

这是因为您设置的umask值而发生的。

互联网build议S意味着文件夹中的所有内容都以su或其他方式运行?

这是不正确的。

如果setuid位设置在可执行程序上,那么它将以其所有者的权限执行。

如果在可执行程序上设置了setgid位,则它将以其组的权限执行。

所以,不要以root:root身份去创build东西root:rootumask 0000

更好的是,永远不要把它放在你的umask上。

看到这里: http : //linuxzoo.net/page/sec_umask.html

作为umask命令参数给出的编号与给chmod命令编号的方式相反。 “掩码”用于删除权限,而不是授予权限。

在某种程度上,它表示一个“错误”:

如果没有设置可执行位,设置setuid位没有意义。