Linux でのディレクトリ構造とインストール

Linux でのディレクトリ構造とファイルのアクセス許可

1. Linux でのディレクトリ構造

Windows をインストールしたことのある友人は、Windows システムをインストールするときに、C ドライブにどのくらいの空き容量が適切で、D ドライブにどのくらいの空き容量が適切であるかをよく考慮することを知っていると思います。実際、インストール時にこれを考慮する必要があることがよくあります。システム。つまり、分割の問題です。

実際、Linux にも同様の構造があり、これをディレクトリ ツリー構造と呼びます。

なぜそう呼ぶのですか?実はこれには、かなりの部分で Unix システムに由来があります。

(1) Linuxにおけるディレクトリツリー構造

ご存知のとおり、Linux のすべてのデータはファイルの形式で保存されます。したがって、ディレクトリ ツリー構造は、Linux システム全体の最も重要な部分である Linux システムの骨格にたとえることができます。

いわゆるディレクトリツリー構造。ルートディレクトリを基にしたファイル構造であり、下位に向かって分岐したディレクトリ構造を示します。

ディレクトリツリー構造全体の中で最も重要なものはルートディレクトリであり、ルートディレクトリの表現方法は「/」です。

そして、すべてのファイルはディレクトリ ツリーに関連しています。簡略化したディレクトリ ツリーを以下に示します。
ここに画像の説明を挿入

  • 上記のファイルはすべて/ルート ディレクトリから始まり、ルート ディレクトリから派生します。
  • .そして、上の図の先頭はファイルに属し、残りはディレクトリ(ディレクトリ)であることに注意してください。
  • たとえば、.bashrcファイルにアクセスしたい場合、パスは次のようになります。/home/dmstail/.bashrc

以上がLinuxシステムのファイル構造の簡単な説明です。しかし、問題があります。実際、ファイル データはディスク パーティション (Windows の C ドライブと D ドライブなど) に保存されることが多いのですが、どうすればファイル システムとディスク間の接続を確立できるでしょうか?

このとき、実装の問題が関与する必要があります

(2) ファイルシステムとディレクトリツリーの関係 - マウント

いわゆるマウントとは、ディレクトリをエントリポイントとして使用し、ディスクパーティションのデータをこのディレクトリに格納することを意味します。** つまり、ディレクトリに入るときは、パーティションのデータを読み取るのと同じです。

そして、特定のパーティションがマウントされているディレクトリがマウント ポイントになります。

システム全体の中核として、ルート ディレクトリは当然それに応じてマウントされる必要があります (これは必須です!)。これは主に実際の状況に依存します。ルート パーティションに加えて、他のパーティションのユーザーは、実際のニーズに応じて対応するマウント操作を実行できます。(同じウィンドウでもマウントの概念が使用されます。)

では、ファイルのパス名からファイルがどのパーティションにあるかを判断するにはどうすればよいでしょうか?

実際、これは非常に簡単で、逆検索と追跡を使用する必要があります。たとえば、特定のファイルのパスが である/usr/local/bin/redis.conf場合、逆トレースを通じて、そのファイルがマウントしているパーティションが実際にはルート パーティションであることがわかります。/

2、Linux ユーザー (グループ) とファイル権限

Linux ファイル システムの関連アーキテクチャを理解すると、多くの人がそれに驚かれると思います。実際、興味深いのは、その厳密なディレクトリ構造だけでなく、Linux ファイル システムのアクセス許可設定も同様です。

実際、Linux システムのファイル許可設定も非常に厳格であり、人々に冗長性があるかのような錯覚を与えることさえありますが、実際には、システムのセキュリティと調整はほぼ保証されています

(1) ユーザー、ユーザーグループ等

ユーザーとユーザー グループの概念を紹介する前に、 Linux は本質的に複数人でマルチタスクのシステムであることを明確にする必要がありますしたがって、多くの人が同じホストを同時に使用する状況がよくあります。個人のプライバシーと、すべての人に好ましい作業環境を提供する必要性を考慮して、Linux はユーザーおよびユーザー グループに関連する権限を設計しました。

