Как мы знаем, «Все в Linux» - это файл, и, кроме того, каталог - это просто файл, содержащий другие файлы.
Итак, я не знаю, возможна ли эта «сумасшедшая идея», но она должна быть в некотором роде согласно вышеуказанному принципу.
Проще говоря, как я могу изменить существующий пустой файл в каталог. Является ли это возможным?
Как мозговой штурм, я подумал о некоторой модификации метаданных файла и сделал это метаданными каталога, которые должны были это сделать !!
Любая информация приветствуется.
ОБНОВЛЕНИЕ: Конечно, я не хочу удалять файл и создавать каталог вместо! Я просто пытаюсь узнать, насколько философия выше применима, если вы можете играть с некоторыми метаданными файла.
Ответы:
Достижение конверсии
Создание тестовой файловой системы
Чтобы сохранить основную файловую систему от возможного повреждения после проведения этого эксперимента, мы собираемся создать небольшую файловую систему внутри обычного файла для целей тестирования.
Создайте заполненный нулями файл
test
размером 10 мегабайт:Создайте файловую систему Ext4 внутри файла, как если бы это был раздел:
Создание некоторых файлов и каталогов
Теперь у нас есть полностью функциональная файловая система внутри
test
файла, поэтому мы собираемся создать в ней несколько файлов и каталогов.Смонтируйте вновь созданную файловую систему внутри
/mnt
:Создайте файл и каталог:
Проверьте содержимое файловой системы:
Вывод должен быть примерно таким:
Размонтируйте тестовую файловую систему:
Обмен файла и папки
Запуск
debugfs
противtest
файла с разрешением записи (-w
флаг):Конвертировать
file
в папку:В
debugfs
командной строке введите это:Появится подсказка с вопросом о режиме; введите это:
Продолжайте нажимать, returnчтобы оставить оставшиеся данные как есть, пока приглашение не появится снова.
Конвертировать
folder
в файл:В
debugfs
командной строке введите это:Появится подсказка с вопросом о режиме; введите это:
Продолжайте нажимать, returnчтобы оставить оставшиеся данные как есть, пока приглашение не появится снова.
Для выхода из
debugfs
командной строки просто нажмите, qа затемreturnПроверка успешности операции
Смонтируйте тестовую файловую систему снова:
Проверьте содержимое файловой системы:
Теперь он должен показывать файл, как если бы он был каталогом, и наоборот :
Скрипт для расчета режимов inode
Посмотреть скрипт на GitHub
Форы
дальнейшее чтение
https://ext4.wiki.kernel.org/index.php/Ext4_Disk_Layout#Inode_Table
Спасибо @tallus . Он дал мне отличный намек:
источник
0100755
должны быть0100644
для того, чтобы не изменять права доступа к файлу, так как 755 даст исполнение для преобразованного файла ...