インターネットからバイナリをダウンロードすると実行権限は設定されませんが、gccを使用してバイナリをビルドすると実行権限が設定されるのはなぜですか?

インターネットからバイナリをダウンロードすると実行権限は設定されませんが、gccを使用してバイナリをビルドすると実行権限が設定されるのはなぜですか?

たとえば、hello.cファイルがある場合は、次のようになります。

int main() {
   printf("Hello world");
   return 0;
}

gccでビルドgcc hello.c -o helloして実行できました./hello

ただし、たとえば、Webからバイナリをダウンロードする場合は、curl実行する前にまずchmodを使用して権限を設定する必要があります。理由がありますか? gccおよび/またはカールがファイルに対するいくつかのデフォルト権限を設定しますか?

ベストアンサー1

curlファイルが実行可能であることをどうやって知ることができますか?技術的には内容を確認できますが、これは意図したcurlものよりはるかに優れています。

基本権限はumaskhttp://en.wikipedia.org/wiki/Umaskumask)と実行可能ビットは、プログラムから派生した権限の上に追加できます(またはまったく異なる権限を使用できます)。たとえば、gcc実行ファイルを作成していることを知って実行ビットを設定します。一方、curl実行可能ファイルは作成する意図がないため、デフォルトの権限のみが使用されます。

おすすめ記事