我从外部驱动器复制了一些文件,现在它们在 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 -l
,rwx
权限按三个字符的顺序分组为三个块:用户、组和其他。因此rwxrwxrwx
意味着每个人都可以做任何事情,而rwxr-xr-x
意味着每个人都可以读取和执行文件,但只有拥有该文件的用户可以写入。看了解 UNIX 权限及其属性有关权限和输出的更多详细信息ls -l
。
要将文件更改为只有您可写,请运行chmod
命令:
chmod -R go-w .
-R
意味着递归;go
指影响组等权限,-w
指删除写权限。
如果您想从文件中删除执行权限,因为它们实际上不可执行,请不要仅添加x
到此命令。目录必须保留x
权限,因为对于目录来说,x
实际上意味着访问该目录内的文件的权限(r
只允许列出目录内容,不允许访问文件)。您可以使用find
chmod
仅在非目录上运行的命令。要删除当前目录下除目录之外的所有内容的执行权限:
find . -type d -o -exec chmod a-x {} +