問題タブ [fstat]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - fopen() の後に stat() を使用して TOCTOU 問題を回避しますか?
タイトルはすべてを物語っています: Time of Check to Time of Use (TOCTOU) 競合状態を回避するためstat()
に afterを使用できますか? fopen()
いくつかの詳細:
ファイルの読み取りのみを行う C プログラムを作成していますが、ディレクトリの読み取りを要求されたときに適切にエラーが発生する必要があります。現時点では、open()
(with ) を使用してエラーを生成し、次のようにO_RDWR
をチェックerrno
します。EISDIR
上記の解決策の問題は、このプログラムがファイルを読み取るだけでよいことです。そのため、でファイルを開くとO_RDWR
、ユーザーが読み取り権限を持っているが書き込み権限を持っていない場合、誤って権限エラーが発生する可能性があります。
TOCTOU 競合状態を回避するために次のことを行うことは可能ですか?
それが不可能な場合、TOCTOU のバグや間違った許可エラーを防ぐ別の解決策はありますか?
python - Pythonのos.statとos.fstatのinode番号の違い
Windows マシンでファイルの inode を取得したかったので、最初にos.stat('./filename.txt').st_ino
REPL で試してみたところ、得られた出力は0L
.
他のいくつかのファイルに対して同じことを試みたところ、同じ出力が得られました。
次に、試し
os.fstat(open("filename.txt", "r").fileno()).st_ino
てみたところ、出力に長整数が得られました。異なるファイルでは、整数が変更されていました。したがって、os.fstatはWindowsで機能しましたが、os.statは機能しなかったと思います。誰かがこの動作の理由と、両者のその他の違いを説明できますか?