UNIXでのcpコマンドの権限の使用法を理解しようとしています。
私の最初の質問は、ディレクトリが操作を実行するための実行権限を必要とし、ファイルがファイルのバイナリを読み取るための読み取り権限を必要とし、出力ファイルが書き込み権限を必要とすることを想定しています。
もう1つは、ディレクトリ自体がコピー操作を実行するための実行権限を必要とし、ファイルがファイルからデータを抽出するための読み取り権限を必要とするためです。
私の論理に欠陥があるかどうか誰かに教えてもらえますか?
あなたは必要です:
あなたは必要です:
ご覧のとおり、これら2つの質問は実際には同じです。確認したい場合は、数分で自分でテストできます。
まず、実行権限のないディレクトリは役に立たないことを理解する必要があります。読み取り権限があれば内容をリストできますが、実行権限がないとエラーがスローされます。取得されるのはファイル内のファイル名であり、ファイルに関する他の情報はありません。
次に、ディレクトリの実行権限により、読み取り権限に関係なくコンテンツにアクセスできることを理解します。ただし、ディレクトリ内のファイルの正確な名前がわかっている場合のみ。読み取り権限がないと、ディレクトリの内容を一覧表示できませんが、ファイル名がわかっていて、ファイル自体に適切な権限がある場合は、executeを実行すると、ディレクトリ内のファイルにアクセスできます。
次に、ディレクトリに対する書き込み権限により、ファイルに対する権限に関係なく、ファイルの追加とファイルの削除が可能になることを理解してください。これは、読み取り権限さえもないファイルを削除できる可能性があることを意味します。
役立つかもしれない類推は、電話帳です。ディレクトリはまさにそれ、つまりディレクトリです。フォルダではありません。これは電話帳のようなもので、ファイル名とそれに関連する「電話番号」(iノード番号と呼ばれます)だけがわかります。ディレクトリの読み取り権限により、電話帳を読み取ることができます。実行権限により、電話帳の番号をダイヤルできます。書き込み権限を使用すると、電話帳にファイル名と番号を書き留めたり、既存のファイル名と番号を書き出すことができます。実行権限(番号をダイヤルする機能)はあるが読み取り権限(電話帳を読む機能)がない場合でも、ファイル名がわかっていれば電話をかけることができます。 (この例では、iノード番号は必要なく、ファイル名だけなので、アナロジーは少し崩れます。)
そして、非常に重要なことに、これはあなたの電話がどれほど成功するかについてはまったく何も言っていないことに注意してください、あなたが電話をかけることができることができるだけです。ファイルのアクセス許可に入るときです。電話をかけることができる場合、つまり、ディレクトリに対する実行権限(およびファイル名がわかっているか、ディレクトリに対する読み取り権限)がある場合、ファイルの権限が重要になります。
ファイルの読み取り権限がある場合、電話の相手が質問に答えます(ファイルの内容を伝えるなど、情報を提供します)。書き込み権限がある場合は、回答を変更できます(ファイルの内容を変更できます)。実行権限がある場合は、ファイルをプログラムとして実行できます...これには類推はありません。
ディレクトリへの書き込み権限がなくてもファイルの内容を変更できることに注意してください。ディレクトリ(電話帳)を変更するのではなく、ディレクトリが番号を持っているファイルのみを変更します。ただし、「電話帳」に新しい名前と番号を書き込む必要があるため、ディレクトリへの書き込み権限がないと、ディレクトリに新しいファイルを作成できません。同様に、ディレクトリへの書き込み権限があり、質問に答えず、指示を受け入れない(ファイルへの書き込み権限、読み取り権限がない)電話でジャークが発生した場合でも、名前をスクラッチできます。電話帳。
私はこのアナロジーを自分で考えました。これは、ほとんどの点で非常に正確であり、ISディレクトリが「ディレクトリ」と呼ばれる理由です。うまくいけば、ディレクトリのアクセス許可とファイルのアクセス許可の関係を理解するのに役立ちます。(私がしなかった重要な機能があります。ディレクトリでは「スティッキービット」と呼ばれますが、自分で調べることもできます)。
ユーザーには、少なくとも何らかの目的でターゲットディレクトリに対する書き込みおよび実行権限が必要です(つまり、ユーザーが所有者である場合は、少なくとも権限300
、ユーザーは所有者ではないが、グループに少なくとも権限がある場合030
およびユーザーが所有者でなく、グループにも属していない場合は、少なくとも権限003
)
ユーザーには、少なくとも何らかの手段でソースディレクトリに対する読み取りと実行の権限が必要です(つまり、ユーザーが所有者である場合は、少なくとも権限500
、ユーザーは所有者ではないが、グループに少なくとも権限がある場合050
およびユーザーが所有者でなく、グループにも属していない場合は、少なくとも権限005
)
書き込み権限(最初のケース)と読み取り権限(2番目のケース)が必要な理由は、一目瞭然です。どちらの場合も実行権限が必要な理由は、ファイルの書き込み/読み取りを行うにはディレクトリにアクセスできる必要があるためです。これは、ユーザーがターゲット/ソースディレクトリに対する実行権限を持っている場合にのみ許可されます。