この記事について
この記事の中では以下について記載しております。
- Linux上でのファイルやディレクトリの権限管理を行うための基本的な考え方
- ユーザ・グループ
- 3つの操作(読み・書き・実行)に対する権限設定
- 権限の状態を確認するための
ls -l
コマンド表示結果の見方-
-rwxr--r-- 1 textusr testgrp 1260 Aug 1 128 hoge.txt
の意味が分かるようになる
-
- 権限管理を行う際に使用するchmodコマンドの使い方
-
chmod 765 hoge.txt
の意味が分かるようになる
-
対象読者
- Linuxを使用して管理者として開発に関わる方
- Linuxにおける権限管理の基本を学びたい方
環境
utunbu 20.04.1
前提知識
ユーザ・グループ
各個人が保有するPCのOSとして使用されることの多い「Windows」「macOS」とは異なり、LinuxはサーバOSとして用いられることが多いため、同じLinuxのシステム上で複数人で作業を行うことが多くなります。
そこで、誰が何の操作を行えるようにするのかを設定するために、ユーザ・グループといった設定を行うことが重要となります。
そのユーザやグループは以下のように表現できます。
- ユーザ…Linuxにログインして、作業を行うためのアカウント
- グループ…複数のユーザをまとめて管理するためのもの
参考:全体像がすぐにわかる!Linuxグループの設定方法まとめ
例:
- ユーザ…太郎君、花子さん
- グループ…本社、営業部(太郎君や花子さんは本社、営業部のどちらか一方もしくは両方に属し得る)
ユーザ・グループの具体的な設定方法はこちらより確認できます。
3つの操作(読み・書き・実行)に対する権限設定
Linux上では各ファイル・ディレクトリに対して、以下3つの操作それぞれに権限を設定することができます。
- 読み込み…ファイルの中身の表示、ディレクトリへの移動(
r
…read) - 書き込み…ファイルの中身の変更・削除、ディレクトリ内でのファイル追加・削除など(
w
…write) - 実行…(ファイルが実行可能である場合に)ファイルに記述されたプログラムの実行(
x
…execute)
読み込み・書き込み・実行はそれぞれ、 r
・ w
・ x
で表現されます。
権限の確認(ls -l
コマンド)
コマンドの説明
-
ls
…現在のディレクトリ直下のファイルやディレクトリの表示を行う
(Windowsコマンドで言うdir
コマンド) -
ls -l
…権限設定も併せて現在のディレクトリ直下のファイルやディレクトリの表示を行う
※-l
のl
はlongを表す=長い(詳細な)情報の表示を表します。
例:
このようなディレクトリ構造をしたtestディレクトリが存在する
test
┣hoge.txt
┣index.html
┗testchild
taro
ユーザは head
グループを主グループとする
taro@example:~$ groups taro
taro : head
- testディレクトリ上で
ls
を実行
taro@example:~$ ls
hoge.txt index.html testchild
- testディレクトリ上で
ls -l
を実行
taro@example:~$ ls -l
total 4
-rw-r----- 1 taro head 0 Jul 23 15:33 hoge.txt
-rw-r--r-- 1 taro head 0 Jul 23 15:33 index.html
drwxr-xr-x 2 taro head 4096 Jul 23 15:33 testchild
ls -l
コマンド表示結果の見方
-
赤線…形式(ファイルなのか、ディレクトリなのかなど)
- ファイル…
-
- ディレクトリ…
d
- シンボリックリンク…
l
- ファイル…
-
青線(1つ目)…ファイルなどを作成したユーザ(ここで言う
taro
)が持っている権限- 3つの文字が並んでおり、左から
読み込み(read)・書き込み(write)・実行(execute)
を表す -
-
は、権限がないことを表す - 例:
rw-
=読み込み(read)・書き込み(write)
の権限は持っているが、実行(execute)
の権限は持っていない
- 3つの文字が並んでおり、左から
-
黄線(1つ目)…ファイルなどを作成したユーザが属する主グループ(ここで言う
head
)が持っている権限
例:hanako
という別ユーザがhead
グループに属している場合は、hanako
の権限もr--
(読み込みのみ可能)となります。 -
緑線…その他ユーザが持っている権限
画像の例では、その他ユーザの権限は---
であるため、読み込み・書き込み・実行の全てが出来ません。 -
緑線横の数字…リンクされている数、サブディレクトリの数
参考:【一通り理解】Linuxパーミッションの基本とその設定方法 -
青線(2つ目)…ファイルやディレクトリを作成したユーザ
-
黄線(2つ目)…ファイルやディレクトリを作成したユーザが属する主グループ
-
日時の前の数字…ファイルやディレクトリのサイズを表す(空のファイルであればサイズ0となる)
-
日時…ファイルやディレクトリの最終更新日時
-
ファイル名
権限の設定(chmod
コマンド)
chmod
の使い方その1
以下3者それぞれに対して権限設定を記述します。
-
u
…user:作成したユーザの権限 -
g
…group:作成したユーザが属するグループの権限 -
o
…other:その他ユーザの権限
taro@example:~$ chmod u=rwx,g=rw,o=rx hoge.txt
設定した権限の確認
taro@example:~$ ls -l
total 4
-rwxrw-r-x 1 taro head 4 Jul 23 16:19 hoge.txt
chmod
の使い方その2
権限の状態を数値に置き換えて権限設定を記述します。
数値変換の手順
- 以下のように各権限を2の累乗で表現(権限を付けないときは「0」とする)
- 読み込み(
r
)…2^2(=4) - 書き込み(
w
)…2^1(=2) - 実行(
x
)…2^0(=1)
- 読み込み(
- 読み込み・書き込み・実行の各数値を合計する
- 1・2の数値変換を「作成ユーザの権限」「作成ユーザの属するグループの権限」「その他ユーザの権限」について行う
設定したい形
の権限を設定するための数値変換の方法を記述します。
- 作成したユーザの権限:7
→「読み込み(2^2=4)・書き込み(2^1=2)・実行(2^0=1)」の合計値 - 作成ユーザの属するグループの権限:6
→「読み込み(2^2=4)・書き込み(2^1=2)・実行(0)」の合計値 - その他ユーザの権限:5
→「読み込み(2^2=4)・書き込み(0)・実行(2^0=1)」の合計値
taro@example:~$ chmod 765 hoge.txt
設定した権限の確認
taro@example:~$ ls -l
total 4
-rwxrw-r-x 1 taro head 4 Jul 23 16:19 hoge.txt
hanako
ユーザが、 taro
ユーザと同じ head
グループに属する時、hanako
ユーザへの hoge.txt
に対する権限設定は以下となる (rw-
が効いている)
- 読み込み・書き込みは行える
- 実行は行えない
ubuntu
ユーザが、head
グループに属していない時、 ubuntu
ユーザへのhoge.txt
に対する権限設定は以下となる (r-x
が効いている)
-
読み込み・実行は行える
-
書き込みは行えない
-
head
グループに属していないユーザubuntu
でファイル編集しようとするとエラーとなる
testuser@example:~$ su ubuntu ubuntu@example:/home/testuser$ vi hoge.txt (hoge.txtファイルを編集後、「:wq」を入力) E45: 'readonly' option is set (add ! to override)
-
head
グループに属していないユーザubuntu
でファイル削除しようとするとエラーとなる
ubuntu@example:/home/testuser$ rm hoge.txt rm: remove write-protected regular file 'hoge.txt'? y rm: cannot remove 'hoge.txt': Permission denied
-