inode(ext4)へのハードリンクを作成するには?

inode(ext4)へのハードリンクを作成するには?

ファイルのインデックスノード(inode)を知っていても、そのパス(またはそのパス)がわからない場合は、そのinodeに直接ハードリンクを作成できますか?

を使用してファイルを検索し、sudo find / -inum 123546ハードリンクを生成することができますが、これは私のアプリケーションと比較して遅すぎます。

私はext4ファイルシステムを使用しています。

ベストアンサー1

AFAIK、カーネルAPIは使用されません。そのようなインターフェースが存在する場合は、スーパーユーザーに制限する必要があります。それ以外の場合は、誰でも検索アクセス権を持たないディレクトリ内のファイルにアクセスできます。

ただしdebugfs、ファイルシステムで(アンマウント後)これを使用してこれを実行できます(ブロックデバイスへの書き込みアクセス権があると仮定)。

デバッグファイル-w/dev/ブロック/デバイス

(変える/dev/block/deviceファイルシステムが常駐する実際のブロックデバイスと共に)。

その後、プロンプトにdebugfs入力します。

統計<123>
(山括弧を使用して、123を実際のinode番号に置き換えます)ファイルが存在するか(inodeのリンク数が0より大きい)ディレクトリではないことを確認してください。

すべてが順調に進んだら、次のように入力します。

ln<123>パス/ターゲット/新しいファイル
ハードリンクを作成します(パスはファイルシステムのルートに相対的です)。以下は:

m<123>
リンク数を増やします(Enterリンク数を除くすべてのフィールドにアクセスするには、このボタンを押します。現在の値に1を加える必要があります)。

おすすめ記事