以下の概念を 1 つずつ紹介します。

1. ユーザー

ユーザーとは、実際には Linux ユーザーが Linux システムにログインするためのアカウントであり、システム管理者 (root ユーザー) が各ユーザーにアカウントを割り当てる必要があり、ユーザーはそのアカウントに基づいてシステムにログインします。**同じシステムではありますが、異なるアカウントでログインした後に表示されるコンテンツの一部が異なることに注意してください。**つまり、アカウント B の一部のプライベート ファイルは、アカウント A がログインした後は表示されなくなります。これは、複数人によるマルチタスク システムの関連要件とも一致しています。

たとえば、このマシンには別のユーザーの関連ファイルが存在します。

ここに画像の説明を挿入

もちろん、グラフィカル インターフェイスを介して表示するだけでなく、コマンド ラインを使用してマシン上のユーザーを表示することもできます。

cat /etc/passwd
...相关用户信息

2. ユーザーグループ

Linux の場合、いわゆるユーザー グループは、システムにログインするアカウントの集合です。各ユーザーにはユーザー グループがあり、システムはユーザー グループ内のすべてのユーザーを集中管理できます。それは現在のグループやチームのコンセプトに相当します。

たとえば、リーダーが 2 つのチームを担当し、チーム A にメンバー A、B、C がいるとします。チームBのメンバーはD、E、Gです。2 つのチームはそれぞれプロジェクトを完了する必要があり、プロジェクトにはある程度の競争があり、評価される必要があります。では、私たちのチームのプロジェクトの詳細が他のチームの人々に見られないようにするにはどうすればよいでしょうか。

このとき、2 つのチーム間の競争の公平性を確保するために、リーダーは 2 つのチームに対応する権限を設定します。つまり、チーム A のメンバーはチーム B のプロジェクトのコンテンツを閲覧できず、その逆も同様です。 。チームのメンバーはチーム内の公開コンテンツを表示できますが、コンテンツがチーム メンバーに非公開の場合は、同じチームのメンバーであっても表示できません。

もちろん、リーダーはチーム A とチーム B のすべてのコンテンツを同時に閲覧できるように権限も設定する必要があります。つまり、リーダーには上限権限があります。

この観点から見ると、ユーザーグループを設立することは確かに多くの利点をもたらすように思えます。もちろん、ユーザー グループの最も便利な機能はチームのコラボレーションです。

また、同じアカウントが複数のユーザー グループのサポートを受けることもできます。(上記例のリーダーはチームAとチームBの両方の権限を持っています)

また、各ユーザーが参加できるユーザー グループの数に制限はありません。つまり、必要な数のユーザー グループに参加できます。巨大なユーザーネットワークを形成します。

3. その他

他人の権限とは、簡単に言うと、ファイル所有者(ユーザ)とファイル利用者グループ(ユーザグループ)以外の権限のことです。

そう言うのは少し曖昧かもしれませんが、写真を見てみましょう。

ここに画像の説明を挿入

ABC と比較すると、D は別人です。D は ABC ユーザー グループに属していないため、ABC ユーザーの公開コンテンツに直接アクセスできません。D にユーザー グループの情報にアクセスさせたい場合は、ユーザー D を対応するユーザー グループに追加することを選択すると、共有情報へのアクセスを実現できます。

ここで注意しなければならないのは、この D は root ではなく単なる一般ユーザーであるということです。

では、ルートとは何でしょうか?

ルートは現在のシステム権限の上限であり、到達できない場所はないと言えます。言い換えれば、ルート管理者の前では、すべてのユーザー、ユーザー グループ、その他のユーザーにはプライバシーがまったくありません。しかし、大きな力には大きな責任が伴いますroot ユーザーは Linux システム全体の中核ユーザーであるため、システムへの不要なトラブルを避けるために、root アカウントを合理的に使用する必要があります。

(2) Linux ユーザー ID とユーザー グループ レコード

Linux システムでは、デフォルトで、システム上のすべてのアカウント、一般 ID ユーザー、および root ユーザー情報が/etc/passwdファイルに保存されます。(興味のある方はぜひチェックしてみてください)

