如何检查特定目录的权限?

405

我知道使用ls -l "目录/目录/文件名"可以告诉我一个文件的权限。那么如何在目录上执行相同操作呢?

显然我可以在更高层次的目录上使用ls -l,然后滚动查找到它,但这太麻烦了。如果我在实际的目录上使用ls -l,它会给出其中文件的权限/信息,而不是目录自身的。

我在Mac OS X 10.5和Linux(Ubuntu Gutsy Gibbon)的终端中都尝试过这种方法,结果都一样。我应该使用某种标志吗?

10个回答

522

这是简短的答案:

$ ls -ld directory

它的作用如下:

-d, --directory
    list directory entries instead of contents, and do not dereference symbolic links

您可能对手册页感兴趣。这是所有人在此处获取他们的好答案的地方。

请参考在线手册页


27
我认为这个 man 页面措辞不好。在开始谷歌搜索前,我已经仔细阅读了它五次。我不需要目录中的“entries”(“输入”到目录中的东西?例如文件和子目录?)也不需要它们的“contents”(它们对我来说听起来是相同的概念),我需要的是目录本身。 - user151841
2
这是完全标准的术语,目录本身就是目录项,即文件系统中的条目。 - alldayremix
45
这可能是标准术语,但对于可能会提出这样问题的人来说,它很可能是令人困惑的行话。 - CatShoes

74
您还可以使用 stat 命令来获取文件/目录的详细信息。 (我这么说是因为您说您正在学习 ^^)

7
stat命令会显示很多信息,其中包括权限信息:(0755/drwxr-xr-x)。 - zzapper
4
这很方便,因为它可以让你看到数字权限格式 - 谢谢。 - landed
3
"stat -c %a directory" 这个命令会以数字方式显示目录的权限。 - Nerius Jok
3
在 macOS 上对应的命令是 stat -f %A 目录或文件名 - iled

50
$ ls -ld directory

ls是列出目录内容的命令。

-表示命令选项开始。

l表示请求输出长格式列表,包括文件/目录的权限等信息。

d表示仅显示指定目录本身的信息,而不显示其下的文件/子目录信息。如果没有指定目录名,则默认显示当前目录的信息。


24
在GNU/Linux中,尽量使用lsnameigetfaclstat。对于目录,请使用以下命令:
[flying@lempstacker ~]$ ls -ldh /tmp
drwxrwxrwt. 23 root root 4.0K Nov  8 15:41 /tmp
[flying@lempstacker ~]$ namei -l /tmp
f: /tmp
dr-xr-xr-x root root /
drwxrwxrwt root root tmp
[flying@lempstacker ~]$ getfacl /tmp
getfacl: Removing leading '/' from absolute path names
# file: tmp
# owner: root
# group: root
# flags: --t
user::rwx
group::rwx
other::rwx

[flying@lempstacker ~]$ 

或者

[flying@lempstacker ~]$ stat -c "%a" /tmp
1777
[flying@lempstacker ~]$ stat -c "%n %a" /tmp
/tmp 1777
[flying@lempstacker ~]$ stat -c "%A" /tmp
drwxrwxrwt
[flying@lempstacker ~]$ stat -c "%n %A" /tmp
/tmp drwxrwxrwt
[flying@lempstacker ~]$

关于文件

[flying@lempstacker ~]$ ls -lh /tmp/anaconda.log
-rw-r--r-- 1 root root 0 Nov  8 08:31 /tmp/anaconda.log
[flying@lempstacker ~]$ namei -l /tmp/anaconda.log
f: /tmp/anaconda.log
dr-xr-xr-x root root /
drwxrwxrwt root root tmp
-rw-r--r-- root root anaconda.log
[flying@lempstacker ~]$ getfacl /tmp/anaconda.log
getfacl: Removing leading '/' from absolute path names
# file: tmp/anaconda.log
# owner: root
# group: root
user::rw-
group::r--
other::r--

[flying@lempstacker ~]$

或者

[flying@lempstacker ~]$ stat -c "%a" /tmp/anaconda.log
644
[flying@lempstacker ~]$ stat -c "%n %a" /tmp/anaconda.log
/tmp/anaconda.log 644
[flying@lempstacker ~]$ stat -c "%A" /tmp/anaconda.log
-rw-r--r--
[flying@lempstacker ~]$ stat -c "%n %A" /tmp/anaconda.log
/tmp/anaconda.log -rw-r--r--
[flying@lempstacker ~]$

15

还有另外一个

getfacl /directory/directory/

这里包括 ACL。

有关 Linux ACL 的好介绍可以在这里找到。


10
这将显示带有其权限的文件。
stat -c '%a - %n' directory/*

stat 是一个 GNU Coreutils 工具,并不在所有类 Unix 系统上都可用(比如 Solaris < 11)。 - Mavaddat Javid

5
在OS X上,您可以使用以下方法:
ls -lead

e选项显示ACL。了解ACL非常重要,可以知道系统上的确切权限。


5
除了上述帖子,我想指出“man ls”会给你一个关于“ls”(列出文件)的好手册。
此外,使用“ls -la myFile”将列出并显示有关该文件的所有信息。

2

ls -lstr

这个命令会显示普通的ls视图,包括权限和用户:组。


0

要检查文件的权限配置,请使用以下命令:

ls –l [file_name]

要检查目录的权限配置,请使用以下命令:

ls –l [Directory-name]

这不是正确的答案,应该是-ld,如下所示的答案所示。 - fanny
对我来说它很好用。我使用以下命令设置了(资产)文件夹权限。 - Aslam Khan
嗯...但是正如OP所说:“如果我在实际目录上使用ls -l命令,它会给出其中文件的权限/信息,而不是实际目录的权限”。我认为OP想知道一个文件夹的权限,而不是其中的文件。 - fanny

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接