Начинаю понемногу собирать информацию для одной задумки.
Соврешенно не знаю как это правильно называется и есть ли такое вообще в природе.
Итак, хочется иметь возможность примонтировать некоторую файловую систему (на самом деле это будет виртуальный криптоконтейнер, монтируемый в ФС с помощью программ типа veracrypt) эксклюзивно для единственного процесса (т.е. моего процесса, запускающего эту процедуру).
Никакие другие процессы и приложения не должны видеть этой ФС. Разумеется эта ФС не должна появляться в проводнике и прочее.
Путь к ней разумеется может не начинаться с буквы диска, пускай будет \\?\Volume{11111111-2222-3333-4444-555555555555}\
То есть ОС берет на себя работу с файловой системой, я из своей программы открываю там файлы как обычно, работаю с ними как обычно, а другие процессы в системе даже не знают о существовании этого "диска".
Интересуют все ОС, но начинаю с винды как с наиболее распространенной платформы (хотя если вы знаете как это делать в линуксе — тоже пишите, будет полезно на будущее + правильные ключевые слова для поиска тоже пригодятся)
Приветствуются любые идеи, предложения и рассуждения на тему.
Re: Примонтировать диск экслюзивно для приложения/процесса
Здравствуйте, x-code, Вы писали:
XC>Начинаю понемногу собирать информацию для одной задумки. XC>Соврешенно не знаю как это правильно называется и есть ли такое вообще в природе.
XC>Итак, хочется иметь возможность примонтировать некоторую файловую систему (на самом деле это будет виртуальный криптоконтейнер, монтируемый в ФС с помощью программ типа veracrypt) эксклюзивно для единственного процесса (т.е. моего процесса, запускающего эту процедуру). XC>Никакие другие процессы и приложения не должны видеть этой ФС. Разумеется эта ФС не должна появляться в проводнике и прочее.
XC>Путь к ней разумеется может не начинаться с буквы диска, пускай будет \\?\Volume{11111111-2222-3333-4444-555555555555}\
XC>То есть ОС берет на себя работу с файловой системой, я из своей программы открываю там файлы как обычно, работаю с ними как обычно, а другие процессы в системе даже не знают о существовании этого "диска".
XC>Интересуют все ОС, но начинаю с винды как с наиболее распространенной платформы (хотя если вы знаете как это делать в линуксе — тоже пишите, будет полезно на будущее + правильные ключевые слова для поиска тоже пригодятся)
XC>Приветствуются любые идеи, предложения и рассуждения на тему.
Инжектировать в процесс свою dll и повесить хуки на файловый user-level api?
Re[2]: Примонтировать диск экслюзивно для приложения/процесса
Здравствуйте, scf, Вы писали:
scf>Инжектировать в процесс свою dll и повесить хуки на файловый user-level api?
Не понял в какой процесс и зачем.
Есть файловая система с драйвером к ней. Хоть флэшка, хоть iso образ, хоть что.
Нужно обеспечить доступ к этой ФС только для одного приложения. Типа как файл можно открыть эксклюзивно.
Понятно что можно сделать собственную реализацию API файловой системы. Но это плохо — лучше чем разработчики NTFS я все равно не сделаю, да и зачем делать если есть готовое. Нужно просто сказать винде "не давай доступ к этому никому кроме моего процесса".
Мне кажется что эксклюзивный доступ к логическому диску должен быть, и возможно это что-то достаточно простое.
Всякое там форматирование по идее так работает...
Доступ (даже для чтения) к некоторым разделам возможен только для администратора, или только для системы.
Re[3]: Примонтировать диск экслюзивно для приложения/процесса
Здравствуйте, x-code, Вы писали:
XC>Здравствуйте, scf, Вы писали:
scf>>Инжектировать в процесс свою dll и повесить хуки на файловый user-level api?
XC>Не понял в какой процесс и зачем. XC>Есть файловая система с драйвером к ней. Хоть флэшка, хоть iso образ, хоть что. XC>Нужно обеспечить доступ к этой ФС только для одного приложения. Типа как файл можно открыть эксклюзивно.
XC>Понятно что можно сделать собственную реализацию API файловой системы. Но это плохо — лучше чем разработчики NTFS я все равно не сделаю, да и зачем делать если есть готовое. Нужно просто сказать винде "не давай доступ к этому никому кроме моего процесса". XC>Мне кажется что эксклюзивный доступ к логическому диску должен быть, и возможно это что-то достаточно простое. XC>Всякое там форматирование по идее так работает... XC>Доступ (даже для чтения) к некоторым разделам возможен только для администратора, или только для системы.
админ и система это юзера, а ты про процессы, процесс же чейто, вот ему и дай доступ стандартно, а остальным юзерам ограничь
Re: Примонтировать диск экслюзивно для приложения/процесса
Здравствуйте, x-code, Вы писали:
XC>Начинаю понемногу собирать информацию для одной задумки. XC>Соврешенно не знаю как это правильно называется и есть ли такое вообще в природе.
Эта идея впервые появилась в Plan 9. Там это описывается следующим образом: каждый процесс имеет свой собственный личный namespace (ведь монтирование файловый систем в операционке, в которой "все есть файл" формирует именно что пространство имен процесса), который наследуется при порождении дочерных процессов, но на namespace родутеля дочерний процесс повлиять не может. Соответственно, например, когда пользователь входит в систему, процесс, отвечающий за допуск пользователей, формирует пользовательский namespace и запускает shell, и ничего лишнего пользователю просто просто не показывают.
В линухе это в каком-то виде тоже есть, подробностей не знаю. Есть ли такое вообще в венде, не имею понятия.