Доступ к файлу по его идентификатору и изменение атрибутов файла

7565
0xDEAD BEEF

Как и у каждого файла, каталоги имеют идентификатор файла. Вы можете увидеть их, набрав

ls -i 
  1. Как просмотреть содержимое файла по его идентификатору?

  2. Как мне изменить атрибут каталога на файл (удалить D) и наоборот!

3
"inode", а не "id". Ignacio Vazquez-Abrams 14 лет назад 1

3 ответа на вопрос

2
harrymc

inode к имени файла:

find / -inum <number> 

Преобразование каталога в файл невозможно.

Для получения информации о внутренних данных каталога см. Dirent.h .

Вы также можете обратиться к библиотеке GNU C относительно доступа к каталогам .

Я хочу увидеть, что такое каталог, как он хранится в системе Linux. найти / -inum, конечно, не то, что я после 0xDEAD BEEF 14 лет назад 0
@ 0xDEAD BEEF: я добавил еще немного информации, которая может послужить отправной точкой. Это продвинутые темы о Linux, которые требуют реального изучения. harrymc 14 лет назад 0
я помню, давным-давно я был в состоянии редактировать информацию, которая была сохранена в жесткой / или мягкой ссылке. Таким образом, я смог получить доступ к узлу каталога (например). Таким образом, имея ссылку на файл с индексом в каталог. Но сегодня я забыл всю эту магию .. :( 0xDEAD BEEF 14 лет назад 0
1
Stefan Lasiewski

Похоже, данные, которые вы ищете, находятся в файловой системе. Ответ на ваш вопрос зависит от того, какую файловую систему вы используете. Я предполагаю, что вы используете ext3.

Для расширенной возможности просмотра и изменения данных в файловой системе, смотрите debugfs (8) . Но будьте осторожны, вы можете действительно испортить вещи с помощью этого инструмента. Это хорошая возможность использовать виртуальную машину со снимками (как я рекомендовал здесь ). Сделайте снимок, а затем измените файловую систему так, как вы хотите. Вы всегда можете восстановить виртуальную машину из более раннего снимка.

Большой! Я использовал debugfs / dev / disk / by-id / .., затем выдал команду catи получил содержимое inode! Однако в этот момент я запутался - я не увидел свойств файла в inode. Только данные. Затем я сделал то же самое для каталога, но он также не содержал свойств файла, поэтому вопрос - где хранятся свойства файла? 0xDEAD BEEF 14 лет назад 0
Хорошо! решена. Использовал debugfs mi (изменить inode) перед открытием debugws с параметром -w. Эта команда позволяет мне изменять inode, в то время как cat и dump получают только те данные, на которые указывает этот inode! Это было весело! 0xDEAD BEEF 14 лет назад 0
Lieliski !. И это продвинутые вещи. Как ни странно, я редко делал подобные вещи за свою карьеру (я занимался этим почти 13 лет), за исключением тех времен, когда я учил себя Linux. Теперь пришло время учиться снова. Stefan Lasiewski 14 лет назад 0
0
0xDEAD BEEF

- решение и как все работает - Итак, inode - это то, к чему относится каждый каталог. Фактически - каждый каталог является файлом, который содержит список имен файлов и соответствующие им номера инодов,

Итак, если вы хотите увидеть, что внутри inode каталога, это то, как вы это делаете -

1) открыть debugfs с вашего жесткого диска. Я нашел мой в / dev / disc / by-id / ..

debugfs ATA-434 ... blalbalba

затем введитеcat <inode number>

или жеcat filename

или жеdump <inode number> outfile

и вы получите данные этого инода!

Но ждать! Это не так!

inode фактически не содержит данных. Содержит указатели на данные (номера блоков). На самом деле inode содержит файловый режим, атрибуты, владельца, группу, размер, ссылки и многое другое! Хорошая вещь? Мы можем использовать debugfs не только для просмотра этих данных, но и для их изменения!

Вот как ты это делаешь!

1) открыть debugfs в режиме записи debugfs -w ATA4249...blalbla

2) открыть inode в режиме изменения и изменить / просмотреть все поля, которые вам нравятся

mi <inode number>

Это оно!

Похожие вопросы