新しく作成されたファイルにファイル許可はどのように適用されますか?


12

次のアクセス許可が設定されているディレクトリがあります。

drwxr-s---. user group folder

デスクトップでこのフォルダーにアクセスし、右クリックして新しいファイル呼び出しを作成しますfoo.txt。次に、ターミナルを使用して、コマンドを使用して別のファイルを作成しました$ touch bar.txt

これらのファイルのアクセス許可を確認すると、次のものがあります。

-rw-r--r--. user group foo.txt
-rw-rw-r--. user group bar.txt

期待していました-rw-r-----. user group。グループの追加の書き込み許可と他のユーザーの読み取り許可はどのようにして発生しましたか?

回答:


16

setguid

ここには2つの部隊が働いています。1つ目は、フォルダーで有効になっているsetgidビットですfolder

drwxr-s---. user group folder

これsは、この行の先頭の文字のパックにあります。これらはこうしてグループ化されています:

d - directory
rwx - read/write/execute bits for user
r-s - read/execute/setuid bits for group
--- - nothing for other users

r-s任意のファイルやディレクトリがこのフォルダ内に作成されたことを意味し、自動的にグループに設定されたグループを持つことになりますgroup

これがファイルの原因でfoo.txtありbar.txt、次のように作成されます。

-rw-r--r--. user group foo.txt
-rw-rw-r--. user group bar.txt

権限とumask

表示されている権限は別の問題です。これらは、の設定によって管理されますumaskumask次のコマンドを使用して、自分の設定を確認できますumask

$ umask
0002

注:これらのビットは「モード」ビットとも呼ばれます。

これはマスクなので、有効になっている許可に関連するビットは無効になります。この例では、他のユーザーの書き込み許可のみが必要です。

0 - skipping for this conversation
0 - value of user bits
0 - value of group bits
2 - value of other bits

このコマンドの「ビット」の表現は10進数形式です。したがって、2はバイナリ形式の010(書き込みビット)に相当します。4(100)は、読み取りを無効にすることを意味します。7(111)は、読み取り/書き込み/実行をすべて無効にすることを意味します。ここから構築します:

$ umask 007

他のユーザーの読み取り/書き込み/実行ビットを無効にします。

それでは、あなたのファイルはどうですか?

まあ、umask新しいファイルが作成されたときに設定されるアクセス許可を管理します。したがって、次のumaskセットがある場合:

$ umask 007

そして、新しいファイルに触れ始めたので、次のように作成されます。

$ touch newfile1.txt newfile2.txt
$ ls -l |grep newfile
-rw-rw----   1 saml saml        0 Nov  3 22:34 newfile1.txt
-rw-rw----   1 saml saml        0 Nov  3 22:34 newfile2.txt

他の何かに変更した場合は、次のように言ってください:

$ umask 037
$ ls -l |grep newfile
-rw-rw----   1 saml saml        0 Nov  3 22:36 newfile1.txt
-rw-rw----   1 saml saml        0 Nov  3 22:36 newfile2.txt
-rw-r-----   1 saml saml        0 Nov  3 22:35 newfile3.txt
-rw-r-----   1 saml saml        0 Nov  3 22:35 newfile4.txt

ただし、すでに作成したファイルには影響しません。こちらをご覧ください:

$ umask
0037
$ touch newfile1.txt newfile2.txt
$ ls -l | grep newfile
-rw-rw----   1 saml saml        0 Nov  3 22:37 newfile1.txt
-rw-rw----   1 saml saml        0 Nov  3 22:37 newfile2.txt
-rw-r-----   1 saml saml        0 Nov  3 22:35 newfile3.txt
-rw-r-----   1 saml saml        0 Nov  3 22:35 newfile4.txt

それでは、ファイルブラウザで何が起こっているのでしょうか?

これumaskが、私が「ソフト」設定と呼んでいたものです。これは絶対的なものではなく、Unixではさまざまな方法で簡単にバイパスできます。多くのツールは、操作の一部として許可を指定できるスイッチを使用します。

テイクmkdir例えば:

$ umask
0037

$ mkdir -m 777 somedir1
$

$ ls -ld somedir1
drwxrwxrwx 2 saml saml 4096 Nov  3 22:44 somedir1

-mスイッチ我々は上書きすることができますumasktouchあなたは創造的な取得する必要があるので、コマンドがこの機能を持っていません。このU&Lに関するQ&Aタイトルを参照してください。コマンドラインで設定されたアクセス許可でファイルを作成できますか まさにそのような方法のために。

他の方法?単にオーバーライドしますumask。ほとんどの場合、ファイルブラウザはこれを実行するかumask、ファイルを完全に無視し、実行するように設定されている権限を使用してファイルを配置します。


umaskは、追加ではなく、特権を削除することになっていると思いました。それとも何か不足していますか?
質問オーバーフロー

@QuestionOverflow-マスクは、ファイルとディレクトリの作成時に許可されるアクセス許可を制御します。したがって、その名前。作成プロセス中にビットが使用されないようにマスクします。
slm

私のumaskは読み取ります0002。umaskが削除許可ではなく許可を設定する場合、実行ビットはユーザーとグループの両方に設定されますtouchが、そうではありません。
質問オーバーフロー

@QuestionOverflow-それはtouchコマンドの制限です。私はA.でこのリンクを含むリンクを参照してください。unix.stackexchange.com/questions/47178/...
SLM

コメントに基づいていくつかのポイントを明確にするために、1)新しいファイルの許可は常にumask +ファイルの作成に使用されるプログラムによって決定されます。2)許可は親ディレクトリから継承されません。
質問オーバーフロー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.