Linux的环境中如何生成srw-rw---- 的文件权限?

在Linux的某个目录中发现了这样一个从前没注意过的权限:
srw-rw----

我知道:

r=4
w=2
x=1

这样如果不考虑开头s,那么两对rw应当意味着属主和所属组可读可写,但不能执行,其它人无该文件权限。

在一个在线演示和计算chmod的网站尝试了多次,即使在增加了suid之后,也只能够生成:
-rwSrwS---
而这样的结果出现的S不但是大写,它也不出现在首位。

对于s以及t我并不怎么了解,但在网上查询chmod这个命令及例子中也根本找不到首位为s的说明和解释。
想问首位s这样的权限是何意义,它是如何通过chmod命令生成的?

阅读 9.7k
3 个回答

权限位只有九位,第一个字符代表文件类型,s指的是unix domain socket文件,在man ls有说明

根据 @jokester 的回答,我尝试了以下做法。
mkdir chmodTest && cd $_ && touch demofile && ls -lh 生成一个文件demofile,结果如下:
-rw-r--r-- 1 root root 0 Sep 7 22:23 demofile
然后设定UID,chmod 4755 demofile && ls -lh,生成如下结果:
-rwsr-xr-x 1 root root 0 Sep 7 22:23 demofile
出现了s但是并不在第一位。

随后根据 @Feng_Yu 的回答查找man上面ls的说明,没找到。不过在以下链接页面的底部看到了说明和范例,还包括其它几个字母的说明,如dc等。 @Feng_Yu 给出的是正确答案,多谢。
http://www.linuxnix.com/file-...

socket file type

有setuid/gid且没有相应的x就会显示为S (+x就会变成s了)

s的含义可以看man chmod

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题