特定のディレクトリにある新しいファイルの権限を表示する

特定のディレクトリにある新しいファイルの権限を表示する

私のLinuxシステムが新しいファイルを処理する方法を理解できません。

私はAmazon Linux AMI(RHELベースのディストリビューション)を持っていて、実行時に新しいものを作成するたびに他のユーザーがアクセスできない情報を取得しますumask0002write

ただし、ホームディレクトリに移動して次のように入力します。

$ 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ため、私よりも多くのことが起こっているようです。myFilewrite

もっと深く掘り下げてみると次のようになります。

$ 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と実際に私のユーザーよりも制限的ですが、実行ビット権限が設定されていない方法の説明はまだありません。umaskroot00220002 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)で、ファイルを実行可能にしない場合は、実行ビットを設定するだけです。セキュリティ理由 デフォルト値。

関連情報