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は実行可能ファイルを直接生成できますが、そうではありません。書き込みが完了した後にのみファイルを実行可能にするため、不完全な間にプログラムを起動する危険はありません。

答え2

何を求めているのか分からない。どのように設定権限があるのですか?ファイル所有者は必要に応じて権限を設定できます。gccユーザーアカウントで実行されるため、生成されたファイルはあなたの所有であり、ファイル権限設定を含むアカウントでできることをすべて行う権限を持っています。

答え3

上記の@AshRjのコメントで述べたように、アカウントで設定したデフォルトの権限によって異なります。デフォルトでは、すべての権限(特にユーザー/グループ/その他のx権限を含む)から始めて、指定された権限をオフにすることですumask(2)(参照bash(1))。現在(各ユーザーは独自の個人グループを持っている)umask通常002(他のユーザーのみが拒否)に設定されているため、実行可能ファイルに対する権限はソースに対する権限に関係なくとしてw表示されます。rwxrwxr-x別のファイルを作成する場合(たとえば、エディタを介して)、そのファイルを起動するx権限がまったくないので(任意のテキストファイルを実行しないでください)、権限はrw-rw-r--

関連情報