chmod
を使用してファイルのアクセス許可を設定できましたが、親(..
)ディレクトリのアクセス許可が競合している場合はどうなりますか?
また、touch
などを使用して新しいファイルを作成した場合、初期権限はどのように計算されますか?権限は..
から継承されていますか?
また、executable
権限フラグを削除したときに、ディレクトリで何もできないのはなぜですか?
$ mkdir temp;
$ chmod -x temp;
$ touch temp/a;
$ ls temp;
touch: cannot touch `temp/a': Permission denied
UNIXには、「競合するアクセス許可」のようなものはありません。ファイルシステムエントリ(ディレクトリ、ファイルなど)のアクセス許可によって、そのオブジェクトに対して実行できることと実行できないことが決まります。他のファイルシステムエントリのパーミッションは画像に入力されませんパス内のすべての祖先ディレクトリの「x」ビットを除くファイルへ(最大_/
_)-参照3.3。
新しく作成されたファイルのデフォルトの権限は、作成プログラムが許可する権限(mode
またはopen
システムコールへのcreat
引数)と現在のプロセスumask
によって決定されます。具体的には、「umask」で設定されたビット(1)は、新しく作成されたファイルパーミッションでリセット(0)されます。Cのような表記法:_file_permissions = open_mode & ! umask
_。詳細については、_man 2 creat
_(_O_CREAT
_を探してください)および_man umask
_をお読みください。
ディレクトリの「x」(実行可能)ビットは、そのディレクトリをtraverseできるかどうかを制御します。ディレクトリをトラバースすると、ディレクトリにcd
して、そこに含まれるファイルにアクセスできるようになります。ディレクトリの内容を一覧表示する機能は、「r」ビットによって制御されることに注意してください。
参考文献:
まず第一に... Linuxではすべてがファイルです。すべてとは、すべてを意味します...フォルダ、マウス、またはキーボード...すべてがファイルです。
それでは、あなたの質問に答えましょう:
フォルダと含まれているファイルの間に競合はありません。読み取り権限のみのフォルダがあり、そのフォルダに書き込み権限のあるファイルがある場合は、そのファイルに書き込むことができます。ただし、そのフォルダ内のファイルを作成/削除することはできません。したがって、競合について心配する必要はありません。また、フォルダの内容を読み取ることもできます(フォルダを一覧表示します)。
デフォルトの権限は通常644です(つまり、ユーザーの場合はrw、グループの場合はrなど)
ディレクトリの「実行可能」ビットは、ディレクトリを「リスト」することを意味します。つまり、フォルダを-xにすると、その内容を知ることができなくなります。つまり、フォルダに何かを触れることはできません。