【Linux】パーミッションの仕組み・設定

ここではパーミッションの仕組みを説明したいと思います。
パーミッションの仕組みを理解できればファイルの権限や管理、管理者でのコマンドの実行ができます。
また下記のなんだこれ。と思わせるようなコマンドも理解できます!

$ chmod 777 test.txt


オーナーとグループについて

まずはファイルのオーナーとグループについて理解していきたいと思います! Linuxでファイルのオーナーは下記の意味合いを持ちます。

オーナー: ファイルの所有者
グループ: ファイルの所有グループ

ユーザーをグループに所属させ権限を与えることによって、複数ユーザーの権限を一括で管理できるようになります。
下記のコマンドでファイルのオーナーとグループが確認ができます。

$ ls -l 確認したいファイル
>> -rw-r--r--@ 1 test  staff  755  5 27 23:34 XXX.txt

オーナー: test
グループ: staff


パーミッションの確認

パーミッションとは、、
ファイルやディレクトリを誰がどのように操作できるかを定めたものになります
確認コマンドはオーナーとグループを確認したコマンドと同じになります。

$ ls -l 確認したいファイル
>> -rw-r--r--@ 1 test  staff  755  5 27 23:34 XXX.txt

ファイルタイプ:  -
オーナーのパーミッション: rw-
グループのパーミッション:  r--
その他のユーザーのパーミッション: r--

記号の意味

記号 内容
r read (読み取り)
w write (書き込み)
x execute (実行)

上記のコマンド結果の場合だと下記になります

記号 読み取り 書き込み 実行
オーナー ⚪︎ ⚪︎ ×
グループ所属のユーザー ⚪︎ × ×
その他ユーザー ⚪︎ × ×

余談なのですがファイルタイプには色々あり、こんな物もあるのか〜程度で覚えておくといいかもしれません。

ファイルタイプ 内容
- 通常ファイル(テキスト, バイナリーファイルなど)
d ディレクト
b ブロックデバイス
c キャラクタデバイス
p パイプ
s ソケット

ブロックデバイス: 主にストレージデバイス(HDD、SSDなど)へのアクセスを表現する特殊なファイル
キャラクターデバイス: 主にキーボードやマウスなどの入力デバイスや、プリンタなどの出力デバイスへのアクセスを表現する特殊なファイル
パイプ: 一つのプログラムから別のプログラムへデータを渡すための通信路を表現する特殊なファイル
ソケット: ネットワーク通信やシステム内部のプロセス間通信(IPC)に使われる特殊なファイル

パーミッションの設定

それではファイルやディレクトリーのパーミッションを設定、設定変更をみていきましょう。

$ chmod [ugoa] [+-=] [rwx] ファイル名
記号 内容
u 所有者の権限
g グループの権限
o その他ユーザーの権限
a 全ユーザーの権限
記号 内容
+ 権限の追加
- 権限の削除
= 記述した権限にする

ちょっとわかりづらいですが、chmodコマンドは数値でも指定できるので紹介します。

chmod 8進数の数値 ファイル名
パーミッション 数値
r 4
w 2
x 1

下記でパーミッションを数値に変換した場合は、

>> -rw-r--r--
          ↓
>> chmod 0+4+2 4 4
          ↓
>> chmod 644 ファイル名


管理者権限を持つ特別なユーザー(スーパーユーザー)
sudo コマンド


以上で、パーミッションの確認、設定ができるようになります。
是非理解して使ってみましょう!