我在笔记本电脑上使用 Ubuntu 12.04。我有一个外部 USB 磁盘驱动器,由另一个 Linux 系统(特别是运行常规 Linksys 固件的 Linksys NSLU2)格式化为 E2fs/E3fs。从命令行以 root 用户身份,我在挂载点上使用“chmod 777”允许我将大约 400Gb 的文件写入此磁盘。当我将此 USB 磁盘驱动器移回正常系统时,新文件在目录列表中可见,但不可读。这是因为文件权限被搞砸了(我的背景是简单的 Windows 系统,所以我对 Linux 文件权限知之甚少)。笔记本电脑新写入的文件显示所有者为“用户名”。由 NSLU2(磁盘驱动器的正常预期主机)写入并正确访问的旧文件将文件所有者显示为“501”、“1000”、“2000”等。
我曾尝试使用 Nautilus 将文件权限更改为预期权限,但 Nautilus 只允许我从预定义列表中选择所有者名称,而不包括我想要的所有者名称。当我尝试将具有所需用户名的用户添加到 Ubuntu 系统时(以允许 Nautilus 提供正确的选择),我收到一条我无法理解的错误消息 - 我怀疑 Ubuntu 不喜欢这些数字用户名,因为一些研究表明它们在其他 Linux 系统中用于特殊用途。
我如何修复此外部磁盘上的文件权限 - 特别是所有者和组名?
谢谢,彼得
答案1
NSLU2 有自己的用户。这些用户与 Ubuntu 系统不匹配,因此您必须使用 NSLU2 的 UID 和 GID(如您所写,501、1000、2000)。更改文件所有权时使用名称不起作用。您可以通过网络复制文件来阻止这种情况,但这个过程会慢得多。
将 NSLU2 上的磁盘插入您的 Ubuntu 计算机。找到您复制到 NSLU2 磁盘的文件。将所有者和组更改为适合 NSLU2 的数字 UID 和 GID。例如...
chown 1000:1000 filename.ext
如果您知道 NSLU2 文件的正确 UID 和 GID,并且您使用 Ubuntu 将这些文件复制到 NSLU2,那么您可能能够在一行中找到您复制的文件并更改所有权:
find /media/nslu2 -user peter -exec chown 1000:1000 {} \;
挂载点是 /media/nslu2;用于复制文件的 Ubuntu 用户名是 peter;NSLU2 文件的正确 UID 和 GID 是 1000。
警告
您可能想在传递“-exec”开关之前先看看 find 命令实际上找到什么。
find /media/nslu2 -user peter
更好的固件
NSLU2 有固件替代品(解开) 可以为 NSLU2 提供 SSH 访问。