umask および -m, --mode コマンドオプション

umask および -m, --mode コマンドオプション

( ) オプションを持つ多数の *nix コマンド( mkdir, mkfifo, )mknodに技術的な利点/必要性がありますか?-m--mode

私がこの質問をする理由は、私が知っている限りumask(シェルコマンドとシステムコール)がシステム権限を制御するために必要なすべてを提供するからです。

たとえば、次のようにできます。

mkdir -m 700 "$my_dir"

..しかし簡単にすることができます:

old_umask=`umask` \
&& umask 0077 \
&& mkdir "$my_dir"
umask "$old_umask"

明らかに、電子はよりユーザーフレンドリーで便利であることがわかりますが(特にコマンドラインを使用する場合)、実際にはそうではありません。人為的な後者に比べて前者の利点。

また、基本的なsyscallレベルでこれらの柔軟性の利点を理解しています。呼び出しが必要opensem_open場合、または最大600の権限がある場合は、公開syscallに転送してそこにあるS_IRUSR | S_IWUSRsyscallを忘れることができます。 、1つのシステムコールの往復を保存します(または呼び出しが現在のumaskを変更するumaskため、umaskをリセットしたい場合は2つ)。私のコードはもっとシンプルでクリーンです。これらのコマンドの/オプションは次のようになるumaskため、コマンドラインの例では機能しません。-m--mode持つそれにもかかわらず、呼び出しはumaskコマンドプロセスのumaskをクリアし、新しいファイルなどに設定する必要があるモード/権限ビットを保証します。 (たとえば、私のシェルのumaskがある場合、シェルから継承したumaskを0にするために内部的に最初に呼び出す場合にのみ期待どおりに動作します022。)mkdir -m 777 /tmp/fooumask

だから私が問題を考えたときに見逃していないことを確認したかったのは、umaskmk *コマンドの/オプションに依存せず、コマンドだけではできないことがありますか-m--mode

ベストアンサー1

一人ではできないことがありますumask

  • 上記の権限で一般ファイルを作成します0666

  • 上記の権限を持つディレクトリを作成します0777

だからあなたも必要chmodです--mode。セキュリティ上の理由からいいえ意図したよりも高い権限を持つオブジェクトを作成するには、chmod何もumask不十分です。極端な場合は、両方を使用する必要があり、結果としてumask// mkdir/ が多少見苦しい順序になりますchmodumask(例:グループ一時ディレクトリ(01770)を作成します。)

soは--modeandに置き換えることができますが、そのうちの1つだけではありません。chmodumask

おすすめ記事