Unixでcpコマンドの権限の使い方を理解しようとしています。
- ファイルをディレクトリにコピーするために必要な権限
- ディレクトリからコピーするにはどのような権限が必要ですか?
最初の質問に対処するにはディレクトリに実行権限が必要で、ファイルのバイナリを読み取るにはファイルに読み取り権限が必要で、出力ファイルに書き込み権限が必要であるとします。
コピー操作を実行するには、2番目のディレクトリ自体に実行権限が必要です。ファイルからデータを抽出するには、ファイルに読み取り権限が必要です。
私の論理に問題があるかどうか教えてくれる人はいますか?
答え1
以下を行う必要があります。
- ソースディレクトリ:実行および読み取り権限
- ソースファイル:読み取り権限。
- 宛先ディレクトリ:実行および書き込み権限。
- ターゲットファイル:コピーするまで終了しないため、権限は必要ありません。または、ファイルが存在する場合は書き込み権限を付与します。
以下を行う必要があります。
- ソースディレクトリ:実行および読み取り権限
- ソースファイル:読み取り権限。
- 宛先ディレクトリ:実行および書き込み権限。
- ターゲットファイル:コピーするまで終了しないため、権限は必要ありません。または、ファイルが存在する場合は書き込み権限を付与します。
ご覧のとおり、これら2つの質問は実際には同じです。確実に確認したい場合は、数分で直接テストしてみてください。
答え2
まずは理解していただきたいと思います。実行権限のないディレクトリは役に立ちません。 読み取り権限がある場合は、内容を一覧表示できます。ただし、実行権限がないとエラーが発生し、取得できるのはその中のファイル名だけであり、ファイルに関するその他の情報はありません。
次に詳細をご覧ください。ディレクトリに対する実行権限を使用すると、読み取り権限に関係なくコンテンツにアクセスできます。- ただし、ディレクトリ内のファイルの正確な名前が既にわかっている場合にのみ適用されます。読み取り権限がないと、ディレクトリの内容を一覧表示できませんが、ファイル名を知っていて、ファイル自体に対する正しい権限がある場合は、実行してディレクトリにあるファイルをインポートできます。
次に詳細をご覧ください。ディレクトリへの書き込み権限を使用すると、ファイルを追加および削除できます。、ファイルに対するどの権限があるかに関係なく。これは、読み取り権限のないファイルを削除することもできることを意味します。
役に立つかもしれない1つのたとえ話は電話帳です。ディレクトリはディレクトリです。フォルダではありません。これは電話帳に似ており、ファイル名と関連する「電話番号」(inode番号と呼ばれる)のみを通知します。ディレクトリに対する読み取り権限を使用すると、電話帳を読み取ることができます。実行権限を使用すると、電話帳の番号に電話をかけることができます。書き込み権限を使用すると、電話帳にファイル名と番号を記録するだけでなく、既存のファイル名と番号を削除することもできます。実行権限(電話ダイヤル機能)はありますが、読み取り権限(電話帳読み取り機能)はなく、ファイル名を知っていても電話をかけることができます。 (この場合、inode番号は必要なく、ファイル名のみが必要なので、たとえ話が少し理解されています。)
そして非常に重要なことは、これはあなたの電話がどれだけ成功したかについては何も知らないことです。作る電話。これはファイル権限に入る時です。呼び出すことができる場合、つまりディレクトリに対する実行権限があり(すでにファイル名を知っている場合、またはディレクトリに対する読み取り権限がある場合)、ファイル権限が重要になり始めます。
ファイルへの読み取りアクセス権がある場合、電話をかけた人はあなたの質問に答えます(ファイルの内容を知らせる情報を提供します)。書き込み権限がある場合は、回答を変更できます(ファイル内容の変更)。実行権限があれば、ファイルをプログラムとして実行できます。これに対するたとえ話はありません。
ディレクトリ(電話帳)を変更するのではなく、番号付きのファイルのみを変更するので、ディレクトリへの書き込み権限なしでファイルの内容を変更できます。ただし、ディレクトリへの書き込み権限がないと、ディレクトリに新しいファイルを作成できません。これは、電話帳に新しい名前と番号を記録する必要があるためです。同様に、あなたがディレクトリへの書き込みアクセス権を持っていて、電話であなたの質問に答えない、またはあなたの指示に従わない愚かな場合(ファイルへの書き込みアクセス権なし、読み取りアクセス権なし)名前を削除できます。本。
私はこのたとえ話を直接思い出しました。それはほとんどの点で非常に正確です。これがカタログを「カタログ」と呼ぶ理由です。ディレクトリ権限とファイル権限の関係を理解するのに役立つことを願っています。 (ディレクトリには「固定ビット」という重要な機能を扱っていませんが、直接参照できます。)
答え3
ユーザーは、何らかの方法でターゲットディレクトリに対して少なくとも書き込みおよび実行権限を持っている必要があります(たとえば、ユーザーが所有者の場合は少なくとも権限、ユーザーが所有者ではなくグループに属している場合は少なくとも
300
権限、030
ユーザーの場合は所有者ではなくグループ属していませんが、少なくとも権限があります003
)ユーザーは、任意の方法でソースディレクトリに対して少なくとも読み取りおよび実行権限を持っている必要があります(たとえば、ユーザーが所有者の場合は少なくとも権限、所有者ではなくグループに属する場合は少なくとも権限、ユーザー
500
の050
場合は所有者でもグループにも属していません。少なくとも権限があります005
)
書き込み権限(最初の場合)と読み取り権限(2番目の場合)が必要な理由はどちらも、実行権限が必要な理由は明らかです。ファイルを読み取るには、そのディレクトリにアクセスできる必要があります。これは、ユーザーが宛先/ソースディレクトリに対する実行権限を持っている場合にのみ許可されます。