我似乎只是通过更改权限就删除了媒体驱动器上的某些文件。
故事
我的电脑上安装了许多操作系统,并经常在它们之间切换。我买了一个 1TB 硬盘并将其格式化为 HFS+(非日志式)。它在 OSX 和我的所有 Linux 安装之间运行良好,同时对元数据的支持比 NTFS 好得多。我从未同步过操作系统的 UID,因此权限总是出现问题。昨天,我尝试修复权限,方法是首先将其他操作系统的 UID 更改为与 OSX 匹配,然后将驱动器上所有文件的文件所有权更改为与 OSX 匹配。驱动器上大约 50% 的文件最初归 OSX 所有,另一半归各种 Linux 安装所有。我开始尝试更改文件夹的文件权限,但就在那时,事情发生了变化。
命令
这些命令在驱动器的一个部分上递归运行。
sudo chflags nouchg
sudo chflags -N
sudo chown myusername
sudo chmod 666
sudo chgrp staff
缺点
在执行这些命令的某个时候,所有属于 OSX 的文件都被删除了。如果某个文件夹包含基于 Linux 的文件,它将保持完整,但任何仅包含 OSX 文件的文件夹都会被删除。如果包含 Linux 文件的文件夹还包含仅包含 OSX 文件的子文件夹,则该子文件夹将保留,但无法访问并显示文件大小为 0 字节。
幸运的是,这些命令只在视频文件夹上运行,我的音乐文件夹也存在同样的问题,但我没有对其执行任何这些命令。实际上,我有所有 3 个状态的文件权限示例 - 之前和之后的 Linux 文件以及之前的 OSX 文件。
OSX 文件之前
-rw-r--r--@ 1 charliehorse 1000 3634241 15 Nov 2008 /path/to/file
com.apple.FinderInfo 32
之前的Linux文件:
-rw-r--r--@ 1 charliehorse 1000 5321776 20 Sep 2002 /path/to/file/
com.apple.FinderInfo 32
之后的 Linux 文件(只读):(不同的文件,但我相信最初具有相同的权限)
-rw-rw-rw-@ 1 charliehorse staff 366982610 17 Jun 2008 /path/to/file
com.apple.FinderInfo 32
这些文件仍然存在,因此如果要对它们运行任何其他命令来确定这里发生了什么,我可以这样做。
编辑
在其中一个已删除的“空”OSX 文件夹上运行 ls 会产生以下结果:
ls: .: Permission denied
ls: ..: Permission denied
ls: subdirA: Permission denied
ls: subdirB: Permission denied
ls: subdirC: Permission denied
ls: subdirD: Permission denied
我相信我的文件可能仍在那里,但是权限被搞砸了。
答案1
嗯,您的目录是“空的”,因为您通过递归 chmod 删除了目录的“执行位”,而您需要能够列出目录中的文件。
至于为什么“root”无法更改权限:我猜你通过 sudo 运行了“root”命令,但这个命令不起作用,因为你的用户 shell 无法“看到”目录。通过真正的 root shell 运行命令不会遇到同样的问题。