個々のユーザーのパスワードはファイルに保存されます/etc/shadow

すべての Linux グループ名は に記録されます/etc/group

  • このマシンを例としてすべてのユーザーを表示します。
cat /etc/passwd
# cat表示查看某一个文件,后跟文件的路径
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
..........
  • このマシンを例として、個々のユーザーのパスワードを表示します。
sudo su
# 切换到管理员查看(此处是强制进行的)

# 查看个人密码文件
cat /etc/shadow
root:*:18717:0:99999:7:::
daemon:*:18717:0:99999:7:::
bin:*:18717:0:99999:7:::
.......

また、セキュリティを確保するために、Linux はパスワード ファイルに SHA512 ハッシュ暗号化アルゴリズムを使用しており、各行はユーザーに対応しており、その具体的な意味は次のとおりです。

ユーザー名: 暗号化されたパスワード: 最終変更時刻: 最小変更間隔: パスワードの有効期間: パスワードの変更が必要になるまでの警告の日数: パスワードの有効期限が切れた後の猶予時間: アカウントの有効期限: 予約済みフィールド

  • このマシンを例としてすべてのユーザー グループを表示します。
# 以普通用户的身份查看
cat /etc/group

# 以下是所有的用户组
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:
tty:x:5:
disk:x:6:
..........

(3) Linuxのファイルパーミッション

Linux を初めて使用する友人は、ターミナルでコマンドを入力すると Permission が拒否されるという経験をしたことがあると思います (少なくとも私が初心者の頃は何度も発生しました)(これに遭遇したことがない場合は、アクセス許可を十分に理解していることを意味します) この状況は、Linux ファイルのアクセス許可をよく理解していないためによく発生します。

1. Linux ファイルのアクセス許可

では、既存のファイルの関連するアクセス許可を表示するにはどうすればよいでしょうか? コマンドひとつで簡単ですls

このマシンを例に挙げます

# 切换到管理员用户
sudo su

# 进入到根目录
cd /

# 查看当前目录下的文件
ls -al

drwxr-xr-x   4 root   root     4096 410 14:54 home
lrwxrwxrwx   1 root   root        7 331  2021 lib -> usr/lib
lrwxrwxrwx   1 root   root        9 331  2021 lib32 -> usr/lib32
lrwxrwxrwx   1 root   root        9 331  2021 lib64 -> usr/lib64
lrwxrwxrwx   1 root   root       10 331  2021 libx32 -> usr/libx32
drwx------   2 root   root    16384 920  2021 lost+found
drwxr-xr-x   6 root   root     4096 410 14:58 media
drwxr-xr-x   2 root   root     4096 410 15:35 mnt
........
[权限]	[链接][拥有者][用户组]  [文件容量]  [修改日期]   [文件名] 

# 切换到普通用户
exit
  • 本機では一般ユーザーから管理者ユーザーに切り替えることができますsudo suが、管理者を使用して直接操作することは推奨しません。
  • ls コマンドはリスト、つまりリストを意味し、alオプションは隠しファイルを含むすべてのファイルを詳細に表示することを意味します (このタイプのファイルは . で始まり、デフォルトでは非表示になります)。
(1) ファイル出力の詳細説明

また、上記の出力から、ほとんどすべてのファイル出力形式が類似していることがわかります。以下の形式の意味を簡単に紹介します。

