Linuxファイルシステムのパーミッションの解読

公開: 2017-02-24

Linuxのファイルパーミッションは、一部の人にとっては難解な数論の象形文字のように見えるかもしれませんが、それは理解できます。 Linuxのファイルシステム許可モデルは、UNIXのレガシーに由来しています。 ただし、その背後にあるロジックを理解すれば、それらを理解するのは非常に簡単です。

権限グループとタイプ

すべてのファイルおよびフォルダのアクセス制御は、次の情報を使用してファイルシステムで定義されます。

  • 3つの権限グループ:所有者のug 、グループ、 oまたはa 、すべてのユーザー。
  • 3つの権限タイプ: r 、読み取り、 x 、実行、 w 、書き込み。

権限の種類は、フラグと呼ばれる文字「r」、「x」、「w」であり、ファイルまたはフォルダの権限を何らかの方法でリストすると、そのように表示されます。 未設定のフラグは「-」文字で示されます。 パーミッショングループのものは、ファイルの所有権とグループを変更するコマンドで使用されます。これについては、後ほど詳しく説明します。

閲覧許可

GUIファイルマネージャーを使用するか、コンソール端末でlsコマンドの出力を調べることにより、ファイルまたはフォルダーのアクセス許可を表示できます。

ターミナルを開き、次のコマンドを入力します。

$タッチテスト

$ ls -la test

-rw-r–r–1人のyorgosスタッフ02月23日17:07テスト

文字列「-rw-r–r–」には、関心のあるファイルシステムのアクセス許可情報が含まれています。左から右への残りのフィールドには、次の情報が表示されます。

  • このファイルへのリンクはいくつありますか(1)
  • 所有者のユーザーID(yorgos)
  • グループID(スタッフ)
  • バイト単位のファイル長(0)
  • 作成日(2月23日)
  • 作成時間(17:07)
  • ファイル名(テスト)

許可ビット

権限グループとタイプの組み合わせは9種類ありますが、フラグの位置は10種類あります。 前者はファイルタイプフラグを示し、後者は権限自体を示します。 ファイルタイプは、ファイルの場合は「-」、シンボリックリンクの場合は「l」(これらは別のファイルを指すだけのファイルシステムリンクです)、ディレクトリの場合は「d」です。 この例の最初の文字/フラグは「-」なので、単純なファイルについて話します。 続けて、権限フィールドを分類してみましょう。

:ファイルタイプ(これにはl、-、またはdを含めることができます)

rw- :読み取りおよび書き込み権限(実行なし)。 これらの権限は所有者用です。

r– :読み取り権限、書き込みおよび実行権限なし。 これらの権限は、グループに属するユーザーに関するものです。

r– :読み取り権限、書き込みおよび実行なし。 最後に、これらの権限は他のすべての人に関係します。

つまり、実際には、これは「このファイルは所有者が読み書きでき、他のすべての人が読み取り専用である」という意味です。 グループは同じ権限を共有します。

権限の変更

ファイルまたはフォルダーのアクセス許可を変更するには、GUIコマンドを使用するか(これはこの記事の範囲外であるため、ここでは説明しません)、ターミナルで特定のLinuxコマンドを使用します。 これから使用するコマンドはchmod (ファイルモードの変更)と呼ばれます。 chmodコマンドは、さまざまな方法で動作を変更するさまざまなパラメーターを受け入れますが、その一般的な使用法は次のとおりです。

$chmod<モード><ファイル>

<mode>は、次の記号で指定されます。

r読み取りフラグ

w書き込みフラグ

x実行フラグ

uユーザー/所有者の許可フラグ

gグループ許可フラグ

o他のユーザーの許可フラグ

他にもいくつかありますが、それらについては記事の最後のセクションで説明します。

したがって、グループに属するユーザーに実行権限を付与するとします(ただし、最初にファイルの所有者であることを確認してください)。

$ chown g+xテスト
$ls-lテスト
-rwxrwxrwx1yorgosスタッフ02月23日17:07テスト

または、他のすべての人を完全にロックアウトする必要があるかもしれません。 ファイルの読み取り、書き込み、実行はできません。

$chowno-rwxテスト
$ls-lテスト
-rwxrwx —1人のyorgosスタッフ02月23日17:07テスト

ここでは、最後のフラグがすべて「-」に設定されていないことがわかります。
より多くの例を見たい場合は、次のコマンドを発行して、chmodのマニュアルページを参照してください。

$ man chmod

所有者とグループ

chownコマンドを使用して、ファイルおよびファイルのグループ所有権を変更することもできます

chownコマンドは何らかの方法で動作を変更するさまざまなパラメーターを受け入れますが、最も一般的な使用法は次のとおりです。

#chown<所有者><ファイル>

または

#chown <owner:group> <file>

最初の例は、ファイルの所有者を別の所有者に変更するために使用されます。 ただし、ファイルの所有権を変更するには、rootアクセス権が必要であることに注意してください。 したがって、以下を実行することによって:

#chown nobody test

#ls-lテスト

-rwxrwxrwt1誰もスタッフなし02月23日17:07テスト

ファイルがユーザーID「nobody」によって所有されており、「yorgos」によって所有されていないことが明らかになりました。

同様にコマンド:

#chown nobody:wheel test

#ls-lテスト

-rwxrwxrwt1誰もいないホイール02月23日17:07テスト


ファイルの所有権をnobodyに変更し、グループをwheelに変更します

コマンドとそのさまざまなパラメーターについて詳しく知りたい場合は、コマンドを発行してchownのマニュアルページを参照してください。

$ man chown

特別な許可

この記事ですでに説明した権限の種類とグループの他に、「特別な権限」と呼ばれるものがいくつかあります。

これらは次のとおりです。

s       SetUserIDおよびSetGroupIDフラグ。

t       粘着性のある旗。

1つ目は、 chmodコマンドの「s」フラグを通常の方法で使用して設定されます。

$ chmod u+sテスト
$ls-lテスト
-rwsrwx—   1ヨルゴス  スタッフ  02月23日17:07テスト

このフラグは、SUID(ユーザーIDの設定)またはSGID(グループIDの設定)フラグとも呼ばれます。 このビットが設定されている場合、ファイルはその所有者のアクセス権を継承します。 これは、ファイルを実行するすべての人が所有者として実行していることを意味します。 SGIDも同様ですが、ファイルはそのグループのアクセス権を継承します。 もちろん、これはセキュリティの問題につながる可能性があるため、注意が必要です。

スティッキービット、つまり「t」は特に便利です。 通常/tmpのように共有されるディレクトリに設定すると、そこで作成されたファイルの名前を変更したり、削除したりできるのは、それぞれの所有者だけです。 スティッキービットが設定されていない場合、ディレクトリの所有者はそれらを制御できません。

次のコマンドを発行して、ディレクトリを「スティッキー」にすることができます。

$ chmod + t / directory

8進数表現

フラグを使用して「r」や「w」などの権限を定義する以外に、数値を使用することもできます。 chmodコマンドは、次の値を権限に割り当てます。

「r」=4

「w」=2

「x」=1

したがって、所有者に対して読み取り/書き込み/実行を行い、他のすべてのユーザーに対して読み取り/実行を行うようにファイルを設定するには、「-rwxr-xr-x」を意味し、次のように数値を計算します。

rwx = 4 + 2 + 1 = 7

rx = 4 + 1 = 5

最後にコマンドを発行します。

$chmod755テスト
$ ls –テスト
-rwxr-xr-x   1ヨルゴス  スタッフ  2月21日02:08テスト

さまざまな権限と数値を使用して、コツをつかんで自分で練習してください。