Linux アクセス権とは、開発の初期段階で皆が深く理解するようになる概念です。システムを効果的に管理するためには、スクリプトを実行し、ファイルを編集し、プロセスを実行する必要があります。しかし、アクセス権拒否のエラーが表示された場合はどうすればよいでしょうか? このメッセージが表示される原因をご存知ですか?原因が分かる場合、解決策を実装する方法はご存知ですか?

ここではまず、アクセス権を計算するさまざまな方法について簡単に説明し、その後、Linuxにおける特殊アクセス権について解説していきます。chmod コマンドについて詳しく知りたい方は、Sudoer Shashank Hegde による記事「Linux permissions: An introduction to chmod」をご覧ください。

TL;DR:アクセス権を割り当てる方法は主に 2 つあります。

[ いますぐダウンロード:高度な Linux コマンドチートシート ]

記号法

記号法では次の構文を使用します。

[tcarrigan@server ~]$ chmod WhoWhatWhich file | directory

以下を意味します。

  • Who - ID を表します:u、g、o、a (ユーザー、グループ、その他、すべて)
  • What - アクションを表します:+、-、= (追加、削除、正確な設定)
  • Which - アクセスレベルを表します:r、w、x (読み取り、書き込み、実行)

この例として、ユーザーグループに対して test.txt という名前のファイルに読み取り書き込みのアクセス権を追加したい場合、次のコマンドを使用します。

[tcarrigan@server ~]$ chmod ug+rw test.txt

正直、これは私が好きな権限設定の方法ではありません。この方法に関する詳細情報を知りたい場合は、検索エンジンをご利用ください。

数値法

数値法は、私の経験上、権限を学習し実践する最も優れた方法です。これは次の構文に基づいています。

[tcarrigan@server ~]$ chmod ### file | directory

左から右の記号 # はアクセスレベルを表します。アクセスレベルには、ユーザー、グループ、その他という 3 つのレベルがあります。各数字が何であるかを判断するために、以下を使用します。

  • 0から開始
  • 読み取り権限を設定する場合は 4 を加算
  • 書き込み権限を設定する場合は 2 を加算
  • 実行権限を設定する場合は 1 を加算

これはアクセスレベルごとに計算されます。このアクセス権の例を解釈してみましょう。

-rw-r-x---

この権限は 650 と表されます。どのようにしてこの数値となったのでしょうか?

  • ユーザーのアクセス権は:rw- または 4+2=6
  • グループのアクセス権は:r-x または 4+1=5
  • その他のアクセス権は:--- または 0

これをコマンド構文に入れると次のようになります。

[tcarrigan@server ~]$ chmod 650 test.txt

Linux での権限計算の基本を理解したところで、OS に含まれる特別な権限について見てみましょう。

[ その他の関連情報:An introduction to Linux Access Control Lists (ACLs) ]

特殊アクセス権の説明

特殊アクセス権は、ユーザーグループその他に加えて 4 番目のアクセスレベルを構成します。名前が示すとおり、特殊アクセス権により、標準アクセス権セットに対して追加の権限が許可されます。前述の各アクセスレベルには特殊アクセス権オプションがあります。Set UID から順にそれぞれを個別に見ていきましょう。

ユーザー + s (pecial)

一般的に SUID と呼ばれるユーザーアクセスレベルの特殊アクセス権は、単一の機能を有します。SUID が付与されたファイルは、コマンドを実行するユーザーに関係なく、常にそのファイルの所有者ユーザーとして実行されます。ファイル所有者に実行権限がない場合は、ここで大文字の S を使用します。

実際に理解するために、/usr/bin/passwd コマンドを見てみましょう。このコマンドには、デフォルトで SUID 権限が設定されています。

[tcarrigan@server ~]$ ls -l /usr/bin/passwd 
-rwsr-xr-x. 1 root root 33544 Dec 13  2019 /usr/bin/passwd

ユーザーに対する実行権限を示す通常の x の代わりに s が入ります。

グループ + s (pecial)

一般的に SGID と呼ばれるこの特殊アクセス権には、複数の機能があります。

  • ファイルに設定すると、そのファイルを所有するグループとして実行できるようになります (SUIDと同様)。
  • ディレクトリに設定すると、ディレクトリ内に作成されたすべてのファイルのグループ所有権がディレクトリ所有者のグループ所有権に設定されます。
[tcarrigan@server article_submissions]$ ls -l 
total 0
drwxrws---. 2 tcarrigan tcarrigan  69 Apr  7 11:31 my_articles