ここに画像の説明を挿入

  • 最初の列はファイル タイプのアクセス許可lrwxrwxrwx を示し、合計 10 文字です。
    • 最初の文字は、ディレクトリ、ファイル、リンクなどのファイルのタイプを示します (この例の最初の文字は l で、リンク ファイルを意味します)。
    • ディレクトリ ファイルはdを使用して表されます。
    • -ファイルを示します。
    • lリンクされたファイルを示します。
    • bデバイスファイルに格納できる周辺デバイス(ブロック単位でランダムに読み書きできるデバイス)を示します。
    • cデバイス ファイル内のシリアル ポート デバイス(キーボード、マウスなど) を示します (ワンタイム読み取りデバイス)。
  • 2 番目の列は、リンクの数を示します。つまり、このノードにリンクされているファイル名がいくつあるかを示します。ノードの概念 (inode) は、Linux システムでは、各ファイルが独自の属性とアクセス許可を記録することに注意してください。ファイルシステムの i ノード。
  • 3 番目の列はファイルの所有者を示します。
  • 4 番目の列は、ファイルが属するユーザー グループを示します。Linux システムでは、アカウントは 1 つ以上のユーザー グループに参加します。
  • 5 番目の列はファイルの容量を示し、デフォルトの単位はバイトです。
  • 6 列目は、ファイルが作成された日付または最後に変更された日付を示します。ファイルがあまりにも前に変更された場合は、年のみが表示されます。
  • 7 番目の列はファイル名を示します。特別なのは、列が.で始まる場合、そのファイルが隠しファイルであることを意味します。
(2) ファイルタイプパーミッションの詳細説明

上記では、ファイルがリストされるときにそのファイルが持つ関連情報をすべて説明していますが、最も印象的なのはファイル タイプのアクセス許可だと思います。以下では、ファイル タイプのアクセス許可について詳しく説明します。

ここに画像の説明を挿入

ファイルタイプの 10 文字のうち、大きく 4 つのグループに分類できます。最初の文字はそれ自体がグループです。以降は3文字ごとにグループとなります。

このうち、 はr読み取り権限を意味し、wは書き込み権限を意味し、 はx実行権限を意味します。そして、これら 3 つの権限の位置は一定です。特定の場所にこの権限がない場合は、代わりに - を使用し、書き込まないことはできません。

  • 最初のグループは引き続きファイルのタイプを表します。
  • 2 番目のグループは、ファイル所有者の権限を示します。2 番目のグループに権限が表示されている場合rw-、ファイル所有者はファイルの読み取りと書き込みはできますが、実行権限がないため実行できないことを意味します。
  • 3 番目のグループは、現在のユーザー グループに参加する権限を表します。
  • 4 番目のグループは、自分自身ではなく。

アクセス許可のセットに関係なく、対応するアクセス許可は基本的に特定のアカウント向けに設計されています。

(3) Linux ファイルシステムの重要性

Linux ファイル システムは Windows システムとは異なり、ファイルに多くの属性を追加します。明らかに、これらのプロパティは実際にデータのセキュリティをかなりの程度保証します。

  • システム保護機能
  • チーム開発データやデータ共有機能
  • データのセキュリティを確保する

2. ファイルの属性と権限を変更する

先ほど、Linux ファイル システムに対するファイルの属性とアクセス許可の重要性について紹介しました。実際、一部のファイルの属性やアクセス許可は、一部のユーザーの特定の動作を制限しますが、対応する方法でそれらを変更して、特定のファイルの属性やアクセス許可を作成することは可能です。かわった。

Linux ユーザー、ユーザー グループなどの概念と同様に、さまざまな属性を変更するための変更権限が当然存在します。3 つの主要なカテゴリがあります。

  • ファイル所有者の変更
  • ファイルが属するユーザーグループを変更する
  • ファイルの特定の権限を変更する

なぜ他人の権限が変更されないのか疑問に思う人も多いと思いますが、その理由は非常に簡単で、他人に特定の権限を取得させたい場合は、そのユーザー(アカウント)をユーザーグループに追加するだけで済むからです。

では、なぜユーザー、ユーザー グループ、および対応するファイルのアクセス許可を変更する必要があるのでしょうか?

その理由は主にセキュリティ上の理由です。たとえば、特定のファイルを別のユーザーにコピーする必要がある場合、Linux ではファイルをコピーするときに、現在のユーザーの属性と権限がファイルのコピー中にコピーされることがよくあります。**これにより、アクセス許可の問題が簡単に発生する可能性があります。ファイルの受信者は、アクセス許可の問題により、コピーしたファイルにアクセスできない可能性があります。現時点では、ファイルの関連する属性またはアクセス許可を変更する必要があります。 。

