刚刚从 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
不要授予权限!)、组()并以八进制或符号表示法列出权限:o
u
%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 选项表示给出一个长列表,即权限、所有者和组。前三个权限是给所有者的,第二个三个是给组的,第三个三个是给其他所有人的。