このアクセス権セットは、通常はグループに対して実行権限を示す x の代わりに小文字の s で示されます。これは、グループのメンバー間の共同作業で頻繁に使用されるディレクトリにおいて特に有用です。グループのどのメンバーも新しいファイルにアクセスできるからです。これはファイルの実行にも当てはまります。SGID は適切に使用すると非常に強力です。

SUID の場合で前述したように、所有グループに実行権限がない場合は、大文字の S が使用されます。

その他 + t (sticky)

最後の特殊アクセス権は「スティッキービット」と呼ばれています。この権限は個々のファイルには影響しません。ただし、ディレクトリレベルではファイルの削除を制限します。ファイルの所有者 (およびルート) のみがそのディレクトリ内のファイルを削除できます。一般的な例としては、/tmp ディレクトリが挙げられます。

[tcarrigan@server article_submissions]$ ls -ld /tmp/
drwxrwxrwt. 15 root root 4096 Sep 22 15:28 /tmp/

このアクセス権セットは、通常は実行権限を示す x の代わりに小文字の t で示されます。

特殊アクセス権の設定

ファイルまたはディレクトリに特殊アクセス権を設定するには、上記の標準アクセス権で説明した 2 つの方法 (記号または数値) のいずれかを利用できます。

ディレクトリ community_contentSGID を設定するとします。

記号法を使用してこれを実行するには、以下を行います。

[tcarrigan@server article_submissions]$ chmod g+s community_content/

数値法を使用する場合、chmod コマンドで 4 番目の前述の数字を指定する必要があります。使用される数字は、標準アクセス権の数字と同様に計算されます。

  • 0から開始
  • SUID = 4
  • SGID = 2
  • Sticky = 1

構文:

[tcarrigan@server ~]$ chmod X### file | directory

X が特殊アクセス権を示す数字になります。

数値法を使用して community_contentSGID を設定するコマンドは次のとおりです。

[tcarrigan@server article_submissions]$ chmod 2770 community_content/
[tcarrigan@server article_submissions]$ ls -ld community_content/
drwxrws---. 2 tcarrigan tcarrigan 113 Apr  7 11:32 community_content/

[ Linux にアプリケーションをインストールするためのガイドを入手する ]

まとめ

最後に、効果的な Linux 管理者になるには、アクセス権は不可欠な分野です。chmod コマンドを使用してアクセス権を設定するには、記号法と数値法の 2 つがあります。この記事では両方の方法に必要な構文と計算を検証しました。また、特殊アクセス権とそれらがシステム内で果たす役割についても検討しました。アクセス権とその基礎となる概念を理解したことで、作業の妨げとなる煩わしいアクセス権拒否のエラーを解決できるようになります。


執筆者紹介

Tyler is the Sr. Community Manager at Enable Sysadmin, a submarine veteran, and an all-round tech enthusiast! He was first introduced to Red Hat in 2012 by way of a Red Hat Enterprise Linux-based combat system inside the USS Georgia Missile Control Center. Now that he has surfaced, he lives with his wife and son near Raleigh, where he worked as a data storage engineer before finding his way to the Red Hat team. He has written numerous technical documents, from military procedures to knowledgebase articles and even some training curricula. In his free time, he blends a passion for hiking, climbing, and bushcraft with video games and computer building. He is loves to read and enjoy a scotch or bourbon. Find him on Twitter or on LinkedIn.

UI_Icon-Red_Hat-Close-A-Black-RGB

チャンネル別に見る

automation icon

自動化

テクノロジー、チームおよび環境に関する IT 自動化の最新情報

AI icon

AI (人工知能)

お客様が AI ワークロードをどこでも自由に実行することを可能にするプラットフォームについてのアップデート

open hybrid cloud icon

オープン・ハイブリッドクラウド

ハイブリッドクラウドで柔軟に未来を築く方法をご確認ください。

security icon

セキュリティ

環境やテクノロジー全体に及ぶリスクを軽減する方法に関する最新情報

edge icon

エッジコンピューティング

エッジでの運用を単純化するプラットフォームのアップデート

Infrastructure icon

インフラストラクチャ

世界有数のエンタープライズ向け Linux プラットフォームの最新情報

application development icon

アプリケーション

アプリケーションの最も困難な課題に対する Red Hat ソリューションの詳細

Virtualization icon

仮想化

オンプレミスまたは複数クラウドでのワークロードに対応するエンタープライズ仮想化の将来についてご覧ください