序章

Linuxのアクセス許可により、ファイルまたはディレクトリの所有者は、各ファイルに対するアクセサの関係に基づいてアクセスを制限できます。 これにより、さまざまな人々にさまざまなレベルのアクセスを提供する制御スキームが可能になります。

umask コマンドは、各ユーザーによって作成されたファイルに割り当てられたデフォルトのアクセス許可を決定するために使用されます。 システムとユーザーのニーズに応じて、ファイル共有シナリオに厳格なセキュリティ制限または緩和されたアクセス許可を提供するように変更できます。

このガイドでは、Linuxのアクセス許可の基本について説明し、umaskを正しく構成することの有用性を示します。 また、関連する権限ツールとしてchmodコマンドについても簡単に説明します。

目次

  1. 権限カテゴリ
  2. 権限の種類
  3. Chmodコマンドの使用
  4. Umaskを使用したデフォルトのアクセス許可の設定
  5. 注意の言葉

許可カテゴリ

Linuxの権限は、新しいユーザーにはわかりにくく、理解しにくいように見える場合があります。 ただし、アクセス許可の表現方法に慣れたら、ファイルまたはディレクトリのアクセス許可を簡単に読み取って変更するのは簡単です。

所有者の権限

パーミッションを理解するために必要な最初の概念は、Linuxは基本的にマルチユーザーオペレーティングシステムであるということです。

各ファイルは、1人のユーザーが所有しています。 VPSを使用しているのがあなただけであっても、特定のプログラムを実行するために作成されたさまざまな「ユーザー」がいます。 次のように入力すると、システム上のさまざまなユーザーを確認できます。

cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh
. . .

/ etc / passwd ファイルには、オペレーティングシステムで作成されたすべてのユーザーの行が含まれています。 各行の最初のフィールドは、一意のユーザーの名前です。 ご覧のとおり、これらのユーザーの多くはサービスとアプリケーションに関連付けられています。

個別のユーザーとして動作するようにサービスを構成すると、ユーザー権限の割り当てを利用してサービスのアクセスを制御できます。 多くのプログラムは、ユーザー名を作成し、そのユーザーを使用してすべての操作を実行するように構成されています。

グループ権限

アクセス許可を割り当てることができる2番目のカテゴリは、ファイルの「グループ所有者」です。

所有者カテゴリと同様に、ファイルは1つのグループだけが所有できます。 各ユーザーは複数のグループのメンバーになることができ、各グループには複数のユーザーを含めることができます。

ユーザーが現在属しているグループを表示するには、次のように入力します。

groups

これにより、ユーザーが現在メンバーになっているすべてのグループが表示されます。 デフォルトでは、1つまたは2つのグループのメンバーである可能性があり、そのうちの1つはユーザー名と同じである可能性があります。

システムで現在使用可能なすべてのグループを表示するには、次のように入力します。

cat /etc/group
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:
tty:x:5:
disk:x:6:
lp:x:7:
. . .

各行の最初のフィールドはグループの名前です。

Linuxでは、ファイルのグループ所有者に基づいてアクセス許可を割り当てることができます。 これにより、1人のユーザーのみがファイルを所有できるため、ユーザーのグループにカスタムアクセス許可を提供できます。

その他の権限

権限を割り当てることができる最後のカテゴリは「その他」のカテゴリです。 このコンテキストでは、otherは、ファイルの所有者ではなく、ファイルを所有するグループのメンバーでもないユーザーとして定義されます。

このカテゴリでは、他の2つのコントロールグループ以外のすべての人に適用される基本権限レベルを設定できます。

権限の種類

各アクセス許可カテゴリ(所有者、グループ所有者、およびその他)には、ファイルの読み取り、書き込み、または実行の機能を許可または制限するアクセス許可を割り当てることができます。

通常のファイルの場合、ファイルの内容を読み取るには読み取り権限が必要であり、ファイルを変更するには書き込み権限が必要であり、ファイルをスクリプトまたはアプリケーションとして実行するには実行権限が必要です。

ディレクトリの場合、ディレクトリの内容を ls (一覧表示)するための読み取り権限が必要です。ディレクトリの内容を変更するには書き込み権限が必要です。実行権限により、ユーザーはcdを実行できます。 (ディレクトリを変更)ディレクトリに。

Linuxは、アルファベットと8進数の2つの別個の記号表記を使用して、これらのタイプの権限を表します。

アルファベット表記

アルファベット表記は理解しやすく、いくつかの一般的なプログラムで権限を表すために使用されます。

