GNU/Linux >> Linux の 問題 >  >> Linux

サブディレクトリにアクセスするとき、親ディレクトリの権限は重要ですか?

制限付きのアクセス許可を持つルートフォルダがある場合、たとえば600で、子フォルダ/ファイルに777のアクセス許可がある場合、ルートフォルダに600がある場合でも、誰でも子ファイルの読み取り/書き込み/実行ができますか?

承認された回答:

正確なルールは次のとおりです。ディレクトリの実行権限がある場合にのみ、ディレクトリをトラバースできます。

たとえば、dir/subdir/fileにアクセスするには 、dirに対する実行権限が必要です およびdir/subdir 、およびfileの権限 必要なアクセスの種類に応じて。よくある話ですが、相対パスを介してファイルにアクセスするには、現在のディレクトリで実行権限が必要であることが一般的かどうかはわかりません(Linuxの場合)。

ファイルにアクセスする方法が重要です。たとえば、/foo/barに対する実行権限がある場合 ただし、/fooにはありません 、ただし、現在のディレクトリは/foo/bar/foo/bar内のファイルにアクセスできます 相対パスを経由しますが、絶対パスを経由しません。 /foo/barに変更することはできません このシナリオでは、より特権的なプロセスがおそらくcd /foo/barを実行しました 特権を失う前に。ファイルに複数のハードリンクがある場合、そのファイルへのアクセスに使用するパスによってアクセスの制約が決まります。

シンボリックリンクは何も変更しません。カーネルは、呼び出しプロセスのアクセス権を使用してそれらをトラバースします。たとえば、symの場合 ディレクトリdirへのシンボリックリンクです 、dirに対する実行権限が必要です sym/fooにアクセスするには 。シンボリックリンク自体のアクセス許可は、OSとファイルシステムに応じて重要な場合と重要でない場合があります(それらを尊重するものもあれば、無視するものもあります)。

ルートディレクトリから実行権限を削除すると、ユーザーはディレクトリツリーの一部に効果的に制限されます(より特権のあるプロセスに変更する必要があります)。これには、アクセス制御リストを使用する必要があります。たとえば、/の場合 および/home joeは立ち入り禁止です (setfacl -m user:joe:0 / /home )および/home/joe joeです のホームディレクトリ、次にjoe システムの残りの部分にアクセスできなくなります(/bin/shを使用したシェルスクリプトの実行を含む) または、/libにアクセスする必要がある動的にリンクされたバイナリ 、したがって、実際に使用するには、さらに深く掘り下げる必要があります。 setfacl -m user:joe:0 /*; setfacl -d user:joe /bin /lib

関連:sudo echo“ xyz”の出力をファイルにリダイレクトするときに「Permissiondenied」を取得しますか?

ディレクトリの読み取り権限は、エントリを列挙する権利を与えます。読み取り権限を付与せずに実行権限を付与すると便利な場合があります。エントリの名前は、エントリにアクセスするためのパスワードとして機能します。実行権限なしでディレクトリに読み取りまたは書き込み権限を与えることには何の役にも立ちません。


Linux
  1. 親プロセスが終了したときに、subprocess.check_output() で作成された python 子プロセスを強制終了する方法は?

  2. ヒープへのアクセスはシリアル化されていますか?

  3. プロジェクトにアセンブリ ファイルが含まれている場合、mmap からの予期しない exec 権限

  1. vboxsf グループのメンバーのときに VirtualBox 共有フォルダーにアクセスすると、アクセス許可が拒否されました

  2. hosts ファイルに行を追加すると、sudo の使用時に権限が拒否されます - Mac

  3. chmod および chgrp の後、パスのコンポーネントに検索権限がないため、権限が拒否されました

  1. Linuxのchmodコマンドの概要

  2. [CentOS 7 Apache]:アクセス許可が拒否されました:ファイルのアクセス許可がサーバーアクセスを拒否します

  3. 親プロセスが終了したときの新しい親プロセス?