(1) ユーザーが所属するグループを変更する

ユーザーが所属するグループを変更するには、コマンドchgrpを使用します。これは単に変更グループの略称です。chgrp コマンドはユーザーが属するグループを変更できますが、変更を成功させるには、変更するグループ名が /etc/group に存在する必要があることに注意してください。そうでない場合は、エラーが報告されます

chgrp のコマンド構文は次のとおりです。

chgrp [-R]  dirname/filename

実際、構文は比較的単純です。[-R]このオプションは再帰的な操作を意味することに注意してください。つまり、変更されたディレクトリの下にサブディレクトリまたはサブファイルがある場合、これらのファイルまたはディレクトリは同期的に更新されます。

例を見てみましょう: この例では、123.txt ファイルのユーザー グループを root に変更します (ユーザー グループは/etc/groupに存在します)。

# 切换到管理员用户
sudo su

# 此处以文件为例,可以看出,123.txt文件属于lambda用户及用户组
ls -l
-rw-r--r-- 1 lambda lambda       61 926  2021 123.txt

# 修改123.txt文件的用户组
chgrp root 123.txt

#再次查看123.txt文件的相关属性,用户组由lambda变为root
ls- l
-rw-r--r-- 1 lambda root         61 926  2021 123.txt

# 尝试将该文件修改到不存在的用户组中
chgrp  test  123.txt
chgrp: invalid group: 'test'

コマンドを使用して一部のファイルまたはディレクトリのユーザー グループを変更できますchgrpが、変更されたユーザー グループがその中にない場合は/etc/group、(上記と同様) エラーが表示されますchgrp: invalid group: 'test'

(2) ファイル所有者を変更する

では、ファイルの所有者を変更するにはどうすればよいでしょうか? 実際、これはファイルを変更するためのユーザー グループに似ていますが、コマンドが異なります。明らかに、ファイル所有者を変更するコマンドの完全名はchownchange ownerである必要がありますchgrpと同様に、ファイル所有者を変更するときに、ターゲット ユーザーがファイルに記録されていることを確認する必要もあります。そうしないと、対応するエラーも発生します。/etc/passwd

ここで注意すべき点の 1 つは、chown にはchgrpよりも若干多くの用途があることです。

これは、chown がファイル所有者を変更するだけでなく、ユーザー グループ名も変更できるためです信じられないように聞こえますが、実際には実現可能です。同時に、ディレクトリ内のすべてのファイルとともに所有者を変更する必要がある場合は、-R オプションを追加するだけで済みます。

関連する構文を見てみましょう。

chown [-R] 帐号名称(用户) 文件或者目录
chown [-R] 帐号名称(用户):用户组名称 文件或者目录

同じ [-R]オプションは再帰的な変更を示します。これは、そのサブディレクトリ内のすべてのファイルを同期的に変更する必要があることを意味します。

ここでは、chown の役割をわかりやすくするために、123.txt ファイルの所有者を root に変更し、ユーザー グループを lambda に戻すことができます。

# 首先查看123.txt文件当前的所有属性
ls -l
-rw-r--r-- 1 lambda root         61 926  2021 123.txt

#修改123.txt文件的属性:将拥有者改为root,将用户组改回lambda
chown root:lambda 123.txt

# 再次查看123.txt文件的所有属性
-rw-r--r-- 1 root   lambda       61 926  2021 123.txt

chown root:lambda 123.txtコマンドが実行されると、123.txt ファイルのファイル所有者が root になり、それが属するユーザー グループが lambda になることがわかります。

実際、chown コマンドを使用してファイル所有者を変更する場合、ファイルが属するユーザー グループを変更する別の方法があります。つまり、 chown user.group filename/dirname です。ユーザーとユーザーグループの間に追加可能.ただし、この方法はシステムの誤判定を引き起こす可能性があるため推奨できません。そのため、ユーザーとユーザーグループを分離する方法が最も推奨されます。

(3) ファイルのパーミッションを変更する