各権限は1文字で表されます。

  • r=読み取り権限
  • w=書き込み権限
  • x=実行権限

アルファベット順の権限は常にこの順序で指定されることを覚えておくことが重要です。 特定の特権が付与されている場合、それは適切な文字で表されます。 アクセスが制限されている場合は、ダッシュ(-)で表されます。

最初にファイルの所有者、次にグループ所有者、最後に他のユーザーにアクセス許可が付与されます。 これにより、3つの値からなる3つのグループが得られます。

ls コマンドは、長い形式のオプションで呼び出されると、アルファベット表記を使用します。

cd /etc
ls -l
drwxr-xr-x 3 root root    4096 Apr 26  2012 acpi
-rw-r--r-- 1 root root    2981 Apr 26  2012 adduser.conf
drwxr-xr-x 2 root root    4096 Jul  5 20:53 alternatives
-rw-r--r-- 1 root root     395 Jun 20  2010 anacrontab
drwxr-xr-x 3 root root    4096 Apr 26  2012 apm
drwxr-xr-x 3 root root    4096 Apr 26  2012 apparmor
drwxr-xr-x 5 root root    4096 Jul  5 20:52 apparmor.d
drwxr-xr-x 6 root root    4096 Apr 26  2012 apt
…

このコマンドの出力の最初のフィールドは、ファイルのアクセス許可を表します。

このデータは10文字で表されます。 最初の文字は実際にはアクセス許可の値ではなく、代わりにファイルの種類を示します(通常のファイルの場合は-、ディレクトリの場合はdなど)。

次の9文字は、上記で説明した権限を表します。 所有者、グループ所有者、およびその他の権限を表す3つのグループ。それぞれの値は、読み取り、書き込み、および実行の権限を示します。

上記の例では、「acpi」ディレクトリの所有者が読み取り、書き込み、および実行のアクセス許可を持っています。 グループの所有者と他のユーザーには、読み取りと実行の権限があります。

「anacrontab」ファイルを使用すると、ファイルの所有者は読み取りと変更を行うことができますが、グループメンバーと他のユーザーには読み取りの権限しかありません。

8進表記

パーミッションを表すより簡潔ですが、少し直感的ではない方法は、8進表記を使用することです。

この方法を使用すると、各権限カテゴリ(所有者、グループ所有者、およびその他)は0から7までの数字で表されます。

各タイプの許可に数値を割り当てることにより、適切な番号に到達します。

  • 4=読み取り権限
  • 2=書き込み権限
  • 1=実行許可

カテゴリごとに付与する権限の種類に関連付けられた数値を合計します。 これは、各カテゴリの0から7までの数値になります(0はアクセス許可がないことを表し、7は完全な読み取り、書き込み、および実行のアクセス許可を表します)。

たとえば、ファイル所有者が読み取りおよび書き込み権限を持っている場合、これはファイル所有者の列に6として表示されます。 グループの所有者が読み取り権限のみを必要とする場合は、4を使用して権限を表すことができます。

アルファベット表記と同様に、8進表記には、ファイルタイプを指定するオプションの先頭文字を含めることができます。 この後に、それぞれ所有者権限、グループ所有者権限、およびその他の権限が続きます。

8進表記を使用することでメリットが得られる重要なプログラムは、chmodコマンドです。

Chmodコマンドの使用

ファイルの権限を変更する最も一般的な方法は、chmodコマンドで8進表記を使用することです。 ホームディレクトリに空のファイルを作成して練習します。

cd
touch testfile

まず、作成時にこのファイルに与えられた権限を表示しましょう。

ls -l testfile
-rw-rw-r-- 1 demouser demouser 0 Jul 10 17:23 testfile

権限を解釈すると、ファイル所有者とファイルグループ所有者の両方に読み取りと書き込みの特権があり、他のユーザーには読み取り機能があることがわかります。

これを8進表記に変換すると、所有者とグループ所有者のアクセス許可の値は6(読み取り用に4、書き込み用に2)になり、他のカテゴリには4(読み取り用)になります。 完全なパーミッションは、トリプレット664で表されます。

このファイルには、所有者として実行したいbashスクリプトが含まれていると仮定します。 グループの所有者を含め、他の誰かがファイルを変更することは望ましくありません。また、グループに属していない人がファイルを読み取ることができないようにする必要があります。

-rwxr —–のように、必要な権限設定をアルファベット順に表すことができます。 これを8進表記に変換し、chmodを使用して権限を変更します。

chmod 740 testfile
ls -l testfile
-rwxr----- 1 demouser demouser 0 Jul 10 17:23 testfile

