一定の期間Windowsを管理していれば、ユーザーアカウントの管理、NTFSファイルシステム、およびパーミッションの設定についての経験があるかもしれません。そうであれば、Linuxファイルのパーミッションとは異なる世界に備えてください!Linuxでは、ファイルシステムは熟練したLinux管理者になるために学ばなければならない別のものです。
これは、Windows管理者の視点からLinuxを学ぶための4部作の第2部です!まだ読んでいない場合は、Part Iを必ず読んでください。
ファイルシステムの操作
まず、Linuxがファイルをどのように保存し管理するかについて見ていきましょう。
注意:すべての例はOpenSUSE Linuxを使用しています。
ドライブレターの不要
Windowsとは異なり、リムーバブルドライブやその他のデバイスは再起動時に自動的にドライブレターが割り当てられて開かれることはありません。Windowsでは、すべてのドライブはドライブレター(C:\、D:\など)としてマウントされます。では、Linuxでのドライブレターの扱いはどうなっているのでしょうか?存在しません!
Linuxでは、ルートフォルダと呼ばれるフォルダがあります。このフォルダはファイルシステムのルートにあり、単純に/
と表されます。スラッシュは、システム内の他のすべてのファイルの前に来る最初のスラッシュです。このスラッシュは、他のドライブレターがのみC:\のサブフォルダとして存在する場合にのみ、基本的なC:\のようなものです。
ルートフォルダには、コアシステムファイルが格納されています。他のデバイスを含むすべてのファイルは、この中央フォルダのサブフォルダです。
Linuxはフォルダとファイルシステムの境界を曖昧にします。Linuxのディレクトリ/homeは、WindowsのC:\Usersフォルダに似た全てのユーザーの「プロファイル」のルートです。この場合、/homeはディレクトリです。ただし、Linuxの「ディレクトリ」は実際にディレクトリである必要はありません。それらはストレージパーティションであることも、別のハードディスクであることもあります。このコンセプトはWindowsのマウントポイントに似ています。
この記事でルートフォルダについて詳しく学ぶことができます。
ユーザーとホームフォルダ
OpenSUSEを使用している場合、以下のようなHomeフォルダがデスクトップに表示されることがあります。このフォルダは、Linux版のC:\users\<username>フォルダまたは「プロファイル」です。Linuxの「users」フォルダは、デフォルトではインストールディスクの/home以下にあります。
以下の例では、ユーザー名がhomelabで、「プロファイル」は/home/homelabにあります。

Linux(およびWindows)では、ホームフォルダ(またはWindowsのユーザープロファイル)はチルダ(~)という省略記号で表されます。したがって、
"~/Documents/blah.txt
のようなものは、実際には/home/<username>/Documents/blah.txt
ファイルを指しています。
Linuxでは大文字と小文字が重要です。
Linuxのすべては大文字と小文字を区別します。この概念はWindowsとは完全に逆であり、ほとんどの場合は大文字と小文字を区別しません。
例えば、ディレクトリ/home/homelabが存在する場合、別のディレクトリとして/home/Homelabを作成することができます。この概念はコマンドにも適用されます。cd /home/homelab
とCD /home/homelab
は異なる動作をします(前者は成功し、後者は失敗します)。
Windowsユーザーの場合、この概念には注意が必要です。大文字と小文字に非常に注意してください!以下に2つの異なるフォルダーの例を示します。唯一の違いは大文字と小文字です:Windows環境ではこれはできません。

ユーザーアカウント
Windowsと同様に、Linuxにもユーザーアカウントの概念がありますが、少し異なる動作をします。まず、LinuxのユーザーアカウントをおなじみのWindowsのユーザーアカウントとして考えてみましょう。
Windowsには、Administrator、非表示のSYSTEMアカウント、Guestなどの組み込みのユーザーアカウントがいくつかあります。WindowsにはAdministrators、Guestsなどの組み込みのセキュリティグループもあります。
Windowsのユーザーとグループは、ローカルユーザーとグループMMCを実行することで表示することができます。lusrmgr.mscを実行します。

WindowsのSID
Windowsでは、ユーザーとグループを一意に識別するために、SIDと呼ばれるものを使用します。Windowsでは、以下のPowerShellコマンドを実行することで、各ユーザーとグループのSIDを見つけることができます。

各WindowsグループSIDは、すべてのWindowsコンピューターで同じです。Windowsの組み込みユーザー SID
は一意です。上のスクリーンショットで見るAdministrator SIDは、すべてのWindowsコンピューターで異なるはずです。Windowsで作成される将来のユーザーまたはグループは一意です。以下のtestグループに注意してください。Windowsコンピューターでtestグループを作成すると、SIDが異なるはずです。

