LINUX.ORG.RU

Запретить remount

 ,


0

4

Есть файловая система, смонтированная в /shared. Я хочу запретить её remount. Хакинг ядра (4.2) приветствуется. Добрался до файла fs/super.c и функции do_remount_sb(), которая и выполняет remount. Но не пойму как внутри неё понять, что идёт remount именно /shared, чтобы вернуть какой-нибудь -EACCESS?

Ответ на: комментарий от former_anonymous

Может быть все-таки стоит тебе узнать, что делает команда mount? Со всеми ее опциями, там и перемонтирование есть. Но, т.к., речь же идет сквашфс (сорри за мой француский), то может быть стоит обратить внимание на особенности этой файловой системы.

Dennis7
()
Ответ на: комментарий от Dennis7

Может быть все-таки стоит тебе узнать, что делает команда mount? Со всеми ее опциями, там и перемонтирование есть

маунт просто делает сисколл, реальным перемонтированием занимается ядро в fs/super.c

Но, т.к., речь же идет сквашфс

/shared - на ext4

former_anonymous ★★★
() автор топика
Ответ на: комментарий от Sectoid

«фактически» это как именно?

Слушай, как разница? Механизм отлажен и работает. Вопрос только о перемонтировании к хакерам ядра, я знаю тут такие когда-то были. Вот их помощь мне реально нужна.

former_anonymous ★★★
() автор топика
Ответ на: комментарий от former_anonymous

По fs и ядру тебе нужно кастовать tailgunner'a тогда. Но, не факт, что он ответит

Dennis7
()
Ответ на: комментарий от Dennis7

А чё ты людям мозги парил про скваш?

Людей понесло куда-то не туда. В сторону замены ядра на чужое и прочую ересь. Я сказал что система на squashfs и замена ядра невозможна. Возможно, я описал это не совсем подробно. Корень на squashfs, /shared - на ext4. Хотя ни то ни другое к изначальной задаче не имеет отношения.

former_anonymous ★★★
() автор топика
Последнее исправление: former_anonymous (всего исправлений: 1)
Ответ на: комментарий от former_anonymous

Нехороший ты человек. Редиска ты. Ты же бля говорил, что у тебя ядро на скваше лежит, и что загрузчик «понимает» и «верит» в это.

Dennis7
()
Ответ на: комментарий от Dennis7

Нехороший ты человек. Редиска ты. Ты же бля говорил, что у тебя ядро на скваше лежит, и что загрузчик «понимает» и «верит» в это.

Ну так ядро и лежит на скваше, при чём тут /shared? Вся система включая /boot лежит на скваше. /shared монтируется динамически и является ext4 системой с noexec,nosuid,nodev.

former_anonymous ★★★
() автор топика
Ответ на: комментарий от Dennis7

хоть бы писк бы какой подал , или пук, а то люди не факт, что подумают

Это же фмлофщвшарфщварфвор, и он смог фвдлафуарйушарйура, и тогда фвадофвадолфватфтдфлва, взял и фвжафжварфжвора, но он фждвалфждлватдлфварыфоврпафлоыврпппфывоар

Dennis7
()
Последнее исправление: Dennis7 (всего исправлений: 1)
Ответ на: комментарий от former_anonymous

Я не лажу в VFS. Если тебе нужно разобраться в ее внутренностях, я не тот человек, у которого нужно спрашивать. Если нужно тупо запретить remount - патчи mount(2).

tailgunner ★★★★★
()
Ответ на: комментарий от Dennis7

принимай таблетки что дохтор прописал

anonymous
()
Ответ на: комментарий от anonymous

выше по треду совершенно верно отметили что mount дергает сискол

Надо же, анонимус не отличает mount(2) от mount(8).

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

да, не усмотрел... понадеялся на то что ты составляешь осмысленные предложения... а так выходит

ТС - как пропатчить ремаунт в ядре? каст tailgunner. tailgunner - я в vfs нуб, но если что, тупо пропатчи ремаунт (в ядре)

anonymous
()
Ответ на: комментарий от tailgunner

никаких сомнений :)

я так понимаю у ТС телек или медиаприставка. То что сквашфс запилили в бутлоадер - гут. Модули, я так предполагаю, подписанные. Возможно в шареный фолдер монтируется внешний носитель и есть желание не допустить его ремаунт на /bin, например.

ТС, насколько сильно предположения отклоняются от реальности?

anonymous
()

А почему вы начали смотреть fs/super.c - do_remount_sb(), а не fs/ namespace.c - do_remount(), путь ведь туда передаётся, там и сравнивайте... Но я так, мимокрокодил, ни разу не кернел хакер.

mky ★★★★★
()
Ответ на: комментарий от gh0stwizard

Чем вариант blacklist не устроил? Можно зашить в ядро

Что ты имеешь ввиду?

former_anonymous ★★★
() автор топика

А что мешает сделать umount, а потом mount с желаемыми параметрами? Алсо, прямой доступ к устройству как запретить руту? Потом есть всякие user space решения для доступа к fs.

anonymous
()
Ответ на: комментарий от anonymous

Не мешай опу осваивать бюджет на манязащиты.

anonymous
()

Ммм... А можно слегка бекграунда? Чтобы понять, какие методы имеет смысл предлагать, а какие нет.

kirk_johnson ★☆
()
Ответ на: комментарий от former_anonymous

Система на squashfs и ядро нельзя поменять в рантайме.

Я тебя огорчу: mmap на /dev/mem даст тебе полный доступ к памяти. Вывод /proc/kallsyms даст тебе смещения. Остальное исключительно дело техники. Так что проверяй наличие CONFIG_STRICT_DEVMEM :)

kirk_johnson ★☆
()

как вариант, заменить хакинг ядра на навешивание защиты через selinux|capacitible|hardened

anonymous
()
Ответ на: комментарий от kirk_johnson

Ммм... А можно слегка бекграунда? Чтобы понять, какие методы имеет смысл предлагать, а какие нет.

Предлагай любые, будет интересно обсудить.

former_anonymous ★★★
() автор топика
Ответ на: комментарий от former_anonymous

Это как и kexec сделано в первую очередь

А, ещё тебе придется как-то запретить загружаемые модули и [kj]probes. Иначе чуваки всё равно смогут присунуть чочо.

kirk_johnson ★☆
()
Ответ на: комментарий от former_anonymous

Предлагай любые, будет интересно обсудить.

Для начала назови граничные условия. Есть у тебя /shared, ты хочешь запретить её remount или mount/unmount? Просто это две разные плюшки.

В первом случае достаточно вставить нужный if в код обработчика в fs/namespace.c для определенной директории.

Во втором случае это полный треш и расчлененка, потому что тебе нужно обеспечить возможность init-системе делать mount и unmount на старте и остановке. В теории, ты можешь проверять PID процесса, который вызвал сисколл в том же обработчике. Но опять же - тебе нужно защитить ядро от модификаций.

kirk_johnson ★☆
()
Ответ на: комментарий от kirk_johnson

В первом случае достаточно вставить нужный if в код обработчика в fs/namespace.c для определенной директории.

Хотя бы первый вариант. Со вторым я буду разбираться отдельно.

former_anonymous ★★★
() автор топика
Ответ на: комментарий от former_anonymous

Учти, что в ядро не абсолютный путь приходит. Точнее, он может быть абсолютным, но не обязательно :)

kirk_johnson ★☆
()
Ответ на: комментарий от former_anonymous

В случае если разговор касается squashfs не стоит забывать что любые union mount fs вообще то взаимозаменяемы. Да и многие остальные фс зачастую тоже поддерживают даже неестественное и неродное монтирование.

init_6 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.