umaskコマンドの目的は何ですか? [閉鎖]

umaskコマンドの目的は何ですか? [閉鎖]

umask*nix オペレーティング・システムでのコマンドの実際の用途は何ですか?
どのように機能し、どの用途に使用されますか?例えば

$ umask 022

以前は本当にありがとうございました。

ベストアンサー1

umaskほとんどのシェルに組み込まれたコマンドであり、システムコールへのインターフェースにすぎません。これについてのumask()説明は、シェル文書にあります(システムコール文書またはシェル組み込みコマンド文書をman umask指すことがあることに注意してください)。umask()umask

ユーザーマスクは、ファイルが作成されたときにファイルに自動的に付与される権限を決定するプロセス(親プロセスから子プロセスに継承され、コマンド実行全体にわたって保持される)の属性です。

このumaskユーティリティを使用すると、シェルプロセスのユーザーマスクを設定して、シェルセッションで実行されるコマンドで生成されたファイルの権限を制御できます。

すべてのシェルはumaskマスクを8進数で処理しますが、一部のシェル(すべてのPOSIXシェルを含む)ではforなどの記号で指定することもできますchmod

マスクは、権限のどのビットになるべきかを決定します。明らかファイルが生成されるとき。たとえば、0777が511または0b111_111_111の場合、すべての91ビットUnixファイル権限(3(読み取り、書き込み、実行))umask 777のため、権限なしでファイルが生成されます。rwxユーザー、3はグループ、3はその他) が削除されます。

シンボル形式はどのビットいいえ削除されました。そうなるでしょumask 777umask u=,g=,o=

一般的に言えば、生成されたファイルがグローバルに書き込み可能(または)になることを望まないので、umaskに少なくともw他のビットを含めたいと思います。oumask 002umask u=rwx,g=rwx,o=rx

少なくともユーザーのプライマリグループがプライベートグループ(他のユーザーと共有)でないシステムでは、グループビットも設定できますwgumask 022umask u=rwx,g=rx,o=rx

Aumask 077またはumask u=rwx,g=,o=あなたが作成したすべてのファイルがあなたのプライベートであることを確認してください(他の人がそのファイルにアクセスできない)。一時ファイルを生成するスクリプトでは、次のようにサブシェルでこれを見ることができます。

(umask 077; echo test > "$tmpfile")

umaskサーバービットを設定すると、u最終的に開くことができないファイルが生成される可能性があるため、問題が発生する可能性があります。

ユーザーマスクが適用されていることに注意してください。open()アプリケーションまたはファイルcreat()から要求された権限。 ()のときにこれを行うと、creat("file", 0666)権限は最終的に()になります。アプリケーションは必要に応じて権限を呼び出すか、後で変更できます(そしてumaskはそれに影響を与えません)。umask022u=rwx,g=rx,o=rx0644u=rw,g=r,o=rfchmod()chmod()

umask引数なしで8進形式で現在のユーザーマスクを報告します。umask -S一部のシェルではシンボルとして報告されます。umask -pあるいは、解釈された出力シェルコードはbash同じfishユーザーマスクを設定します。

変更後、古いumaskを復元するために使用できます。

previous_umask=$(umask)
umask 077
# create some private files
umask "$previous_umask"

1 技術的に権限には 12 ビットがあり、そのうちの 3 つの追加権限ビットはファイル形式によって様々な目的で使用される特殊ビットであり、時には他の権限ビット (例: 実行ファイル用 setuid、setgid ビット、実行ファイル用tビット)と組み合わせて使用​​されます。ディレクトリ.. .).一部のシステムでは、open()これらのビットが/で要求されたときに無視されます。creat()アプリケーションで設定するとき(通常を渡した後)に含まれるのに十分な理由があります。システムコールはこれを無視します。chmod()umaskumask()

おすすめ記事