umaskとchmodの違いは何ですか


13

私はumaskとchmodの間で完全に混乱しています。どちらもファイルへのアクセス許可を与えるために使用されます。しかし、違いはどこにあり、いつ使用するかです。

オンラインドキュメントを読みましたが、どちらも同じように見えます。

umask:umaskは、デフォルトのファイル許可を設定するために使用されます。これらの権限は、作成中に後続のすべてのファイルに使用されます。chmod:ファイルとディレクトリの権限を変更するために使用されます。

たとえば、ファイルtest.docが作成された場合、私の理解に従って。

デフォルトでは、unixはファイル022 umaskコードを提供します。

これをchmod 666 test.docに変更すると、このファイルのアクセス許可レベルを変更できます。

次に、同じファイルにumask 666を使用するとどうなるでしょうか。

chmod 666とumask 666を使用するとどのような違いがありますか


2
umask新しく作成されたファイルのファイル権限を自動的に設定する環境変数を設定します既存のファイルchmodの権限を変更します
DavidPostill

1
@DavidPostill。いいえ、umask「環境変数」を設定しません。現在のシェル実行環境のファイルモード作成マスクを設定します。
fpmurphy 2018年

@ fpmurphy1説明をありがとう:)
DavidPostill

回答:


11

違いは、新しいファイルumaskのみを伴うことです。あなたが述べたように、umaskはファイル/ディレクトリが作成時に持つデフォルトの許可を設定しますが、その後umaskはそれらに影響を与えません。

chmodただし、実行前にファイルを作成する必要があります。

したがって、を実行umaskしても、既存のファイルにはまったく影響がありません。


2
umaskファイルには使用できませんfile。引数はありません。
DavidPostill

そう、その部分を書き直した。
nKn 2016年

4

umaskchmod実際にはとはかなり異なります。

  1. 重要な違いはまだ述べられていません 。許可ビットchmod設定しますが、umask クリアします(制限します)。そのため、「ビットマスク」のように「マスク」と呼ばれます。

  2. Davidが書いたようにumaskは(プロセスレベルの)構成設定であるため、特定のファイルには適用されません(とは対照的にchmod)。

  3. これは、別の重要なポイントをもたらしumaskます。ファイルに限定されません。ディレクトリの作成時にも適用されます。(たとえば、この回答も参照してください。)

  4. また、chmodコマンド自体が現在構成されているの影響を受けないことも重要umaskです。

さて、あなたが何をするかの例にumask 666

これは、現在のプロセス(たとえばシェル)に、R+ Wビット(4 + 2 = 6)を削除して(作成時に暗黙的または明示的に要求されたすべてのアクセス許可から)新しいファイルシステムオブジェクトを作成する必要があることを通知します。(つまり、666はX(実行)ビットのみを設定できるため、あまり実用的な値ではありませんが、読み取り不可能なファイルに対しては...)

例えば:

$ touch foo; ls -la foo
-rw-r--r-- ... foo   <-- default permissions

$ umask 666
$ touch bar; ls -la bar
---------- ... bar   <-- perms. after the new umask (restriction) is set
$ mkdir foodir; ls -la | grep foodir
d--x--x--x ... dir   <-- not very practical for dirs, either

$ chmod 777 bar; ls -la bar
-rwxrwxrwx .... bar* <-- chmod happily ignores the current umask

$ umask 022
$ touch bong; ls -la bong
-rw-r--r-- ... bong  <-- (so, it seems this was the default umask)

$ chmod 666 bong; ls -la bong
-rw-rw-rw- ... bong  <-- no surprise of any kind here

0

UMASK = chmod 777-umask権限

umask 022 => 777 - 022 => chmod 755
umask 077 => 777 - 077 => chmod 700
umask 002 => 777 - 002 => chmod 775
umask 007 => 777 - 007 => chmod 770
umask 027 => 777 - 027 => chmod 750
umask 177 => 777 - 177 => chmod 600

そんな感じ。


0

ディレクトリ/ファイルのデフォルトのアクセス権はumask 022であり、ディレクトリはデフォルトでアクセス権755(drwx-rw-rw)で設定され、ファイルは644(-rw-r--r--)で設定されます。基本的に、ディレクトリの場合は777から、ファイルの場合は666から、必要なアクセス許可の8進値を減算します。上記の例から:

(directory) umask 022 => 777 - 022 = 755

(file) umask 022 => 666 - 022 = 644

8進数と、それがファイルであるかディレクトリであるかに応じて、umaskを使用umask octalすると、コマンドの結果をソースで見つけることができます。

ソース

ただしchmod 022 <file>ディレクトリの場合は、これを取得する必要があります。d----w--w-これはあまり意味がありません。

その下には、Somnath Mulukがここで取得できる8進数値の優れた説明があり、優れたソースもあります。

N   Description                      ls   binary    
0   No permissions at all            ---  000
1   Only execute                     --x  001
2   Only write                       -w-  010
3   Write and execute                -wx  011
4   Only read                        r--  100
5   Read and execute                 r-x  101
6   Read and write                   rw-  110
7   Read, write, and execute         rwx  111
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.