LinuxユーザーID
一方、Linuxはユーザーとグループを同様に処理しますが、LinuxではSIDではなくユーザーID(UID)とグループID(GID)を使用しません。また、Windowsとは異なり、ユーザーとグループはコンピューターごとに一意ですが、すべてのコンピューターで一意ではありません。これは、コンピューターAでのUIDが、同じユーザーでなくても、コンピューターBでのUIDとまったく同じである可能性があることを意味します。
UIDとGIDは、単純な数値規則に従います。各UIDとGUIDは0から始まり、1から999までの範囲で1ずつ増加し、内部システムアカウントでは1000以上のカスタムユーザーアカウントになります。
組み込みのrootユーザーは常にUID 0とGID 0を持っています。また、Windowsの隠しSYSTEMアカウントと同様に、このrootアカウントは一般的に(Linuxディストリビューションによって異なりますが)ログインが制限されています。
組み込みのrootユーザーは、WindowsのSYSTEMおよびAdministrator組み込みアカウントに似ており、ある種の組み込みの保護措置があるため、完全にWindowsを破壊することはできません。
一方、rootユーザーは絶対的な権限を持っています。意図的にrootユーザーに移行し(コマンドラインで
sudo su
コマンドを使用して行うことができます)、自分のオペレーティングシステム全体を削除しようとしても、rootユーザーは喜んでシステムが停止するまで削除します。
たとえば、homelabというユーザーを作成したとします。その場合、homelabのUIDは1000またはhomelabで参照することができます。ユーザーは自動的に内部グループusersのメンバーになります。このグループはグループID 100で参照できます。以下に示すように、getent passwd
コマンドを実行することで、これらのマッピングのリストを見つけることができます。

getent passwd
inside the terminal同様の情報をグループについてもgetent group
コマンドで見つけることができます。

getent group
inside the terminalLinuxファイルのパーミッション
Windowsの世界では、ファイルシステムのパーミッションは楽しいものではありません。NTFSでのパーミッションの設定と管理は、ACE、ACL、継承、伝播など、時には悪夢になることもあります。幸いなことに、Linuxのファイルシステムのパーミッションははるかにシンプルです。
Linuxでは、ファイルに割り当てることができる権限には、読み取り、書き込み、実行の3つの種類があり、アクセスのカテゴリには所有者、グループ、その他の3つのカテゴリがあります。
- 所有者はファイル/フォルダの所有者です。すべてのファイルまたはフォルダには指定された所有者があります。
- グループはファイル/フォルダの所有者です。これは所有者が所属するグループと同じである必要はありません。すべてのファイルまたはフォルダは1つのグループにのみ属することができます。
- その他は、所有するグループに属していない人々です。
すべてのカテゴリーについてオプションを許可または拒否することができます。例えば、所有者に対して読み取り、書き込み、実行オプションを与えることができ、グループや他のユーザーには読み取り/実行オプションを与えることができます。以下のスクリーンショットで確認できます。これはつまり、フォルダの所有者以外の誰も変更できないことを意味します。
Windows Explorerと同様に、Ubuntuでも以下の手順でこの情報を確認することができます:
- デスクトップ上のホームフォルダを開きます。
- 該当のファイル/フォルダに移動します。
- ファイル/フォルダを右クリックし、「プロパティ」をクリックします。
- 「権限」タブをクリックします。
- 「高度な権限」をクリックします。
「高度な権限」ボックスに入ると、そのファイルまたはフォルダに割り当てられたすべての権限がグラフィカルに表示されます。

以下は、「高度な権限」テーブルの表現です。

ファイルの所有権
Windowsと同様に、各ファイルとフォルダには所有者があります。Windowsでは、GUIまたは「takeown」コマンドを使用してファイルの所有権を取得できます。Linuxでは、コマンドラインで「chown
Windowsと同様に、一般的にはsudoを使用して管理者権限でファイルの所有権を変更するために管理者権限が必要です。sudoはLinuxのWindowsユーザーアカウント制御(UAC)の相当です。管理者権限のコマンドラインウィンドウを開く代わりに、コマンドの前にsudoを付けて管理者として実行します。
これらの概念を示すために、rootのみが所有するフォルダを作成しましょう。
- ホームフォルダを開き、Documentsまで移動します。
- 右クリックして、「アクション」→「ターミナルをここで開く」を選択し、以下のコマンドを実行します。

このフォルダは所有者に対して読み取り/書き込み/実行の権限しかありません。管理者権限でフォルダを作成したため、現在の所有者はrootです。
また、アクセス権限を変更して、所有者のみがアクセスできるようにしました。所有グループとその他のユーザーはこのフォルダにアクセスできません。実際、このフォルダにはアクセス権がないことを示す大きなロックが表示されていることに気付くでしょう。
以下に、このフォルダの所有権を取得する方法が示されています。
- 同じフォルダで別のターミナルを開きます(既に開いているものを使用しても構いません)。
sudo chown homelab:users ./owned-by-root
と入力します。

所有権を取得したので、エクスプローラのプロパティウィンドウを使用して、ファイルのアクセス権限を変更することもできます。

(通常は)所有権を変更するだけで、ファイルのアクセス権限を変更する必要があります。Linuxは、デフォルトでどのような権限を持つべきかを理解するのがかなり上手です。権限の変更についての影響を知らずに「chmod」すると、問題を引き起こす可能性があります。
ファイルアクセス権の数値表記
Linuxのトラブルシューティングを行ったことがある場合、オンラインで人々がファイルアクセス権を数値スキームを使って説明するのを見たことがあるかもしれません。以下のスクリーンショットでそれが強調されています。

Linuxは、このアクセスシステムに対して0600のような数字を使った短縮表記を使用します。最初の数字は、追加できるいくつかの特別なプロパティに対してであり、ほとんどの人は通常無視します。実際、ほとんどの人は表記の最初の4桁を無視し、3桁だけを使用します。
ファイルのパーミッションの数値表記に関する詳細については、この記事をチェックしてください。
まとめ
これで、A Windows Guy in a Linux Worldブログ投稿シリーズの第II部が終わります!第III部もお楽しみに!
Source:
https://adamtheautomator.com/linux-file-permissions/