問題タブ [ntfs]
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.
python - Pythonを使用してフォルダー/ファイルのntfs権限を確認する
質問のタイトルが示唆しているように、特定のファイルまたはフォルダーの ntfs アクセス許可を確認する方法を知りたいです (ヒント: これらは [セキュリティ] タブに表示されるものです)。基本的に、ファイルまたはディレクトリ (ローカル マシン上、またはできればリモート マシン上の共有上) へのパスを取得し、ユーザー/グループのリストと、このファイル/フォルダーに対応するアクセス許可を取得する必要があります。 . 最終的に、アプリケーションはディレクトリ ツリーを走査し、各オブジェクトの権限を読み取り、それに応じて処理します。
今、私はそれを行うためのいくつかの方法を考えることができます:
- cacls.exe の出力を解析します -- 簡単に実行できますが、何か不足していない限り、cacls.exe は R|W|C|F (読み取り/書き込み/変更/完全) の形式でアクセス許可を与えるだけであり、これでは不十分です (I 「フォルダの内容をリストする」などの権限、拡張権限も取得する必要があります)
- xcacls.exe または xcacls.vbs の出力 -- はい、必要な権限はすべて与えられますが、動作が非常に遅く、xcacls.vbs がローカル システム ファイルの権限を取得するのに約 1 秒かかります。そのような速度は受け入れられません
- win32security (winapi をラップしていますよね?) -- このように処理できると確信していますが、車輪の再発明はしたくありません。
私がここで見逃しているものは他にありますか?
python - ntfs アクセス許可が継承されているかどうかを判断する信頼できる方法
ここでちょっとわかりにくい質問があります。
必要なもの: ファイル/フォルダーのアクセス許可 (厳密に言えば、DACL の特定の ACE) が継承されているかどうかを判断するには。
これをどのように解決しようとしたか: Python の winapi バインディングを使用する (正確には win32security モジュール)。これは、単純にファイルへのパスを引数として取り、ACE を 1 つずつ出力して、どのフラグが設定されているかを示します。
簡単です。セキュリティ記述子を取得し、そこから DACL を取得してから、DACL 内の ACE を反復処理します。ここで非常に重要なのは、INHERITED_ACE アクセス フラグです。ACE が継承されたときに設定する必要があり、明示的に設定する必要はありません。
フォルダー/ファイルを作成すると、その ACL には、親オブジェクト (フォルダー) の ACE に従って ACE が入力され、子に伝達するように設定されます。ただし、アクセス リストを変更しない限り、INHERITED_ACE フラグは設定されません。ただし、継承されたアクセス許可は存在し、機能します。
わずかな変更 (アクセス リストにエントリを追加し、変更を適用して削除するなど) を行うと、フラグが魔法のように表示されます (動作はまったく変更されませんが、以前は機能し、その後も機能します)。私が望むのは、INHERITED_ACE フラグのこの動作の原因を見つけ、ACE が継承されたかどうかを判断する別の信頼できる方法を見つけることです。
再現方法:
- オブジェクト (ファイルまたはフォルダー) を作成する
- Windows エクスプローラーでアクセス許可を確認し、それらが親オブジェクトから伝達されていることを確認します (たとえば、Windows エクスプローラーのファイル プロパティ ダイアログの [セキュリティ] タブを使用します)。
- たとえば、私が使用していたスクリプトを使用してフラグを確認します (INHERITED_ACE はどの ACE にも設定されません)。
- オブジェクトの権限を変更 (変更を適用) したり、元に戻したりします。
- フラグを確認します (INHERITED_ACEがあります)
- ..信じられないという気持ちで首を横に振る
やや長い投稿で申し訳ありませんが、これが少なくとも少し意味をなすことを願っています.
windows - ローカル NTFS ドライブでごみ箱を見つける
ローカル ドライブのごみ箱のディレクトリを返す簡単なコードを書き込もうとしています。それは簡単なように思えます-Googleで千の答えになるはずです。まだ見つかっていません:(
FAT ドライブと NTFS ドライブの基本名 (RECYCLED と RECYCLER) が異なることがわかりました。「その」ごみ箱は、マシン上のすべてのドライブのごみ箱を組み合わせた仮想フォルダであることがわかりました。
私が見つけられなかったのは、C: ドライブのごみ箱ディレクトリを見つける方法です。ベトナム語 (またはその他の英語以外) のマシンでも同様です。(「RECYCLER」が国際化されているかどうかを示す投稿は見つかりませんでした)
誰かが私に決定的な答えを教えてもらえますか?
ありがとう
更新:CSIDL_BITBUCKET
それを使用する機能に注意してください。私が読んだすべてのものから、それはすべてのドライブでそのユーザーによって削除されたすべてのファイルの結合である仮想ディレクトリを指しています。物理的なごみ箱のディレクトリを探します (私の Vista では、私が知る限り C:\$Recycle.Bin のようです)
c# - トランザクションファイルシステムアクセス用の.net永続リソースマネージャー
C#でのSystem.Transactions名前空間の使用に頭を悩ませようとしています。リソースマネージャーの使用に関するMSDNのドキュメントをいくつか見つけましたが、それは揮発性のメモリ内リソースマネージャーのみを詳細にカバーしています(Transactionalなど)。基本的に、Transactional <>のように、TransactionScope内で使用できるものを探していますが、ディスク上のファイルの書き込み/変更/削除に使用します。このようなものが標準ライブラリに存在しますか?NTFSにはトランザクションファイルシステムアクセスを許可するための「TxF」があることを読みました。これを利用する何かを.netで見つけることを期待していました。おそらく私は自分自身を実装する必要がありますか?
multithreading - アクセス許可を下に流すことなく、特定のフォルダーにのみ NTFS ACL を設定する API はありますか?
私の環境では、多数のファイル サーバーで NTFS ACL 監査レポートとさまざまな ACL クリーンアップ アクティビティを実行するプロジェクトがいくつかあります。これらのアクティビティをサーバー上でローカルに実行できない主な理由は 2 つあります。
1) サーバーは実際には別の会社によって所有および管理されているため、サーバーへのローカル アクセス権がありません。
2) それらは変更された Linux OS (GuardianOS と呼ばれる) を実行するSNAP NAS サーバーであるため、ローカル アクセスを取得できたとしても、必要な操作を実行するためのツールが利用できるかどうかはわかりません。
それが邪魔にならないように、私は独自の ACL 監査レポート ツールを展開することになりました。このツールは、指定された最上位パスから始まるファイル システムを再帰的に調べ、ACL で遭遇したすべてのグループ/ユーザーに関する HTML レポートを次のように吐き出します。ツリーをたどる際のアクセス許可の変更を表示するだけでなく、このツールを開発しているときに、ネットワーク オーバーヘッドがこれらの操作を実行する際の最悪の部分であり、プロセスをマルチスレッド化することで、大幅に優れたパフォーマンスを達成できることがわかりました。
ただし、ACL の変更とクリーンアップを実行するための優れたツールを見つけるのにまだ苦労しています。すぐに使用できる標準ツール (cacls、xcacls、Explorer) はシングル スレッドのようで、ネットワーク経由でパフォーマンスが大幅に低下します。マルチスレッド化された独自の ACL 設定プログラムのローリングを見てきましたが、私がよく知っている唯一の API は .NET FileSystemAccessRule のものであり、問題は、フォルダーにアクセス許可を設定すると、自動的に「フロー」することです。権限を下げます。マルチスレッドを使用して自分で「流れる」ことをしたいので、これは問題を引き起こします。
NTFS では、継承されたアクセス許可が異なる 2 つの親フォルダー間で同じボリューム上でフォルダー/ファイルが移動され、古いアクセス許可が「継承」されているため、継承されたアクセス許可の一貫性が「許可」されていることはわかっています。
質問
1)現在のフォルダーとすべての子に適用される ACL (標準の「ファイル、フォルダー、およびサブフォルダーに適用」ACL) を設定する方法はありますが、自動的に子オブジェクトに流れないようにする方法はありますか? 基本的には、「はい、この ACL を子オブジェクトに適用する必要がありますが、今のところ、このオブジェクトに直接設定するだけです」と Windows に伝えられるようにしたいと考えています。
明確にするために、「このフォルダーのみ」に適用するための ACL オプションについて知っていますが、要件である継承を失うため、そのオプションは私のユースケースでは有効ではありません。
2) マルチスレッド方式で ACL の変更を実行するための優れたアルゴリズムまたは方法論を知っている人はいますか? 私の直感では、ファイルシステムの再帰的トラバーサルは、特に最上位フォルダーに新しい ACL を定義していて、すべてのサブフォルダーを「クリーンアップ」したい場合は特に、理論的には機能するはずです。最上位に新しい ACL をスタンプしてから、明示的な ACE を削除してから、継承されたアクセス許可を「フロー」ダウンして再帰します。
(参考までに、この質問は、実際にはシステム管理者とプログラミングの問題の両方であるため、ServerFault から部分的に複製されています。他の質問では、ネットワーク経由で高速な ACL 設定を実行できるツールを誰かが知っているかどうかを尋ねていました。)
windows - Windows で不適切なシンボリック リンクを見つけて削除する
Windows で壊れた ntfs シンボリック リンクを見つけて削除する簡単な方法はありますか? (手動検索と破棄以外)
Windowsホームサーバーがディスクを取り外さないとアップグレードできないため、私はこの混乱に陥っています:/ファイルはディスクの束にランダムに散らばっています(ただし、構造はそのままで、すべてのディスクにミラーリングされています)
windows-server-2008 - Windows Server 2008 - 複数のファイルのセキュリティ設定を一度に変更する
Windows Server 2008 で、(Windows Server 2003 のように) 複数のファイルのセキュリティ アクセス許可を一度に変更する簡単な方法はありますか? 右クリック - 複数のファイル/ディレクトリが選択されている場合 (つまり、ctrl キーを押しながら複数のファイルをクリック)、プロパティに [セキュリティ] タブが表示されません。
また、レジストリを変更する以外に、管理者としてメモ帳を開かずにメモ帳でファイルを編集する方法はありますか? そのままでは、UAC のため、管理者としてメモ帳を開いてから、編集するファイルを開く必要があります (そうしないと、保存できません)。
パート B への回答: 「ファイルの編集に関して: 通常の (管理者ではない) ユーザーにファイルへの書き込み権限を与える場合、メモ帳を管理者として実行する必要はありません。」ありがとう @Martin v. Löwis
c - ハードドライブのクラスターサイズの取得(コードによる)
CまたはC++を使用して、ユーザーのハードドライブのクラスターサイズを見つける必要があります。ハードドライブはNTFSを使用します(他のファイルシステムでもどのように実行されるかを知っていただければ幸いです)。
必要なのはwin32API呼び出しの組み合わせだと思いますが、どちらかはわかりません。
たとえば、Windowsコンソールで「fsutilfsinfo ntfsinfo c:」と入力すると、「クラスターあたりのバイト数」が表示されます。これは私が必要としているものです。(明らかな理由で、そのコマンドを実行してその出力を解析したくありません。)
php - Windows / NTFS で flock に時間がかかることがあるのはなぜですか?
ファイル システムを使用して、アプリケーション全体の永続的なシングルトンを作成します (アプリケーションはデータベースを使用しません)。ページの読み込みに 1 ~ 2 分かかることがありますが、シングルトンのインスタンスを取得する関数での flock の使用に問題を絞り込みました。これがコードの簡略化されたバージョンです:(編集:私の元の投稿のコードの最も重要な部分を省略しました)
コードは現在、XP と NTFS を使用する私の開発マシンで実行されています。
ロックは常に作成されます (つまり、trigger_error は呼び出されません)。
遅延はランダムですが、更新がヒットするとより頻繁に発生するようです.
flock を取り除くと問題は完全に解消されますが、コードが安全ではなくなります。
何かアドバイス?
アプリケーション全体の永続的なシングルトンを作成するより良い方法を知っている人はいますか?