如何检查特定目录的权限?
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 中,尝试使用 ls
、namei
、getfacl
、stat
。
对于目录
[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 想知道文件夹的权限而不是其中的文件。以上是关于如何检查特定目录的权限?的主要内容,如果未能解决你的问题,请参考以下文章
如何检查授予目录路径的权限并且不会引发 EACCES 错误?