linux inode에 직접 데이터를 기록하고 싶은데 어떻게 접근을 해봐야 할지....

requiemduke의 이미지

linux ext2 파일시스템에서 inode에 제가 필요로 하는 정보를 기록하고 싶은데
어떤 방법으로 접근을 시도해야 할지 감이 잡히지가 않습니다.

파일을 생성하는 cp 소스나 다른 소스들을 참고하여도 쉽지가 않네요.

혹시 위의 작업과 비슷한 작업(인위적으로 물리적 디스크의 원하는 위치에 데이터를 기록)을 해보신적이 있으시면 도움을 좀 주셨으면 합니다.

chanik의 이미지

e2fsprogs 패키지에 포함되어 있는 debugfs를 이용하면
특정 파일의 아이노드번호 및 그 실제위치의 블록번호와 블록내의 오프셋까지 알려주는군요.

$ sudo debugfs -R "imap /tmp/debugfs_test.txt" /dev/sda1
debugfs 1.39 (29-May-2006)
Inode 15307273 is part of block group 934
        located at block 30605458, offset 0x0400

debugfs는 ext2/3/4에 대한 다양한 저수준의 조사/조작 명령을 제공하는데,
그중 imap 명령은 위와 같이 파일경로로부터 inode 정보를 찾아주고
modify_inode 명령은 inode 내용물을 변경하는 일도 해줍니다.

원하시는 바가 위 기능으로 해결 가능하다면 이것을 쓰시면 되겠고,
아니면 imap 명령으로 inode의 실 위치가 정확히 파악 가능하므로
블록장치(예: /dev/sda1)를 열어서 직접 내용물을 변경하실 수도 있겠죠.
debugfs에 의존하지 않으려면 debugfs 소스로부터 필요한 부분을 가져다 쓰실 수도 있겠고요.

/usr/include/linux/ext2_fs.h 을 보시면 디스크상의 ext2 아이노드 구조체가 있으므로
코딩할때 참고가 될 것입니다.

다만, 혹시 마운트된 파일시스템에 대해서 이런 변칙적인 접근을 하시려는 것이면
imap처럼 읽기만 하는 동작까지는 괜찮겠지만
modify_inode처럼 변경을 가하는 순간부터
파일시스템의 일관성을 깨뜨리는 결과가 생길 수 있으니 조심하시고요.

requiemduke의 이미지

댓글이 늦어서 죄송합니다.

정말 큰 도움이 되었습니다.

추석 잘 보내시길바랍니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.