私は私の人生を単純化するためにMakefileを作成しました。このMakefileは私が作成したbinファイルのスクリプトを呼び出します。コマンドを実行した後、make something
次のエラーが発生します。
/bin/sh: 1: .docker/bin/echo-title: Permission denied
いくつかの検索の後に感謝します。この回答、コマンドを使用してファイルを作成したユーザー(別名:me)に実行権限を付与しましたchmod
。私の質問は次のとおりですファイルの所有者なので、すぐに実行権限を与える必要はありませんか?そうでなければ…なぜ?
これは個人的なプロジェクトですが、仕事ではMakefilesとbinスクリプトも使用するのにまさにこのように動作します(実際にはファイルの基本的な内容をコピーして貼り付けます)。実行するためにchmodコマンドを実行する必要はありません。スクリプト。なぜこれが起こるのですか?
(binスクリプトを含まないMakefileから別のコマンドを実行すると正常に動作します。)
ベストアンサー1
ほとんどのファイルは実行を必要としないため、新しく作成されたすべてのファイルに実行権限を付与することはお勧めできません。
マスク(2)デフォルトのファイル権限が何であるかを判断するために使用されます。オプションなしで実行すると、umask
ユーザーの現在の値が印刷されます。これは、ファイルの作成時に特定のアプリケーションが使用した権限(通常は666 (rw-rw-rw-)
ファイルに対する権限または777 (rwxrwxrwx)
ディレクトリに対する権限)から差し引かれる値です。
したがって、umask値が002(非常に一般的な場合)の場合は、新しいファイルを作成してください664 (rw-rw-r--)
。
umask new_value
ie:を実行してデフォルトのumask値を変更することはできますが、umask 044
ファイルの666個から差し引くことができるため、デフォルトの実行には使用できません。また、これを継続的に作成するには、rcまたはプロファイル設定ファイルに追加する必要があります。
関連:
umaskがファイルの実行権限を変更しないのはなぜですか?
umaskの仕組み
umask経由で実行権限を付与する方法
umask 077でユーザーがファイル/ディレクトリを実行できないのはなぜですか?