ls 以黄色背景显示从外部驱动器复制的文件

ls 以黄色背景显示从外部驱动器复制的文件

我从外部驱动器复制了一些文件,现在它们在 OSX 上的 ZSH shell 下显示为黄色背景。我相信这是一个权限问题,因为普通的显示“drwxr-xr-x”,而黄色的没有缺少的权限,即“drwxrwxrwx”

这是一个例子

total 24
drwxr-xr-x  21 martin  staff   714B Aug  4 00:10 .
drwxr-xr-x+ 63 martin  staff   2.1K Aug  5 18:50 ..
-rw-r--r--@  1 martin  staff    10K Aug  4 00:24 .DS_Store
drwxrwxrwx   9 martin  staff   306B Jul 31 00:44 Tempa
drwxrwxrwx   5 martin  staff   170B Jul 11 21:31 XCode
drwxrwxrwx   5 martin  staff   170B Jul 11 21:31 Items
drwxr-xr-x  21 martin  staff   714B Jul 31 09:13 code-test
..

您注意到上面有 2 个项目显示时没有黄色背景。这是.DS_Store 文件和代码测试目录。实际上值得注意的是,在具有黄色背景的目录(即“XCode”)内,我加载了更多具有相同问题的文件和目录。

为什么复制的文件有这些权限?缺少权限是什么意思?当然,如何修复它,但当然要递归地修复它,因为在每个受影响的目录中,文件和其他目录似乎也有相同的问题。

答案1

据推测,外部驱动器使用诸如 FAT 变体之类的文件系统,该系统不存储权限,并且以每个人都允许的所有权限进行安装。您用来复制文件的工具保留了原始权限。

花哨的颜色提醒您这些文件是全局可写的。在 的输出中ls -lrwx权限按三个字符的顺序分组为三个块:用户、组和其他。因此rwxrwxrwx意味着每个人都可以做任何事情,而rwxr-xr-x意味着每个人都可以读取和执行文件,但只有拥有该文件的用户可以写入。看了解 UNIX 权限及其属性有关权限和输出的更多详细信息ls -l

要将文件更改为只有您可写,请运行chmod命令:

chmod -R go-w .

-R意味着递归;go指影响组等权限,-w指删除写权限。

如果您想从文件中删除执行权限,因为它们实际上不可执行,请不要仅添加x到此命令。目录必须保留x权限,因为对于目录来说,x实际上意味着访问该目录内的文件的权限(r只允许列出目录内容,不允许访问文件)。您可以使用findchmod仅在非目录上运行的命令。要删除当前目录下除目录之外的所有内容的执行权限:

find . -type d -o -exec chmod a-x {} +

相关内容