ご覧のとおり、権限は正しく割り当てられています。

権限を元に戻したい場合は、chmodに次のコマンドを与えることで簡単に行うことができます。

chmod 664 testfile
ls -l testfile
-rw-rw-r-- 1 demouser demouser 0 Jul 10 17:23 testfile

Umaskを使用したデフォルトのアクセス許可の設定

umask コマンドは、ファイルとディレクトリに定義された「基本」権限セットに基づいて、新しく作成されたファイルのデフォルトの権限を定義します。

ファイルには、666の基本アクセス許可セット、またはすべてのユーザーの完全な読み取りおよび書き込みアクセス権があります。 ほとんどのファイルは実行されるように作成されていないため、実行権限はデフォルトでは割り当てられません(実行可能権限を割り当てると、セキュリティ上の懸念も生じます)。

ディレクトリには、777の基本アクセス許可セット、またはすべてのユーザーに対する読み取り、書き込み、および実行のアクセス許可があります。

Umaskは、上記の基本権限に減算「マスク」を適用することによって動作します。 例を使用して、これがどのように機能するかを示します。

所有者と所有者グループのメンバーが新しく作成されたディレクトリに書き込めるようにし、他のユーザーには書き込めないようにする場合は、権限を775に割り当てます。

基本権限と必要な権限の違いを表す3桁の数字が必要です。 その番号は002です。

  777
- 775
------
  002

この結果の数値は、適用したいumask値です。 偶然にも、これは多くのシステムのデフォルトのumask値です。これは、前にtouchコマンドでファイルを作成したときに見たものです。 もう一度試してみましょう:

touch test2
ls -l test2
-rw-rw-r-- 1 demouser demouser 0 Jul 10 18:30 test2

umask コマンドを使用して、別のumaskを定義できます。

システムをさらに保護したい場合は、デフォルトで、ファイルの所有者ではないユーザーに権限をまったく持たせないようにする必要があると言えます。 これは、077umaskを使用して実行できます。

umask 077
touch restricted
ls -l restricted
-rw------- 1 demouser demouser 0 Jul 10 18:33 restricted

共有コンテンツを作成するプロセスがある場合は、作成するすべてのファイルとディレクトリに完全なアクセス許可を付与する必要があります。

umask 000
touch openfile
ls -l openfile
-rw-rw-rw- 1 demouser demouser    0 Jul 10 18:36 openfile

デフォルトでは、 umask に割り当てる設定は、現在のシェルセッションにのみ適用されます。 次回ログインすると、新しいファイルとディレクトリには、ディストリビューションで選択された元の設定が適用されます。

umask設定をセッション間で保持したい場合は、.bashrcファイルでumask設定を定義できます。

cd
nano .bashrc

umask値がすでに設定されているかどうかを検索します。 既存の値がある場合は変更します。 それ以外の場合は、ファイルの下部に目的のumask設定を含む行を追加します。

umask 022

ここでは、所有者に完全なアクセス許可を与え、グループ所有者と他のカテゴリの両方の書き込みアクセス許可を削除することを選択しました。 この設定を好みに合わせて調整し、次回ログインしたときに設定を利用できるようにします。

注意の言葉

アクセス許可を変更するときに覚えておくべき重要な点は、ファイルシステムの特定の領域と特定のプロセスが正しく実行されるために特定のアクセス許可が必要であることです。 権限が不十分だと、エラーが発生したり、アプリケーションが機能しなくなったりする可能性があります。

一方、あまりにも許容される設定は、セキュリティリスクになる可能性があります。

これらの理由から、不適切に構成された設定が原因で発生する可能性のある影響を認識していない限り、自分のホームディレクトリの外部でアクセス許可を調整しないことをお勧めします。

特にソフトウェアを手動で構成する場合に従うべきもう1つの適切なルールは、機能に影響を与えることなく、可能な限り最も制限の厳しいアクセス許可ポリシーを常に割り当てることです。

つまり、1人のユーザー(サービスなど)だけがファイルのグループにアクセスする必要がある場合、他のユーザーにコンテンツへの書き込みまたは読み取りアクセスを許可する必要はありません。 これは、パスワードがプレーンテキストで保存されているコンテキストで特に当てはまります。

グループ所有者の権限を正しく利用し、必要なユーザーを適切なグループに追加することで、権限をより完全に微調整できます。 ファイルへのアクセスが必要なすべてのユーザーがグループ所有者のメンバーである場合は、セキュリティを強化するために、他のアクセス許可カテゴリをロックダウンできます。

ジャスティン・エリングウッド