LINUX.ORG.RU

Алиас для каталога.


0

1

Есть каталог, к которому обращается огромное количество софта в системе, пусть это будет /etc. Задача: уничтожить /etc, его содержимое перенести в каталог /root/conf, и сделать так, чтобы весь софт, обращающийся в /etc, незаметно для себя попадал в /root/conf. Что-то подсказывает мне, что это нужно делать на уровне ядра. В какую конкретно сторону обратить своё внимание?

Добавлю: ни симлинки, ни mount -o bind не нужны. Нужно, чтобы в корне вообще не было /etc.

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

> Нужно, чтобы в корне вообще не было /etc.

А что за странная задача? Скажи для чего это надо, может подскажем, как эта задача по-человечески решается.

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

>А что за странная задача?

Это не имеет значения.

Скажи для чего это надо, может подскажем, как эта задача по-человечески решается.

Если бы мне нужно было это, я бы задал именно такой вопрос. Но вопрос так не стоял.

fragment
() автор топика

Насколько я понимаю, к ядру этот каталог имеет мало отношения. Каждая программа, которая хранит там конфиги, обращается самостоятельно. Соответственно, нужно каждой программе указать новый конфиг-каталог по отдельности.

Если нужно на уровне ядра - надо заниматься файловой системой (ссылки и т.д.), что тебе по условию не подходит.

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

> Добавлю: ни симлинки, ни mount -o bind не нужны. Нужно, чтобы в корне вообще не было /etc.

Неправильно ты бутерброд ешь.

Во-первых, ставишь нужный симлинк в корне. Во-вторых, накатываешь на ядро патч из Gobolinux, позволяющий выборочно скрывать элементы корня.

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

Но когда программа хочет пройти по нужному пути в ФС, она ведь к чему-то обращается, делает какие-то вызовы, так ведь? Наверное, за это отвечает какая-нибудь файловая подсистема ядра типа VFS? Разве нельзя в ней сделать трансляцию нужного пути?

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

>Во-вторых, накатываешь на ядро патч из Gobolinux, позволяющий выборочно скрывать элементы корня.

Я знаю про модуль GoboHide, но это изначально нерациональное решение. Чем играть с симлинками и скрывать этот мусор, лучше сразу сделать трансляцию пути и избавиться от ненужного каталога.

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

Можно наверно сделать что то типа «невидимой ссылки», что бы при обращении к некоему каталогу шло обращение к другому. Грубо говоря ls / не показывает /etc, а ls /etc показывает содержимое /root/conf.

Неясно только устроит ли такое, потому что неясно что вызвало такую постановку задачи.

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

Это и будет твоя «трансляция пути». Не нравится симлинк, делая mount --bind. Никакого мусора.

Это юниксвей — из простых деталей делать сложные устройства.

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

Трансляция на уровне VFS делается при помощи mount --bind. Скрытие элементов делается при помощи GoboHide. Твоя задача включает 2 подзадачи, для которых есть готовые решения. Если собираешься пилить свой велосипед вместо этого — ну ССЗБ.

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

>Твоя задача включает 2 подзадачи

А вы не разбивайте одну задачу на две. Задача поставлена просто: при запросе на получение содержимое каталога /etc запрашивающей программе отсылается содержимое каталога /root/conf. Без симлинков и патчей. Это же вроде элементарно должно решаться?

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

Честно говоря, не знаю, по видимому в ядре вставлять перехват обращений к данному каталогу.

Другой вопрос, что за причина требует прятать каталог. Если всё равно первое же обращение к нему его обнаружит. И если именно прятать необходимости нет, то может не понадобится лезть в ядро и можно обойтись более простыми средствами.

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

>И если именно прятать необходимости нет, то может не понадобится лезть в ядро и можно обойтись более простыми средствами.

Нужно не просто спрятать, а именно вообще убрать его.

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

> Если всё равно первое же обращение к нему его обнаружит.

Если имя каталога имеет вид fjhdfsiusdfbhsdfuydtyfdshgefs87reioujitjgoi, то, возможно, это такой способ авторизации.

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

> именно вообще убрать его.

И как?

Вот положим ls у нас даёт /bin /rooh /usr /var , /etc здесь нет. Положим мы по какой то причине выполнили ls /etc . И поскольку мы увидели что нам что то отобразилось, постольку сразу стало ясно что этот каталог на самом деле существует, хоть и «виртуально». И тут и возникает вопрос, что имеется в виду под «убрать»? Кстати, интересно, какой из путей покажет lsof.

Хотя если это скажем действительно что то типа авторизации, то это какое то объяснение. Но тогда чем не устраивает «спрятать».

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

>И поскольку мы увидели что нам что то отобразилось, постольку сразу стало ясно что этот каталог на самом деле существует, хоть и «виртуально»

Это мелочи, не важно.

fragment
() автор топика

Хорошо, зайдём с другой стороны. Задача такая: скрыть все симлинки в корне. GoboHide явно избыточен. Есть ли решение проще?

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

