Jas*_*nF4 2 chown data-recovery ddrescue
我运行手术刀来恢复文件。输入磁盘是我使用 ddrescue 制作的故障 Windows 磁盘的副本。输出目录(来自手术刀)位于我的 Linux 磁盘上的 exfat 分区上。我使用 exfat 是因为 Windows 可以看到并读取该分区 - 并且这些分区来自 Windows。
\n\n我无法更改文件的所有权。它们归 root 所有。
\n\n例如,在目录/media/me/restored/output/jpg-1-0
\n -rwxrwxrwx 1 root root 2983 Dec 29 23:14 00003483.jpg
$sudo chown me 00003483.jpg
\nown: 更改 \'00003483.jpg\' 的所有权:不允许操作
$sudo chattr -i 00003483.jpg
\nchattr:读取 00003483.jpg 上的标志时未实现功能
我也无法更改目录的所有权。
\n\n我也尝试过这个sudo su -
我可以使用 eog(命令行 - 图像查看器)打开恢复的 .jpg 文件,但无法使用 Kria(Linux 图像编辑器,GUI)打开文件。
\n\n为什么手术刀上的网站不告诉您如何更改文件权限?问题是与exfat不兼容吗?
\n\n谢谢你的帮助。
\n\n更新
\n\n卸载分区,将“恢复”目录的所有权更改为我的用户ID,然后运行sudo mount -o rw,user,uid=1000,dmask=007,fmask=117 /dev/sdb4 /media/me/restored不起作用。“恢复”的目录现在再次由 root 拥有,并且我尝试上面列出的步骤得到了完全相同的结果。
更新 - 添加调试信息
\n\nlsblk -f
\nsdb \n\xe2\x94\x9c\xe2\x94\x80sdb1 vfat xxxx-xxxx /boot/efi\n\xe2\x94\x9c\xe2\x94\x80sdb2 ext4 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /\n\xe2\x94\x9c\xe2\x94\x80sdb3 swap xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx [SWAP]\n\xe2\x94\x94\xe2\x94\x80sdb4 exfat SSD-D xxxx-xxxx /media/me/rest \nRun Code Online (Sandbox Code Playgroud)\n\n更新
\n\n关于已接受的答案,这个问题已通过上面在第一次更新下给出的安装命令得到修复,还有其他一些东西 - 正是我不知道的。当我第一次这样做时,文件的所有权仍然是 root。安装命令是相同的,因为我将其从终端复制到此处。所有恢复的文件现在都归我所有(而不是 root)。
\n您无法更改单个文件(或目录)的所有权。Microsoft 文件系统(exFAT、Fat32 和 NTFS)中的所有权和权限是在安装时设置的,更改它的唯一方法(对于 Linux)是重新安装文件系统(或卸载并再次安装)。
\n\n请参阅此链接的详细信息。
\n\nlsblk -f\n\nloop0 \n\xe2\x94\x94\xe2\x94\x80cryptswap1\n swap cbxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx [SWAP]\nsda isw_raid_m \n\xe2\x94\x9c\xe2\x94\x80sda1 vfat SYSTEM_DRV 90xx-xxxx \n\xe2\x94\x9c\xe2\x94\x80sda2 isw_raid_m \n\xe2\x94\x9c\xe2\x94\x80sda3 ntfs Windows E2xxxxxxxxxxxxxx /media/me/Wind\n\xe2\x94\x9c\xe2\x94\x80sda4 exfat Restored B4xx-xxxx /media/me/Rest\n\xe2\x94\x94\xe2\x94\x80sda5 ntfs WINRE_DRV B2xxxxxxxxxxxxxx \nsdb \n\xe2\x94\x9c\xe2\x94\x80sdb1 vfat A3xx-xxxx /boot/efi\n\xe2\x94\x9c\xe2\x94\x80sdb2 ext4 3bxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /\n\xe2\x94\x9c\xe2\x94\x80sdb3 swap 3cxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx [SWAP]\n\xe2\x94\x94\xe2\x94\x80sdb4 exfat SSD-D 4Cxx-xxxx /media/me/rest\nsdc \n\xe2\x94\x9c\xe2\x94\x80sdc1 vfat ESP A2xx-xxxx \n\xe2\x94\x9c\xe2\x94\x80sdc2 vfat DIAGS 9Exx-xxxx \n\xe2\x94\x9c\xe2\x94\x80sdc3 ntfs WINRETOOLS 72xxxxxxxxxxxxxx \n\xe2\x94\x9c\xe2\x94\x80sdc4 ntfs OS 92xxxxxxxxxxxxxx \n\xe2\x94\x94\xe2\x94\x80sdc5\n\ncat /etc/mtab # edited to focus on the relevant lines\n\n/dev/sdb4 /media/me/restored fuseblk rw,nosuid,nodev,relatime,user_id=0,group_id=0,default_permissions,allow_other,blksize=4096 0 0\nRun Code Online (Sandbox Code Playgroud)\n\n您尚未更改正在运行的操作系统的驱动器上 exfat 分区的用户 ID (0 <---> root)
\n\n/dev/sdb2 / ext4 rw,relatime,errors=remount-ro,stripe=256 0 0\n/dev/sdb1 /boot/efi vfat rw,relatime,fmask=0077,dmask=0077,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro 0 0\nRun Code Online (Sandbox Code Playgroud)\n\nsudodus@bionic64 ~ $ lsblk -f /dev/sdc\nsdc iso9660 Xubuntu Core 19.10 - amd64 2019-10-17-15-54-31-00 \n\xe2\x94\x9c\xe2\x94\x80sdc1 iso9660 Xubuntu Core 19.10 - amd64 2019-10-17-15-54-31-00 /media/sudodus/Xubuntu Core 19.10 - amd64\n\xe2\x94\x9c\xe2\x94\x80sdc2 vfat 866D-0A62 \n\xe2\x94\x94\xe2\x94\x80sdc3 exfat USBDATA 5673-C08D /media/sudodus/USBDATA\nRun Code Online (Sandbox Code Playgroud)\n\n我的 exfat 文件系统位于/dev/sdc3,我检查了权限,
sudodus@bionic64 ~ $ grep \'sdc3\' /etc/mtab\n/dev/sdc3 /media/sudodus/USBDATA fuseblk rw,nosuid,nodev,relatime,user_id=0,group_id=0,default_permissions,allow_other,blksize=4096 0 0\nRun Code Online (Sandbox Code Playgroud)\n\n卸载分区,
\n\nsudodus@bionic64 ~ $ sudo umount /dev/sdc3\n[sudo] l\xc3\xb6senord f\xc3\xb6r sudodus: \nRun Code Online (Sandbox Code Playgroud)\n\n根据链接答案中的说明挂载分区(针对实际设备 /dev/sdc3 进行修改)。
\n\nsudodus@bionic64 ~ $ sudo mount -o rw,user,uid=1000,dmask=007,fmask=117 /dev/sdc3 /mnt/sd1\nFUSE exfat 1.2.8\nRun Code Online (Sandbox Code Playgroud)\n\n检查所有权(是的,是我)和权限ls -l
sudodus@bionic64 ~ $ sudo ls -l /mnt/sd1\ntotalt 128\n-rw-rw---- 1 sudodus root 29 dec 29 17:49 hej.txt\nRun Code Online (Sandbox Code Playgroud)\n\n建立一个子目录
\n\nsudodus@bionic64 ~ $ mkdir /mnt/sd1/subdir\nRun Code Online (Sandbox Code Playgroud)\n\n创建一个文件(作为普通用户),
\n\nsudodus@bionic64 ~ $ echo "Hello World" > /mnt/sd1/hello.txt\nRun Code Online (Sandbox Code Playgroud)\n\n最后验证它是否有效并检查所有权和权限
\n\nsudodus@bionic64 ~ $ sudo ls -l /mnt/sd1\ntotalt 384\n-rw-rw---- 1 sudodus root 29 dec 29 17:49 hej.txt\n-rw-rw---- 1 sudodus root 12 dec 30 15:56 hello.txt\ndrwxrwx--- 1 sudodus root 131072 dec 30 15:54 subdir\nsudodus@bionic64 ~ $ \nRun Code Online (Sandbox Code Playgroud)\n\n/dev/sdb4建议使用 exfat 的命令行我假设你的用户ID是1000(创建的第一个用户ID),
\n\n检查与
\n\ngrep "^$USER" /etc/group\nRun Code Online (Sandbox Code Playgroud)\n\n并uid=1000根据需要进行修改。
sudo umount /dev/sdb4\nsudo mkdir /mnt/sd4 # create mount point (only once)\nsudo mount -o rw,user,uid=1000,dmask=007,fmask=117 /dev/sdb4 /mnt/sd4\nRun Code Online (Sandbox Code Playgroud)\n\n如果您遇到问题,您可能需要当前版本的 exfat 工具,
\n\nsudo apt update\nsudo apt install exfat-utils exfat-fuse\nRun Code Online (Sandbox Code Playgroud)\n\n您可能希望在启动时自动挂载 exfat 分区。在这种情况下,我建议在您的文件中添加以下几行/etc/fstab,
# partition with exfat file system\nUUID=4Cxx-xxxx /mnt/sd4 exfat defaults,rw,user,uid=1000,dmask=007,fmask=117 0 0\nRun Code Online (Sandbox Code Playgroud)\n\n修改UUID=4Cxx-xxxx以匹配文件系统的实际 UUID。
请参阅man fstab参考资料 来了解这六个字段中每个字段的详细说明。
| 归档时间: |
|
| 查看次数: |
1847 次 |
| 最近记录: |