Skip to main content

Linuxの権限とアクセス制御リストを設定するために知っておくべきこと

December 18, 2024

本サイト上のコンテンツは、参照目的だけのために、英語の原本から翻訳されたものです。また、本サイト上のコンテンツの一部は機械翻訳されたものです。日本語版と英語版の間に何らかの齟齬がある場合には、英語版が優先されます。
当社は改善のためのあらゆる努力を行いますが、翻訳の正確性及び信頼性は保証せず、当社に故意または重大な過失がある場合を除き、不正確性又は遺漏により生じる損失又は損害に責任を負わないものとします。

Linux の権限は、管理が比較的簡単です。アクセス権を割り当てるには、3 つのレベルのアクセスと 3 つの ID があります。この記事では、標準の Linux アクセス許可とアクセス制御リスト (ACL) を管理するために必要なコマンドと構文をまとめます。

3 つのアクセス レベルは次のとおりです。

  • 読み取り (r)
  • 書き込み (w)
  • 実行 (x)

3 つの ID は次のとおりです。

  • ユーザー/所有者 (u)
  • グループ(g)
  • その他すべて (o)

アクセスレベルは、ファイルとディレクトリのどちらに適用するかによって動作が異なることに注意してください。主な違いの1つは、実行権限はファイル(スクリプトなど)を実行するのに対し、cd コマンド を介してディレクトリに変更できることです。

chmod コマンドを使用する

chmod コマンドは、標準の権限を操作します。構文は、絶対モードとシンボリックモードのどちらを使用しているかによって異なりますが、一般的な形式は次のとおりです。

chmod {アクセスレベル} {リソース}

システムの構成によっては、sudo を使用してファイルのアクセス許可を設定する必要がある場合があります。

次の例では、764 は {access-level} で、/opt/projects は {resource} です。

$ chmod 764 /オプション/プロジェクト

blog_set-linux-permissions-and-access-control-lists_1.jpg
 

chmod コマンドは、絶対モードとシンボリック・モードの 2 つの異なるタイプの入力を受け付けます。Linux ユーザーにとって、両方のタイプを理解することが重要です。

絶対モードを使用する

絶対モードは、各アクセスレベルの数値に依存します。3 桁の数字は標準のアクセス許可を定義し、数字の位置は 3 つの ID のそれぞれに関連しています。これは実際よりもはるかに混乱しているように聞こえます。

各アクセスレベルの値を次に示します。

  • 読み取り = 4
  • 書き込み = 2
  • 実行 = 1

数値を合計して、最終的なアクセスレベルになります。たとえば、読み取り (4) と書き込み (2) のアクセス権を付与するには、結果 6 に 4+2 を追加します。ID に 6 がある場合、読み取りおよび書き込みアクセス権があります。読み取り (4) と実行 (1) の ID のアクセスレベルは 5 (4+1) です。

各 ID には、アクセス許可構文内の位置があります。左端の位置はユーザー/所有者 (u) に適用され、中央の数字はグループ (g) に適用されます。右端の位置は他の人(o)のためです。

各桁の位置は次のとおりです。

羽後

では、これはどのように適用されるのでしょうか?絶対モードでは、管理者が必要な権限を定義する必要があります。既存の権限には注意を払いません。むしろ、以前に存在していたアクセスレベルに関係なく、絶対設定または最終設定が適用されます。

たとえば、管理者は、ユーザーには rwx、グループには r-x を持ち、他のユーザーにはアクセス権を持たせません。rwx アクセスは 4+2+1 または 7 です。グループの r-x アクセスは 4+1 または 5 です。最後に、他のユーザーはアクセスできないか、0 です。だから絶対設定は750だ。/opt/projects ディレクトリーにこのアクセスを構成するには、次のように入力します。

$ chmod 750 /opt/projects

blog_set-linux-permissions-and-access-control-lists_2.jpg

同様に、ユーザーに読み取りと書き込み、グループ読み取り、および他のユーザーにtest.txtファイルの読み取りを許可するには、次のように入力します。

$ chmod 644 test.txt

blog_set-linux-permissions-and-access-control-lists_3.jpg

あなたはそれができますか?

Q1: ユーザの読み取りと書き込み、グループの読み取り、および他のすべてのユーザーにアクセス権を付与する絶対モード値は何ですか。

答えは記事の最後にあります。

シンボリックモードを使用する

数字を扱うのが好きではなく、絶対モードがわかりにくいと感じる人もいます。また、1 つのアクセス レベルを変更するだけでよく、3 つの ID すべてに毎回アクセス許可を指定したくない場合があります。このような状況では、シンボリックモードが推奨される場合があります。シンボリック モードの課題は、操作したくない既存の権限を考慮することです。

シンボリックモードは、同じ 3 つの ID (ユーザー、グループ、その他) と同じ 3 つのアクセスレベル (読み取り、書き込み、実行) に依存します。ID とアクセス レベルを表すために文字を使用し、数学演算子を使用してアクセス許可 (+、-、=) を調整します。アクセス許可は、ID ごとに調整できます。chmod コマンドは、これらの省略形を認識します。

他のユーザー (o) の test.txt ファイルに実行 (x) アクセス権を追加するには、次のように入力します。

$ chmod o+x test.txt

blog_set-linux-permissions-and-access-control-lists_4.jpg
 

ユーザーとグループのアクセス レベルは変更されません。他のユーザーに対するその他の権限は引き続き存在します。実行権限は、既存のものに追加されます。

