
生成された実行可能ファイルにはgcc
実行権限があります。
-rwxrwxr-x
これはソースファイルが持つ権限とは異なります。
-rw-rw-r--
これらの権限をどのようにgcc
設定しますか?
答え1
ファイル権限を決定するには4つのことがあります。
- アプリケーションは、ファイルの作成時に初期権限セットを割り当てます。これらの初期権限はパラメータとして渡されます。システムコールファイルの作成(
open
一般ファイルの場合、mkdir
カタログなど)。 - 権限が隠されていますマスク、これは実行中のプロセスの属性です。 umaskは、アプリケーション指定権限から削除する権限ビットを表します。たとえば、umask は
022
グループ書き込みやその他の書き込み権限を削除します。 umaskは007
グループ書き込み権限を保持しますが、他の人がファイルに完全にアクセスできないようにします。 - 権限は次のようにさらに変更できます。アクセス制御リスト。この記事ではこれについてこれ以上議論しません。
- アプリケーションは、
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--
。