gccはファイル権限をどのように処理しますか?

gccはファイル権限をどのように処理しますか?

生成された実行可能ファイルにはgcc実行権限があります。

-rwxrwxr-x

これはソースファイルが持つ権限とは異なります。

-rw-rw-r--

これらの権限をどのようにgcc設定しますか?

ベストアンサー1

ファイル権限を決定するには4つのことがあります。

  1. アプリケーションは、ファイルの作成時に初期権限セットを割り当てます。これらの初期権限はパラメータとして渡されます。システムコールファイルの作成(open一般ファイルの場合、mkdirカタログなど)。
  2. 権限が隠されていますマスク、これは実行中のプロセスの属性です。 umaskは、アプリケーション指定権限から削除する権限ビットを表します。たとえば、umask は022グループ書き込みやその他の書き込み権限を削除します。 umaskは007グループ書き込み権限を保持しますが、他の人がファイルに完全にアクセスできないようにします。
  3. 権限は次のようにさらに変更できます。アクセス制御リスト。この記事ではこれについてこれ以上議論しません。
  4. アプリケーションは、chmod必要に応じて権限を変更するために明示的な呼び出しを実行できます。ファイルを所有しているユーザーは、その権限を自由に設定できます。

手順1で頻繁に選択される権限セットは次のとおりです。

  • 666(つまり、誰でも読み書きできる)は、通常のファイルに使用されます。
  • 非公開にする必要がある通常のファイル(電子メールや一時ファイルなど)の場合は、600(読み取り/書き込み、所有者のみ)です。
  • 777(つまり、全員の読み取り、書き込み、および実行)は、ディレクトリまたは実行可能な一般ファイルに使用されます。

アプリケーションがファイル作成権限に追加の書き込み権限を含めることができ、しばしば含めても、umaskがファイルを読み取ることができなくなる可能性があります。

gccの場合は、まず権限666で出力ファイル(umaskでマスク)を作成し、次にchmodを実行して実行可能にします。 Gccは実行可能ファイルを直接生成できますが、そうではありません。書き込みが完了した後にのみファイルを実行可能にするため、不完全な間にプログラムを起動する危険はありません。

おすすめ記事