#c #linux #stat #unlink
#c #linux #статистика #разблокируйте
Вопрос:
Предполагая, что привилегированная программа содержит эту строку кода:
unlink("hello.txt");
Могу ли я что-нибудь сделать перед запуском привилегированной программы, чтобы даже после выполнения вызова unlink() hello.txt будет ли он по-прежнему существовать, и lstat() и stat() все еще могут успешно зарегистрировать, что он существует?
Я думал о возможности создания символических или жестких ссылок с тем же именем, чтобы эти ссылки могли быть разорваны вызовом unlink(), оставляя фактическую hello.txt файл нетронутым. Однако я не был уверен, что это возможно.
Комментарии:
1. Вы могли бы настроить LD_PRELOAD для игнорирования всех или выбранных
unlink
вызовов2. может быть, seccomp или chroot? У вас тоже есть привилегии?
3. Монтирование файловой системы как доступной только для чтения?
4. может быть, chattr i? Но это гонка вооружений, в которой в конечном итоге выиграет системный администратор … если им нужно отключить файловую систему, использовать редактор секторов для удаления inode и запустить fsck для устранения беспорядка, они могут это сделать.
5. @thatotherguy что, если команда вызывается
remove(3)
вместоunlink(2)
? Или если этоrename(2)
файл перед его удалением? Или процесс имеет setugid, и трюки ld_preload не работают?