如何使用 ls 命令找出文件夹的所有者和组以及他们各自拥有哪些权限?

如何使用 ls 命令找出文件夹的所有者和组以及他们各自拥有哪些权限?

刚刚从 Windows 完全转换到 Ubuntu,很高兴。

我有一个问题;有一个名为 的文件夹/root。我想知道如何使用命令ls找出与此文件夹关联的所有者和组,以及他们各自拥有哪些权限。

答案1

我不知道这为什么是个“问题”。该目录/root是 root 用户的主目录,通常不需要在其中执行任何操作。因此,它对普通用户没有执行权限,这意味着您无法进入它或列出其内容。出于安全原因,您不应该更改这些内容。

无论如何,你通常可以通过运行以下命令找到有关命令使用的一些指导:

man command

man ls会发现

-d, --directory
       list directories themselves, not their contents

效果对比:

$ ls /root
ls: cannot open directory '/root': Permission denied
$ sudo !!
sudo ls /root
[sudo] password for zanna: 
snap
$ ls -d /root
/root

我需要 root 权限(通过运行一个命令即可获得)才能列出此目录的内容,但不能列出sudo command目录本身。这是因为我对 的父目录具有执行权限/root/通常被混淆地称为根目录,因为它是文件系统的“根”,其余部分从其分支而来)。

默认情况下,系统中的绝大多数目录都具有读取和执行权限。但该/root目录的限制权限却相当特殊。

另外,man ls还有显示权限的工具,但它根本不明显是哪一个,所以您可能需要尝试运行info ls,它会在解释每个选项导致显示什么信息的部分中显示该-l选项的文档:

‘-l’
‘--format=long’
‘--format=verbose’
     In addition to the name of each file, print the file type, file
     mode bits, number of hard links, owner name, group name, size, and
     timestamp (*note Formatting file timestamps::), normally the
     modification time.  Print question marks for information that
     cannot be determined.

这仍然不太清楚!你知道“文件模式位”是指权限吗?该命令chmod改变模式。现在您知道了。那么让我们一起尝试这些选项。我已经注释了输出:

$ ls -dl /root       #note that the order of options does not matter here
drwx------ 8 root root 4096 Dec 17 14:06 /root
^ ^  ^  ^  ^  ^     ^    ^   ^   ^    ^     ^--file name
| |  |  |  |  |     |    |   |   |    |--last modified time
| |  |  |  |  |     |    |   |   |--day of month
| |  |  |  |  |     |    |   |--name of month *
| |  |  |  |  |     |    |--size
| |  |  |  |  |     |--group
| |  |  |  |  |--owner
| |  |  |  |--number of hard links to this file
| |  |  |--permission bits for "others" (any user/program)
| |  |--permission bits for group
| |--permission bits for owner
|--file type (d=directory)

*取决于语言环境设置。如果您使用非英语语言环境,则可以通过运行以下命令获取任何命令的英语输出LC_ALL=C ls -dl /root

权限标签 wiki有关如何解释“模式位”的信息。ls -l显示符号表示法对于权限,其中r= 读取访问权限、w= 写入访问权限、x= 可执行访问权限和-表示无权限。这些对目录和常规文件有不同的影响。对于目录,读取权限允许列出目录的内容如果x它还设置了权限位,该位x允许进入目录,并且w允许删除、创建和重命名目录中的文件如果x也被设置。记住目录是存储文件列表的文件- 这就是为什么您需要对目录具有写入权限才能创建、重命名或删除其内容 - 这些操作会更改列表。不过,此权限还允许您强制写入目录内文件的其他更改。

如果我们只对所有者和权限感兴趣,它ls -l会给我们太多信息。有一个更灵活的命令来显示文件元数据;它是stat。您可以使用它来列出所有者(%U)(u 代表用户 - 大多数命令行实用程序将文件的所有者称为用户。例如,在 中,u=owner 和 o=others - 确保当您只想授予权限时chmod不要授予权限!)、组()并以八进制或符号表示法列出权限:ou%G

$ stat -c "%U %G %a" /root
root root 700
$ stat -c "%U %G %A" /root
root root drwx------

请参阅可以告诉您有关文件的man stat许多其他内容。stat

答案2

要检查权限类型,请在命令行中输入:

ls -dl

这将列出您所在当前路径的所有文件夹和文件。

在每一行的开头你会看到一些字母。例如: 例子

第一个字母 = 文件类型(此处 d = 目录/文件夹),然后 3x3 字母表示权限

  • 前 3 个字母 = 所有者的权限
  • 后 3 个字母 = 组的权限
  • 第三个字母 = 所有其他人的许可

这些字母是 rwx

  • r = 读取权限
  • w = 写权限
  • x = 执行权限

如果有 - 未设置/授予权限

在我的示例中,所有者拥有所有权限,组和其他人无权写入(但可以读取和执行)

答案3

ls -dl /root

-d 选项表示您想要查看目录本身的信息而不是其中的文件的信息。

-l 选项表示给出一个长列表,即权限、所有者和组。前三个权限是给所有者的,第二个三个是给组的,第三个三个是给其他所有人的。

相关内容