背景
我在 Windows 中设置了一个 TrueCrypt 卷,我想在 Linux 中写入它。它是我已安装到目录的硬盘驱动器中的一个文件:drwx------ 1 user user 20K Aug 18 02:53 hdd/
。我还尝试从文件的本地副本中读取。我运行了以下命令并能够从中读取,但无法以 root 身份对其进行 chmod 或写入。
user@PC:~$ sudo losetup /dev/loop0 /path/to/volume/file
user@PC:~$ sudo tcplay -d /dev/loop0 -m tcvol
user@PC:~$ sudo mkdir /media/user/tcvol
user@PC:~$ sudo chown user /media/user/tcvol
user@PC:~$ sudo chmod 777 /media/user/tcvol
user@PC:~$ sudo mount /dev/mapper/tcvol /media/user/tcvol
user@PC:~$ sudo cat /media/user/tcvol/somefile
some contents
user@PC:~$ sudo echo "hello world" > /media/user/tcvol/test.txt
bash: /media/user/tcvol/test.txt: Permission denied
此时,我可以从卷中读取,但即使以 root 身份也无法对任何卷内容进行 chmod 或写入。chmod 777 -R /media/user/tcvol
没有输出并且不会更改权限;同样如此chown
。ll
产生如下输出:
user@PC:~$ ll /media/user/tcvol
-rwxr-xr-x 1 root root 12 Jul 28 10:06 somefile
问题
我安装此卷后无法写入该卷。出了什么问题?
更多细节
user@PC:~$ sudo tcplay -d /dev/loop0 -i
Device: /dev/loop0
PBKDF2 PRF: whirlpool
PBKDF2 iterations: 1000
Cipher: SERPENT-256-XTS
Key Length: 512 bits
CRC Key Data: 0x494f9a81
Sector size: 512
Volume size: 1536 sectors
IV offset: 256
Block offset: 256
答案1
我能够弄清楚这一点。由于关于 tcplay 的其他问题只有 2 个,而且都没有解决这个特定问题,所以我决定分享我的发现。事不宜迟,我的答案是:
user@PC:~$ vim /media/user/tcvol/newfile.txt
(i "hello world" esc :wq)
user@PC:~$ cat /media/user/tcvol/newfile.txt
hello world
写入问题是 echo 命令,但我不确定为什么 chmod 不起作用。经过一番折腾之后。我创建了一个用于挂载和卸载 TrueCrypt 卷的脚本以普通用户的身份。我将其写入/usr/bin/tcmount
并将其 chmodded 为 755。最显著的变化是:
user@PS:~$ sudo mount -o uid=`id -u` /dev/loopX /media/user/whatever
该-o uid
标志确保用户帐户对已挂载卷具有 rwx 访问权限。希望有人会发现这很有用。
编辑:我将脚本内容移至 pastebin 粘贴。这让答案变得太杂乱了。