ファイル権限について言えば、Linux には実際には 9 つのファイル権限があります。これらは、ファイル所有者、ファイルが属するユーザー グループなどの読み取り、書き込み、実行権限です各 ID には 3 つの異なるタイプの権限があり、合計 9 つの権限があります。

当然のことながら、これらの権限もそれに応じて変更できます。ただし、ファイルのアクセス許可の変更は、ユーザー名やユーザー グループを変更するほど簡単ではなく、まず各アクセス許可の意味 (異常なアクセス許可が表示されるのを防ぐため) と、アクセス許可を表す番号 (ファイルのアクセス許可を変更するため) を理解する必要があります。時間は、対応する番号を使用して、対応する権限の種類を示します)。

ファイルのアクセス許可を変更するコマンドは ですchmod

数値タイプはファイル属性を変更します

さまざまな権限が占める位置は一定であるため、権限と番号の間には次のような対応関係が得られます。

# 读权限
r:4

# 写权限
w:2

# 执行权限
x:1
# 因此某个文件属性拥有所有的权限时,该位置上所对应的数字为7=4+2+1

つまり、各アイデンティティに対応する権限を蓄積する必要がある。

例を見てみましょう:

owner =rwx=4+2+1=7
group=rw-=4+2+0=6
others=r--=4+0+0=4
# 也就是说我们可以为某一个文件设置相应的属性为764,该文件所对应的权限为: rwx  rw- r--

chmod構文は次のとおりです

chmod [-R] xyz 文件或者目录
  • [-R]これは依然として再帰的な変更を意味します。つまり、アクセス許可が変更されると、それに応じてサブファイルのアクセス許可も変更されます。
  • xyz: これは依然としてデジタル タイプの権限属性を表します。これは、対応する 3 つの権限属性の合計です。

例を見てみましょう。123.txt ファイルは、ファイル所有者のみが読み取り、書き込み、実行できるように変更されており、他のユーザー グループなどには権限がないと仮定します。

# 查看123.txt文件的权限
ls -l
# 此时表示文件拥有者有读写权限,用户组成员有读权限,其他人有读的权限
-rw-r--r-- 1 root   lambda       62 430 20:45 123.txt

# 对权限进行修改
chmod 700 123.txt

# 再次查看123.txt的权限
ls -l
# 此时123.txt表示拥有者有读写执行权限,用户组或者其他人没有任何权限,即只有root可以对文件进行操作。
-rwx------ 1 root   lambda       62 430 20:45 123.txt

シンボル タイプ ファイルのアクセス許可を変更する

Linux ファイル システムには、ファイル所有者 (owner)、ファイルが属するユーザー グループ (group)、およびその他 (others) の 3 つの ID があります。実際、u、g、および o を使用して 3 つの ID のアクセス許可を表すことができ、すべての ID を表すには a が追加されます。

次の図に示すように、大まかに次のように表現できます。
ここに画像の説明を挿入

例を見てみましょう。123.txt ファイルを例に挙げます。この時点で、ファイルの所有者は読み取りと書き込みが可能ですが、実行はできないようにファイルのアクセス許可を設定できます。ファイルのユーザー グループを次のように設定します。読み取り可能かつ実行可能であり、他人による実行も可能です。

# 查看文件的权限
ls -l

# 此时文件只有root可以读写执行,其他用户均无权限
-rwx------ 1 root   lambda       62 430 20:45 123.txt

# 进行相应的权限更改
chmod u-x,g=rx,o+x 123.txt
# 再次查看权限
ls -l
# 修改成功
-rw-r-x--x 1 root   lambda       62 430 20:45 123.txt

3. ディレクトリとファイルのアクセス許可の簡単な説明

以下は、ディレクトリとファイルのさまざまなアクセス許可の意味を簡単に紹介する表です。

コンポーネント コンテンツ r w バツ
書類 詳細データデータ ファイルの内容を読み取る ファイルの内容を変更する 実行ファイルの内容
目次 ファイル名 ファイル名を読み取る ファイル名を変更する ディレクトリへの入場許可(キー)

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/qq_50824019/article/details/124519394