我使用下面的代码创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:root和umask 0000 。
更好的是,永远不要把它放在你的umask上。
看到这里: http : //linuxzoo.net/page/sec_umask.html
作为umask命令参数给出的编号与给chmod命令编号的方式相反。 “掩码”用于删除权限,而不是授予权限。
在某种程度上,它表示一个“错误”:
如果没有设置可执行位,设置setuid位没有意义。