当我ls -la
,它打印许多属性。像这样:
-rwSrwSr-- 1 www-data www-data 45 2012-01-04 05:17 README
可耻的是,我不得不承认我不知道每个属性的确切含义。例如,S
字符串中big的含义是什么-rwSrwSr--
?以下是1
什么?我大概认识别人。
当我ls -la
,它打印许多属性。像这样:
-rwSrwSr-- 1 www-data www-data 45 2012-01-04 05:17 README
可耻的是,我不得不承认我不知道每个属性的确切含义。例如,S
字符串中big的含义是什么-rwSrwSr--
?以下是1
什么?我大概认识别人。
Answers:
该ls
命令的文档回答了这些问题。在大多数Unix变体上,查找ls
手册页(man ls
或在线)。在Linux上,查找信息文档(info ls
)或在线。
该字母s
表示已设置setuid(或setgid,取决于列)。当可执行文件为setuid时,它将以拥有可执行文件的用户而不是调用程序的用户身份运行。字母s
代替字母x
。文件可能是setuid的,但不是可执行文件。这用表示S
,其中大写S
字母警告您此设置可能是错误的,因为如果文件不可执行,则setuid位几乎(几乎总是)无用。
当目录具有setuid(或setgid)权限时,在该目录中创建的任何文件将由与目录的所有者(或组)匹配的用户(或组)拥有。
权限后的数字是硬链接数。硬链接是文件的路径(即名称)。大多数文件只有一个路径,但是您可以使用该ln
命令创建更多路径。(这与符号链接不同:符号链接说“哦,实际上,该文件在其他位置,请转到<location>”。)目录具有N + 2硬链接,其中N是子目录的数量,因为可以访问它们从他们的父母,从他们自己(通过.
条目)以及从每个子目录(通过..
条目)。
x
)权限。
根据 info coreutils ls
(可能不完全是您所拥有的):
s
如果setuid或setgid位以及相应的可执行位都已设置。'S'
如果设置了setuid或setgid位,但未设置相应的可执行位。
许可部分后面的数字是硬链接的数量。
chmod g-x,g+s dir
用(希望更简单的)术语来说,这意味着。目录为setgid。在其中创建的所有文件将归该文件夹所有者的那个组所拥有。
但是,该文件夹不能由该组执行,因此以大写S表示。这通常是在创建目录时,该目录最终将作为setgid出现。
嗯..不确定上面是否听起来像普通英语..
这是因为缺少可执行文件
s->'x'已启用S->'x'被禁用。
见下面的例子
$ ls -l
total 0
-rwsrw-r--. 1 bpkmails bpkmails 0 Jun 25 20:18 ca
$ chmod u-x ca
$ ls -l
total 0
-rwSrw-r--. 1 bpkmails bpkmails 0 Jun 25 20:18 ca
$