0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Linuxコマンド - ls -lとchmodによってファイルやディレクトリの権限管理を行う

Last updated at Posted at 2021-07-23

この記事について

この記事の中では以下について記載しております。

  • 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のシステム上で複数人で作業を行うことが多くなります。
そこで、誰が何の操作を行えるようにするのかを設定するために、ユーザ・グループといった設定を行うことが重要となります。
そのユーザやグループは以下のように表現できます。

例:

  • ユーザ…太郎君、花子さん
  • グループ…本社、営業部(太郎君や花子さんは本社、営業部のどちらか一方もしくは両方に属し得る)
    ユーザ・グループの具体的な設定方法はこちらより確認できます。

3つの操作(読み・書き・実行)に対する権限設定

Linux上では各ファイル・ディレクトリに対して、以下3つの操作それぞれに権限を設定することができます。

  • 読み込み…ファイルの中身の表示、ディレクトリへの移動( r …read)
  • 書き込み…ファイルの中身の変更・削除、ディレクトリ内でのファイル追加・削除など( w …write)
  • 実行…(ファイルが実行可能である場合に)ファイルに記述されたプログラムの実行( x …execute)

読み込み・書き込み・実行はそれぞれ、 rwx で表現されます。

権限の確認(ls -l コマンド)

コマンドの説明

  • ls …現在のディレクトリ直下のファイルやディレクトリの表示を行う
    (Windowsコマンドで言う dir コマンド)
  • ls -l権限設定も併せて現在のディレクトリ直下のファイルやディレクトリの表示を行う
    -ll は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 コマンド表示結果の見方

以下の画像の沿って説明します。
image.png

  1. 赤線…形式(ファイルなのか、ディレクトリなのかなど)

    • ファイル… -
    • ディレクトリ… d
    • シンボリックリンク… l
  2. 青線(1つ目)…ファイルなどを作成したユーザ(ここで言う taro)が持っている権限

    • 3つの文字が並んでおり、左から 読み込み(read)・書き込み(write)・実行(execute) を表す
    • - は、権限がないことを表す
    • 例: rw- = 読み込み(read)・書き込み(write) の権限は持っているが、 実行(execute) の権限は持っていない
  3. 黄線(1つ目)…ファイルなどを作成したユーザが属する主グループ(ここで言う head)が持っている権限
    例:hanako という別ユーザが head グループに属している場合は、 hanako の権限も r-- (読み込みのみ可能)となります。

  4. 緑線…その他ユーザが持っている権限
    画像の例では、その他ユーザの権限は --- であるため、読み込み・書き込み・実行の全てが出来ません。

  5. 緑線横の数字…リンクされている数、サブディレクトリの数
    参考:【一通り理解】Linuxパーミッションの基本とその設定方法

  6. 青線(2つ目)…ファイルやディレクトリを作成したユーザ

  7. 黄線(2つ目)…ファイルやディレクトリを作成したユーザが属する主グループ

  8. 日時の前の数字…ファイルやディレクトリのサイズを表す(空のファイルであればサイズ0となる)

  9. 日時…ファイルやディレクトリの最終更新日時

  10. ファイル名

権限の設定(chmod コマンド)

設定したい形
image.png

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

権限の状態を数値に置き換えて権限設定を記述します。

数値変換の手順

  1. 以下のように各権限を2の累乗で表現(権限を付けないときは「0」とする)
    • 読み込み(r)…2^2(=4)
    • 書き込み(w)…2^1(=2)
    • 実行(x)…2^0(=1)
  2. 読み込み・書き込み・実行の各数値を合計する
  3. 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
    

参考

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?