drwxrwsr-x 3 中的 3 是什么意思

drwxrwsr-x 3 中的 3 是什么意思

我正在按照配置 Dovecot MDA 的说明进行操作,并且说明告诉我 /var/mail 应该具有以下权限:

drwxrwsr-x 2 root mail

当我运行 ls -ld /var/mail 时,权限是:

drwxrwsr-x 3 vmail vmail

因此,我按照说明使用 chown 将所有权更改为 root 和 mail,我认为这会起作用。权限现在是:

drwxrwsr-x 3 root mail

我不明白的是 2 和 3 之间有什么区别?我搜索了好久,似乎没有一个网站能给出答案。我知道你们中有些人是 Linux 专家,你能告诉我吗?就权限而言(2 和 3)会有所不同吗?我可以使用 chmod 来更改它吗?谢谢。

答案1

此数字是文件链接数(当引用文件时)或目录条目数(当引用目录时,包括 . 和 .. 条目)。如果此数字为 1,则表示这是唯一实例。如果此数字大于 1,则表示有其他目录条目链接到同一文件。

通过将 -i 选项传递给 ls 命令,您可以发现 inode 编号:

$ ls -i mail
199053 mail

(仅举例)

在这种情况下,邮件文件的 inode 编号为 199053。现在您有了 inode 编号,您可以实际搜索具有相同 inode 编号的文件。

$ sudo find / -inum 199053

然而一般来说你不必担心它,可以忽略这个数字。

答案2

权限后面的数字是硬链接数该文件或目录(更准确地说:该 inode)的权限与权限无关;请参阅info ls。并且,它与文件数无关,但该目录内的目录会影响数量(请参阅第 3 点)。

让我解释一下,但请让你舒服地的概念硬链接首先。简而言之:你可以把它看作是非常一样文件(由其 inode 编号标识)。

例子解释:

  1. foo创建一个包含字符串“test”的文件;ls显示硬链接到该 inode 编号:

    $ echo test > foo
    $ ls -l foo
    -rw-r--r-- 1 user users 5  6. Aug 13:13 foo
    
  2. 现在创建一个到同一个 inode 的硬链接,名为bar

    $ ln foo bar
    $ ls -li foo bar
    10862620 -rw-r--r-- 2 user users 5  6. Aug 13:13 bar
    10862620 -rw-r--r-- 2 user users 5  6. Aug 13:13 foo
    

    ls识别两个文件硬链接计数为 2,并且(包括-i选项), ls 显示两个名称都引用 inode 10862620。请注意,两个名称(foo 和 bar)都引用同一个文件:

    $ cat foo
    test
    $ echo overwritten > bar
    $ cat foo
    overwritten
    
  3. 您可能很容易对目录的硬链接数量感到困惑。因为每个目录都有一个指向自身的链接.和一个指向父目录的链接..。因此,如果您有一个包含 5 个子目录的目录,则硬链接的数量等于 7:

    $ mkdir -p foo/{1..5}
    $ ls -ld foo
    drwxr-xr-x 7 user users 4096  6. Aug 13:21 foo
    
    • foo位于一个目录中,您可以通过 来访问它foo。编号 1。
    • foo有一个指向自身的链接。2 号
    • 每个子目录都有一个链接foo..编号 3 到 7

答案3

第二个字段指定该文件的硬链接数。

假设你有一个文件测试

ls -l test

-rw-r----- 1 nabil nabil 0 Jun 13 15:27 test

一旦你创建硬链接,你将获得此

ln test test_link

ls -l test

-rw-r----- 2 nabil nabil 0 Jun 13 15:27 test

https://superuser.com/a/171946/107070

相关内容