私のLinuxシステムが新しいファイルを処理する方法を理解できません。
私はAmazon Linux AMI(RHELベースのディストリビューション)を持っていて、実行時に新しいものを作成するたびに他のユーザーがアクセスできない情報を取得しますumask
。0002
write
ただし、ホームディレクトリに移動して次のように入力します。
$ mkdir myDir
$ touch myDir/myFile
$ ls -l | grep myDir
私は得る
drwxrwxr-x 2 myself myself 4096 May 11 22:37 myDir
フォルダの場合:
$ ls -l myDir
-rw-rw-r-- 1 myself myself 0 May 11 22:37 myFile
権限は保護よりも制限的であるumask
ため、私よりも多くのことが起こっているようです。myFile
write
もっと深く掘り下げてみると次のようになります。
$ sudo touch /var/run/myPidFile.pid
$ ls -l /var/run/ | grep myPidFile.pid
-rw-r--r-- 1 root root 0 May 11 22:42 myPidFile.pid
だから、myPidFile.pid
より制限的な基本権限を得て、私のホームフォルダ/var/run
に入りました。myFile
私たちは非難することができますが、以下で実行するroot
umask
と実際に私のユーザーよりも制限的ですが、実行ビット権限が設定されていない方法の説明はまだありません。umask
root
0022
0002
umask
それでは、Linuxでフォルダの基本的な権限をどのように知ることができますか?
答え1
umaskはほとんどのパズルです。ルートには異なるumaskがあります。これは非常に一般的です。
あなたが逃したパズルのピースはumaskです。マスク。アプリケーションがファイルを生成するときにいくつかの権限を割り当てます。 umask は、一部の権限ビットを削除するこれらの権限のフィルタです。ファイルにはアプリケーションに含まれる許可ビットのみがあります。たとえば、実行できないファイル(例touch
:)を生成しようとするアプリケーションは、umask 002を使用して許可ビット666(8進数)を渡します。これにより権限664が生成される。これは rw-rw-r-- です。書き込み - その他のビットが削除されました。ディレクトリを作成すると、アプリケーション(たとえばmkdir
)は通常実行を許可するため、権限は777に指定されます。 umask 002は、ディレクトリ権限が775、つまりrwxrwxr-xになります。
以下を使用して、アプリケーションで使用される権限を表示できます。システムコールを見てください。。たとえば、
$ strace -e open,mkdir touch foo
… skipping opening of dynamically linked libraries etc. …
open("foo", O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK, 0666) = 3
+++ exited with 0 +++
$ strace -e open,mkdir mkdir goo
… skipping opening of dynamically linked libraries etc. …
mkdir("goo", 0777) = 0
+++ exited with 0 +++
答え2
ディレクトリを変更したりリストをインポートしたりするには、ディレクトリに実行権限が必要であるため、ディレクトリが作成されると+ xビットが自動的に設定されます。
ただし、ファイルがコンパイルされたバイナリ(c/c++/etc)または解釈可能なスクリプト(sh/bash/php/perl/etc)で、ファイルを実行可能にしない場合は、実行ビットを設定するだけです。セキュリティ理由 デフォルト値。