シンボリック モードでは、複数の ID に対して複数のアクセス レベルを同時に調整できます。グループ (g) と他のグループ (o) の両方に読み取り (r) と実行 (x) の両方を test.txt に付与するには、次のように入力します。

$ chmod go+rx test.txt

blog_set-linux-permissions-and-access-control-lists_5.jpg

 

既存のアクセス・レベルの権限を追加または削除することを覚えておいてください。ユーザーがすでに読み取り (r) を持っていて、書き込み (w) も許可する場合は、書き込み (+w) を追加します。したがって、望ましい結果を計算するには、まず既存のレベルと、アクセスを追加または削除する必要があるかどうか (またはその両方) を決定する必要があります。

ls -l コマンドを入力し、次の既存の権限が表示されるとします。

rwxrw--- test.txt

blog_set-linux-permissions-and-access-control-lists_6.jpg

 

最初または左端の 3 桁(上の赤丸で囲まれた)は、ユーザー/所有者のアクセス (この例では rwx) を表します。中央の 3 桁 (青い丸で囲まれた) は、グループ (この例では rw-) を表します。最後の 3 つ (黄色の丸で囲まれた) は、他のすべてのものに適用されます (この場合は、アクセス---またはアクセスできません)。

他の (o) に読み取りを許可するには、読み取り (+a) を追加する必要があります。ただし、ユーザー (u) の実行を削除するには、x アクセス許可 (-x) を差し引く必要があります。

調整は次のようになります (これにはいくつかの方法があります)。

$ chmod o+r test.txt

$ chmod u-x test.txt

blog_set-linux-permissions-and-access-control-lists_7.jpg

 

あなたはそれができますか?

Q2: test.txtファイルの権限は現在 rwxrw-rw- です。ユーザーの読み取りと書き込み、グループの読み取り、およびその他すべてのユーザーにアクセス権を付与するシンボリック・モード・コマンドは何ですか?

答えは記事の最後にあります。

ACL の設定

標準の Linux 権限の課題の 1 つは、リソースに関連付けられているユーザーとグループが 1 人だけであることです。標準権限では、user1 rwx と user2 r を割り当てることはできません--.同様に、group1 rw- と group2 r を割り当てることはできません--.

ただし、アクセス制御リスト (ACL) は、複数の ID に複数のレベルのアクセスを割り当てることができるファイルシステム機能です。ACL は chmod コマンドでは構成されません。代わりに、setfacl コマンドを使用してアクセス制御リストを設定し、getfacl コマンドを使用して現在の ACL を表示します。ACL は標準権限を認識するため、これらの設定が基礎となり、追加のアクセスレベルが定義されます。

アクセス制御リストを編集する前に、getfacl コマンドを使用して 現在の設定を表示します。

blog_set-linux-permissions-and-access-control-lists_8.jpg

ACL を設定する構文は、chmod よりも少し複雑です。

setfacl -option {identity:access} {resource}

group1 が標準権限を介してすでにアクセス権を持っていると仮定して、group2 rw を test.txt に付与するには、次のように入力します。

$ setfacl -m g:group2:rw test.txt

blog_set-linux-permissions-and-access-control-lists_9.jpg

 

user2 r-- を test.txt に付与するには (user1 が標準権限に基づいてアクセス権を持っていると仮定します)、次のコマンドを実行します。

$ setfacl -m u:user2:r test.txt

blog_set-linux-permissions-and-access-control-lists_10.jpg

 

注: -m オプションは modify の略です。

-x オプションを使用してエントリを削除します。test.txt ファイルの group2 ACL 設定を削除するには、次のように入力します。

$ setfacl -x g:group2 test.txt

blog_set-linux-permissions-and-access-control-lists_11.jpg
 

あなたはそれができますか?

Q3: ユーザー2にファイルtest.txtへの読み取りと書き込みを許可するACLコマンドは何ですか?

答えは記事の最後にあります。

CompTIA Linux+で必要なスキルを学ぶ

基本的な権限の重要性は、どれだけ強調してもしすぎることはありません。SELinux と併用すると、適切な更新習慣、その他の強化手法、および権限がアクセスの脅威を軽減するのに役立ちます。Linux の標準アクセス許可は 3 つの ID に適用され、3 つのレベルのアクセスを提供します。標準権限は、アクセス制御リストで補完できます。コマンドは単純ですが (主に chmod と setfacl)、権限を効率的に管理するには、絶対モードとシンボリック モードに精通している必要があります。

CompTIA Linux+で これらのスキル(およびその他)を学びましょう。CompTIA Linux+は、中級レベルのIT認定であり、採用担当者が要求する最新の基礎スキルをカバーする唯一の仕事に焦点を当てたLinux認定です。CompTIA Linux+は、Linuxシステムをサポートする初期のキャリアに必要なコンピテンシーを検証します。

回答を確認する

Q1: 値 640 を使用して、ユーザーの読み取りと書き込み、グループの読み取り、その他すべてのユーザーにアクセス権を付与します。

Q2: test.txtファイルの権限が現在 rwxrw-rw- である場合、ユーザーの読み取りと書き込み、グループの読み取り、その他すべてのアクセス権を設定するには、次のように入力します。

$ chmod u-x test.txt

$ chmod g-w test.txt

$ chmod o-rw test.txt

繰り返しになりますが、より高速な方法もありますが、この例はロジックを示しています。

Q3: ユーザー2にファイルtest.txtへの読み取りと書き込みを許可するACLコマンドは次のとおりです。

$ setfacl -m u:user2:rw test.txt

始める準備はできましたか? CompTIA Linux+の詳細