Как такое можно сделать, не правя исходники ls и не переименовывая etc (типа .etc, etc~)?

ls ведь скрывает только файлы, начинающиеся с точки или бекап-файлы.

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

>GoboHide явно избыточен. Есть ли решение проще?

Есть, перекопать исходники GoboHide и написать свой костыль без лишней избыточности.

mopsene ★★★
()

Есть решение для Гнома с использованием .hidden файла со списком скрываемых.

Можно добавить непечатаемый символ какой-нибудь в имя директории.

Есть ещё вариант при загрузке системы отвязать (unlink) директорию, и привязать при выходе, но это так.

Возможно, SELinux и подобные штуки могут прятать выборочно файлы.

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

>Как такое можно сделать, не правя исходники ls и не переименовывая etc (типа .etc, etc~)?

Перехватывать вызов ls, отправлять ее выхлоп в /dev/null, а потом вызывать собственный ls, который работает как надо.

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

Ну я так понял, он собрался ядро патчить, на предмет перехвата обращений с последующим перенаправлением.

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

Так проще в исходниках проверку на этот путь добавить.

И ТС это не поможет - ему нужно ВЕСЬ софт обманывать, не только ls.

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

> Хорошо, зайдём с другой стороны. Задача такая: скрыть все симлинки в корне. GoboHide явно избыточен. Есть ли решение проще?

Тебе нужно скрыть конкретно от ls?

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

>И ТС это не поможет - ему нужно ВЕСЬ софт обманывать, не только ls.

Я не совсем понял задачу ТС. Самое главное на кого она направлена. На пользователей, которые не должны видеть /etc или на софт, который должен обращаться к другому каталогу? Если второе, то похоже на какой-то ШINDOШS-вирус, благо эта задача в антиофтопике без накатывания патча на ядро не решается.

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

Правь исходники ls на предмет листинга симлинков (для корня не выводить).

schizoid ★★★
()
Ответ на: НОЗАЧЕМ? от Xenon

Я уже спрашивал, ТС не говорит.

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

Тогда при поиске через locate или find будут видны эти симлинки. Придётся всё же немного переделать GoboHide.

fragment
() автор топика

ну или LD_PRELOAD и ручной костылизм :)

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

> То есть патчить всё равно придётся, я имел в виду, что без патча типа GoboHide.

в результате твой «патч» все равно будет очень похож на него. просто выкини из него неугодные тебе вещи, оставь только core функционал и пользуйся.

вообще, задача тривиальна - в подсистеме VFS есть функция отвечающая за pathname expansion, тебе достаточно туда добавить условие. хз нафига такое может быть нужно

val-amart ★★★★★
()
Ответ на: комментарий от geekless

>> Если всё равно первое же обращение к нему его обнаружит.

Если имя каталога имеет вид fjhdfsiusdfbhsdfuydtyfdshgefs87reioujitjgoi, то, возможно, это такой способ авторизации.


security through obscurity - зло.

val-amart ★★★★★
()
Ответ на: комментарий от mopsene

> Если второе, то похоже на какой-то ШINDOШS-вирус, благо эта задача в антиофтопике без накатывания патча на ядро не решается.

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

val-amart ★★★★★
()

Как вариант - можно использовать внешнюю переменную для хранения пути конфигурационных файлов. НО проблема в том, как сказать это всем программам, чтобы они использовали эту переменную. Другой вопрос - как программы будут читать конфиги из /root/ если по дефолту никто не имеет туда права.

s1392781
()

Не въезжаю, к чему такие извращения?

Ну, допустим, переместишь ты конфиги в /root/conf, тебе все равно придется делать права на эту директорию такими же, как они были на /etc/ плюс еще и права выставить 753, что само по себе - лишняя дырища (ну или накатывать патч на ядро так, чтобы он не смотрел права на вышележащие директории); накатаешь на ядро патч, который будет анализировать все сисвызовы к дисковой подсистеме и вместо сисвызовов к /etc/path выполнять то же, но для /root/conf/path. Т.е. при помощи ls /etc или в mc каком-нибудь любой все равно сможет увидеть полное содержимое /etc (хоть оно и будет в другом месте).

И смысл?

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

> Да, чтобы никто, включая рута, не видел этих симлинков.

Подмени ls на свой патченный.

blackst0ne ★★★★★
()
Ответ на: комментарий от val-amart

> вообще, задача тривиальна - в подсистеме VFS есть функция отвечающая за pathname expansion, тебе достаточно туда добавить условие. хз нафига такое может быть нужно

malware.

blackst0ne ★★★★★
()
Ответ на: А ТС-то - уголовник! от Eddy_Em

Дружно кричим забан и выпиливаем за кулхацкерство? =) Или подождем, все-таки работающий руткит - это интересно.

P.S. Еще одну звезду отрастил? Поздравляю(хотя наверняка опоздал, картинки были отключены).

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

Или подождем, все-таки работающий руткит - это интересно.

Подождем, а потом посадим =)

Еще одну звезду отрастил? Поздравляю

Спасибо, сегодня как раз score стало равно 400.

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