web-dev-qa-db-ja.com

読み取り不能なテキストと記号で構成されるシステムファイルの表示と編集

基本的に、Unixシステム内のすべてのファイルは編集可能で、少なくとも表示可能であるという印象を受けました。

nanoで次のようなファイルに遭遇した場合、どのような手順を踏むことができますか:

screenshot of the binary greeter-dconf-defaults file viewed in Nano

実行中のファイルである場合、コードと、ファイルのインポート/エクスポート/依存関係の両方を調べるために必要なファイルの種類を実際に確認するにはどうすればよいですか?

7
Emil Johansson

ファイルシステムまたはメモリ上に存在するすべてのファイルは、適切な方法を使用するだけで技術的に編集可能です。バイナリデータファイル、特に dconfデータベース に関連する設定のnanoのファイル名行の名前、およびファイル内のキーワードGVariantによって判断しました自体。したがって、dconf-editor GUIツールまたはdconfコマンドラインツールを使用する必要があります。

実行中のファイルである場合、そのコードと、ファイルのインポート/エクスポート/依存関係の両方を調べるために必要なファイルの種類を実際に確認するにはどうすればよいですか。

通常、fileコマンドを使用して、特定のファイルタイプを判別できます。

$ file /etc/passwd
/etc/passwd: ASCII text

ファイルが実行可能かどうかに関係なく、ls -l filenameまたはstatを使用して、所有者、グループ、および他のユーザーに実行可能ビットが設定されているかどうかを判断できます。 関連する投稿 を参照してください。これは、ファイルに対するアクセス許可を非常によく説明しています。 Access Control Lists もあります。これは、基本的なUnixパーミッションが許可するよりも多くの凝ったパーミッションを作成するために使用されます。

どのソフトウェアを使用するかについては、各ファイルに依存し、同じファイルタイプには多くの種類のソフトウェアがあります。一般に、バイナリファイルは、hexdumpまたはodコマンドを介して16進形式で表示でき、編集することができます。リバースエンジニアリングおよびセキュリティアプリケーションでよく使用される16進エディタがあります。


基本的に、Unixシステム内のすべてのファイルは編集可能で、少なくとも表示可能であるという印象を受けました。

まあ、「すべてはUnix/Linuxのファイルです」という言葉に当てはめなければならない真実が少しあります。ファイルシステムに存在できるファイルがあり、それはほとんどの人がファイルとして知っているものです。実際には、ファイル(つまり、どこかで一緒に編成された特定のデータチャンク)はメモリまたはファイルシステムに存在できます。つまり、匿名ファイルが存在する可能性があります。 Sockets および名前のないパイプはファイルであり、名前を持たず、カーネルが追跡するハンドルのみを持ちます。それらすべてを編集できますか?はい、再び、正しい方法で。パイプには1つのプロセスが書き込みを行い、別のプロセスは読み取りを行うため、ライターはパイプを編集できます。 メモリにマップされたファイル は、プログラムがその特定のメモリチャンクにアクセスできる場合に編集できます。すべてがファイルであるため、ファイルがどのコンテキストで適用されるかを理解する必要があります。

9