mount + cryptsetup
Szymon Siwek
sls w poczta.wp.pl
Śro, 12 Lip 2006, 21:53:51 CEST
Witam!
Natknąłem się na problem z zamontowaniem zaszyfrowanego pliku.
#v+
mount -o encryption=somecipher,loop somefile /mnt/somedir
#v-
rzuca takim tekstem:
#v+
mount: wrong fs type, bad option, bad superblock on
/dev/mapper/loop-0-crypt,
missing codepage or other error
In some cases useful info is found in syslog - try
dmesg | tail or so
#v-
device-mapper-1.01.05-2
cryptsetup-0.2-1.pre1.8.1
mount-2.12r-4
kernel-2.6.16.21-1
Śledztwo wykazało, że do systemowej funkcji mount przekazywana jest flaga
MS_CRYPT, a jądro tego nie łyka. Poprawka załączona.
Jeszcze zabawniej jest z najnowszym device-mapperem (1.02.07-0.17).
mount oraz cryptsetup wywoływany bezpośrednio segfaultuje. Poprawka (albo
hack) również załączona.
P.S.
Nie gwarantuję sensowności poprawek.
--
Szymon Siwek
Los nikomu nie szczędzi rozczarowań.
-------------- następna część ---------
Index: util-linux-dm_crypt.patch
===================================================================
RCS file: /cvsroot/SOURCES/util-linux-dm_crypt.patch,v
retrieving revision 1.2
diff -u -r1.2 util-linux-dm_crypt.patch
--- util-linux-dm_crypt.patch 27 Feb 2005 19:09:11 -0000 1.2
+++ util-linux-dm_crypt.patch 12 Jul 2006 14:55:26 -0000
@@ -263,7 +263,7 @@
#include "loop.h"
#include "linux_fs.h" /* for BLKGETSIZE */
#include "mount_guess_rootdev.h"
-@@ -98,6 +99,7 @@
+@@ -98,11 +99,12 @@
#define MS_USER 0x20000000
#define MS_OWNER 0x10000000
#define MS_GROUP 0x08000000
@@ -271,6 +271,12 @@
#define MS_COMMENT 0x00020000
#define MS_LOOP 0x00010000
+ /* Options that we keep the mount system call from seeing. */
+-#define MS_NOSYS (MS_NOAUTO|MS_USERS|MS_USER|MS_COMMENT|MS_LOOP)
++#define MS_NOSYS (MS_NOAUTO|MS_USERS|MS_USER|MS_COMMENT|MS_LOOP|MS_CRYPT)
+
+ /* Options that we keep from appearing in the options field in the mtab. */
+ #define MS_NOMTAB (MS_REMOUNT|MS_NOAUTO|MS_USERS|MS_USER)
@@ -607,7 +609,7 @@
*type = opt_vfstype;
}
-------------- następna część ---------
--- cryptsetup-0.2-orig/lib/libdevmapper.c 2006-07-12 21:06:34.000000000 +0200
+++ cryptsetup-0.2/lib/libdevmapper.c 2006-07-12 21:06:43.000000000 +0200
@@ -303,6 +303,10 @@
r = -EINVAL;
if (!dm_task_get_info(dmt, &dmi))
goto out;
+ if (!dmi.exists) {
+ r = -ENODEV;
+ goto out;
+ }
next = dm_get_next_target(dmt, next, &start, &length,
&target_type, ¶ms);
Więcej informacji o liście dyskusyjnej pld-devel-pl