次の問題を解決しています。Unix教科書。
私はこの問題を解決しようとしています。(8章15号、207ページ):
- ユーザーには読み取り、書き込み、および実行権限があり、ユーザーのグループには読み取りおよび実行権限があり、ユーザーのグループには読み取りおよび実行権限があり、他のすべてのユーザーには読み取り、書き込み、および実行権限があるようにデフォルトのアクセスモードを設定します。するコマンドラインを提供します。新しく作成された実行可能ファイルです。ファイルに権限またはディレクトリがありません。動作していることを確認するにはどうすればよいですか?
私の元の答えはを使用することumask 027
でしたが、私は見つけたtouch
notに実行権限が適用または適用されず、期待vim
どおりに新しいファイルが作成されます。umask
666
777
私の最終目標は権限値を持っているので、このコマンドに適用されたものは何も結果が発生しないので、750
このコマンドは不可能なようです。umask
umask
666
750
このセクションのすべての質問は意図した目標を達成するために使用できないため、この質問に欠陥がchmod
ありますか?umask
umask
答え1
質問には次の部分が含まれています。
新しく作成された実行可能ファイルまたはディレクトリの場合。
新しく作成された実行可能ファイルとディレクトリは、モード0777を使用して作成できるため、必要な実行権限も取得されます。したがって、質問が正しく定式化されているようです。 umask 027が機能するはずです。
答え2
すべてこれらの文書777 から umask を減算することで umask を決定できます (666 はデフォルトでは実行可能でないファイルに推奨されます)。
だからあなたは次のことをすることができます
PERM=750
UMASK=$(expr 777 - $PERM)
echo $UMASK
>>> 27
前にゼロがないので、場合によっては問題になる可能性がありますが、必要に応じてうまく機能します。