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

Posted

技术标签:

【中文标题】如何检查特定目录的权限?【英文标题】:How to check permissions of a specific directory? 【发布时间】:2010-09-25 04:19:57 【问题描述】:

我知道使用ls -l "directory/directory/filename" 可以告诉我文件的权限。我如何在目录上做同样的事情?

我显然可以在层次结构中更高的目录上使用ls -l,然后滚动直到找到它,但这太痛苦了。如果我在实际目录上使用ls -l,它会提供其中文件的权限/信息,而不是实际目录的权限/信息。

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

【问题讨论】:

【参考方案1】:

以下是简短的回答:

$ ls -ld directory

它的作用如下:

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

您可能对manpages 感兴趣。这就是这里所有的人都能得到他们好的答案的地方。

参考online man pages

【讨论】:

我认为手册页措辞不佳。在我开始使用谷歌搜索之前,我搜索了它五次。我不想要目录“条目”(“输入”到目录中的东西?像他们的文件和子目录一样?)也不想要他们的“内容”(对我来说它们听起来像同一个概念),我想要目录它们自己. 完全是标准术语,目录它们自己是目录条目,即文件系统中的条目 这可能是标准术语,但对于可能会问这样一个问题的人来说,这可能是令人困惑的行话。【参考方案2】:

如果您需要有关文件/目录的详细信息,也可以使用stat 命令。 (正如你所说的那样,我准确地说你正在学习^^)

【讨论】:

stat 会显示很多权限:(0755/drwxr-xr-x) 这很方便,因此您也可以看到数字权限格式 - ty "stat -c %a directory" 这将以数字方式显示 macOS上对应的是stat -f %A dir_or_filename【参考方案3】:
$ ls -ld directory

ls 是列表命令。

- 表示命令选项的开头。

l 要求提供包含权限的长列表。

d 表示列表应该与命名目录本身有关;不是它的内容。如果没有给出目录名,列表输出将与当前目录有关。

【讨论】:

【参考方案4】:

在 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 ~]$

【讨论】:

【参考方案5】:

还有

getfacl /directory/directory/

其中包括 ACL

Linux ACL 的好介绍here

【讨论】:

【参考方案6】:

这会显示文件及其权限

stat -c '%a - %n' directory/*

【讨论】:

【参考方案7】:

除了上面的帖子,我想指出“man ls”会给你一个关于“ls”(List”命令的好手册。

此外,使用 ls -la myFile 将列出并显示有关该文件的所有事实。

【讨论】:

【参考方案8】:

在 OS X 上您可以使用:

ls -lead

e 选项显示 ACL。 ACL 对于了解系统上的确切权限非常重要。

【讨论】:

【参考方案9】:

ls -lstr

这显示了带有权限和用户组的普通 ls 视图

【讨论】:

【参考方案10】:

查看文件的权限配置,使用命令:

ls –l [file_name]

查看目录的权限配置,使用命令:

ls –l [Directory-name]

【讨论】:

这不是正确答案,应该是-ld,如下anwser所示 对我来说很好用。我已经使用这些命令设置(资产)文件夹权限, hmmm... 但正如 OP 所说:“如果我在实际目录上使用 ls -l ,它会提供其中文件的权限/信息,而不是实际目录”。我认为 OP 想知道文件夹的权限而不是其中的文件。

以上是关于如何检查特定目录的权限?的主要内容,如果未能解决你的问题,请参考以下文章

Java中如何检查文件是不是存在于目录中

如何检查写入目录或文件的权限?

如何检查授予目录路径的权限并且不会引发 EACCES 错误?

当“受控文件夹访问”打开时如何检查 .NET 中的目录写入权限

android获取GPS权限

android获取GPS权限