Я хочу скрыть некоторые файлы так, чтобы ls -a
их даже не удалось найти. Я не говорю о добавлении «.» перед именем файла. Я думал, что могу ли я создать отдельные системные вызовы для доступа к этим файлам. На самом деле мне нужно скрыть некоторые файлы журналов от пользователя. Я храню данные MAC некоторых файлов и не хочу, чтобы пользователь видел эти файлы журналов. В настоящее время я знаю только один способ скрыть данные, а именно добавить «.» перед именем файла. Но файл может быть виден пользователю с помощью простого вызова ls -a
. Поэтому я хочу узнать, есть ли другой способ скрыть эти данные журнала?
решение1
Как уже отмечалось, если целью является ограничение доступа к постоянному файлу, то его сокрытие, вероятно, является неправильным подходом. В этом случае решением может стать использование соответствующих мер контроля доступа или даже криптографии, если приложение того требует. С другой стороны, создание «скрытого»временныйфайлы — это совершенно законный вариант использования.
В Linux, начиная с версии ядра 3.11,open()
системный вызов поддерживает O_TMPFILE
флаг, который может быть использован для создания неименованных временных файлов. При использовании этого флагаимя_путиАргумент to open()
используется для указания каталога, в котором создается неименованный inode. Однако, поскольку основным вариантом использования for O_TMPFILE
является, как следует из названия, созданиевременныйфайлы, это не подходит для постоянного хранения, так как файл будет потерян, когда последний дескриптор файла будет закрыт, если файлу не дано имя. Файлу может быть дано имя сlinkat()
системный вызов, если только O_EXCL
флаг не был указан в дополнение к O_TMPFILE
, в этом случае связывание файла с файловой системой предотвращается.
Недавно добавленная O_TMPFILE
функциональность имеет важное значение, поскольку ее можно использовать для предоставления следующих свойств временным файлам:
- Создание, свободное от гоночных условий.
- Автоматическое удаление при закрытии.
- Недоступно ни по одному пути.
- Не подвержен атакам с использованием символических ссылок.
- Звонящему нет необходимости придумывать уникальные имена.
Кроме того, функциональность может быть использована для создания файлов, которые изначально невидимы, и в это время соответствующие атрибуты файловой системы могут быть скорректированы для файла, прежде чем связать его с файловой системой в одной атомарной операции. Это может быть использовано для избежания определенныхТОКТОУусловия гонки.
Недостатком флага O_TMPFILE
является то, что его поддерживает только подмножество файловых систем. Первоначально поддержка предоставлялась в файловых системах ext2, ext3, ext4, UDF, Minix и shmem. Поддержка XFS была добавлена в Linux 3.15.
решение2
Независимо от того, какое разделение вы сделаете, root все равно сможет получить к нему доступ, поэтому у вас будет только безопасность через неизвестность, что на самом деле небезопасно. Если вы хотите скрыть доступ от других пользователей, вы можете использовать для этого разрешение. Запрет на чтение файла или каталога позволит вам добиться желаемого.
решение3
Исследователь безопасности Грюгк открыл технику, которую он называет «ФИСТИНГ", "Вставка файловой системы и метод Subversion". Его презентации читаются так, как будто он помещает файловые системы в странные места, например, в файлы журналов EXT3, файлы каталогов и файлы "плохих блоков". Это похоже на рекомендацию безопасности через неизвестность, но можно ли сделать что-то подобное?
решение4
Если вы хотите запретить другим пользователям (включая root) читать ваши файлы, вы можете зашифровать их. Если вы также хотите скрыть имена файлов, вы либо даете им поддельные имена, либо используете зашифрованный файловый контейнер, такой как TrueCrypt. В этом случае файлы будут по-прежнему доступны пользователю root при монтировании файловой системы.