【コマンド】lsの-lオプションとは何か?ファイルやディレクトリのアクセス権限と所有者をまとめて確認・変更する方法(見方, ブロック数, d lとは何か)

windows-terminal-prograshi(プロぐらし)-kv Command
記事内に広告が含まれていることがあります。

コマンドラインにおいてファイル一覧を表示する「ls」コマンドの「-l」オプションを使うと、ファイルやディレクトリのアクセス権限と所有者を確認することができます。

ここでは「ls -l」で権限や所有者を変更する方法や、コマンドを実行したときに表示される内容についてまとめています。


ls -lコマンドとは何か?

ファイル名一覧を表示するlsコマンドにオプションの-lを付けたもです。

各ファイルの実行権限や所有者、ファイルサイズなど詳細な情報を表示してくれます。

補足

lsはlists segmentの略。ファイルの情報(list)をひとまとまりずつ(segment)表示するという意味。


ls -lの実行例

$ ls -l
total 11
-rw-r--r--   1 root  1796141739    7133  1 26 19:21 CHANGELOG.md
-rw-r--r--   1 root  1796141739    3780  1 26 19:21 README.md
drwxr-xr-x   7 root  1796141739     224  1 26 19:21 app
-rwxr-xr-x   1 root  1796141739    1686  1 26 19:21 artisan

total, -rw-r–r–, 1, root, 1796141739, 7133といった見慣れない表示が並びます。

以下でそれぞれの内容について解説しています。


ls -lで表示される内容一覧

「ls -l」を実行すると、以下の11個のデータが表示されます。

ls -lで表示される内容一覧

①ブロック数の合計値
②ファイルの種類
③アクセス権
④ハードリンク数
⑤所有者
⑥グループ
➆ファイルサイズ[bite]
⑧月
⑨日
⑩時刻
⑪ファイル名

表示される構造は以下のようになります。

total <①ブロック数の合計値>

<②ファイルの種類><③アクセス権> <④ハードリンク数> <⑤所有者> <⑥グループ> <➆ファイルサイズ[bite]> <⑧月> <⑨日> <⑩時刻> <⑪ファイル名>


ブロック数の合計値とは何か?

冒頭のtotalは、ディレクトリ内の全てのファイルのサイズをブロック化した合計値です。(※対象は直下のファイル/ディレクトリのみになります)

デフォルトでは 1024 バイトを1ブロックとしています。

・(参考)linuxjm LS

注意点

カウントされるのは直下のファイルのみのです。このため、ディレクトリのサイズが1024バイト以下だと、0 + 0 + ,,, = 0 というようにtotalが0になります。

$ ls -l
total 0
drwxr-xr-x  29 root  1796141739  928  1 22 15:23 email
drwxr-xr-x  28 root  1796141739  896  1 26 20:27 github
drwxr-xr-x  29 root  1796141739  928  1 26 12:02 login

各ファイルは上からそれぞれ、928bite, 896bite, 928biteとなっており、1024bite以下です。


ファイルの種類

各行の冒頭の1文字目はファイルの種類を表しています。

1文字目内容
ファイル
dディレクトリ
lシンボリックリンク

実例

-rw-r--r--   1 root  1796141739    3780  1 26 19:21 README.md
drwxr-xr-x   7 root  1796141739     224  1 26 19:21 app

上記の場合、1行目はファイル。2行目はディレクトリであることを意味しています。

シンボリックリンクとは何か?

シンボリックリンクとは、フォルダやファイルへのショートカットリンクのことです。
(例:デスクトップに置いたフォルダへのリンクなど)


アクセス権

冒頭2文字目からの9文字がアクセス権を指しています。3文字ずつの区切りで3つのセクションに別れています。

<(1)所有者><(2)グループ><(3)他人>


実例

rw-r--r--

(1)所有者:  rw-
(2)グループ: r--
(3)他人:  r--


権限の種類

r, w, xはそれぞれ与えられている権限の内容を表しています。

記号権限参考
権限なし
r読込みRead
w書込み & 削除Write
x実行(ファイルがシェルスクリプトやプログラムの場合)eXecute

例えば、rw-であれば、(r)読み(w)書きはできるが、(x)実行はできないという意味になります。


ハードリンク数

ハードリンクとは、別名を付けられるファイルのクローンのことです。

ハードリンクを削除するとリンク元も消えます。(シンボリックリンクの場合はリンク元が消えません)

実例

-rw-r--r--   1 root  1796141739    3780  1 26 19:21 README.md
drwxr-xr-x   7 root  1796141739     224  1 26 19:21 app

1行目はハードリンク数が「1」, 2行目はハードリンク数が「7」となっています。

所有者、グループ

5つ目の6つ目に表示されるデータは所有者とグループです。

<②ファイルの種類><③アクセス権> <④ハードリンク数> <⑤所有者> <⑥グループ> <➆ファイルサイズ[bite]> <⑧月> <⑨日> <⑩時刻> <⑪ファイル名>

所有者とはそのPCを管理しているルートユーザーのことです。通常「root」として表示されます。

他にもユーザーがいる場合、プロジェクト毎にユーザーをグループに分類し、グループ毎にファイルやディレクトリの権限を付与することができます。

その場合に、グループが表示されます。

なお、どのグループにも属さない人を他人といいます。

所有者

デフォルトではそのファイルやディレクトリの作成者の名前が入ります。後から変更することも可能です。(chownコマンド)

グループ

デフォルトでは所有者が属しているグループ名が入ります。
グループ名が指定されていない場合はGID(group ID)が数値で表示されます。

後から変更することも可能です。(chownコマンド、chgrpコマンド)


ファイルサイズ

ファイルサイズがバイトで表示されます。

実例

$ ls -l
total 10
-rw-r--r--   1 root  1796141739    7133  1 26 19:21 CHANGELOG.md
-rw-r--r--   1 root  1796141739    3780  1 26 19:21 README.md
drwxr-xr-x   7 root  1796141739     224  1 26 19:21 app

上記の場合から7133bite, 3780bite, 224biteとなります。


月日 時刻

⑧、⑨、⑩番目に表示される内容は「月」「日」「時刻」です。 

<②ファイルの種類><③アクセス権> <④ハードリンク数> <⑤所有者> <⑥グループ> <➆ファイルサイズ[bite]> <⑧月> <⑨日> <⑩時刻> <⑪ファイル名>


実例

$ ls -l
total 10
-rw-r--r--   1 root  1796141739    7133  1 26 19:21 CHANGELOG.md

上記であれば、「1 26 19:21」が「月 日 時刻」になります。


所有者の変更方法

所有者の変更はchownコマンドでできます。なお、chownはchange ownerの略です。

$ chown [オプション] <所有者名> <ファイル1 ファイル2,,,>

ディレクトリに対して実行する場合

対象がディレクトリの場合、「-R」オプションをつけることで、ディレクトリの中身の所有者も変更することができます。(Rはrecrusive 再帰的の略)


グループの変更方法

グループの変更はchgrpでできます。chgrpはchange groupの略です。

$ chgrp [オプション] <所有者名> <ファイル1 ファイル2,,,>

使えるオプションはchownと同じです。


所有者とグループを同時に変更する方法

chownコマンドでは、所有者とグループを同時に変更することもできます。

chown [オプション] <所有者:グループ> <ファイル1, ファイル
2,,>

ユーザー名の後ろに:グループ名をつけます。


アクセス権限の変更方法

アクセス権限の変更するには、chmodコマンドを使います。chmodはchange modeの略です。

指定方法は①シンボルモードと②数値(絶対モード)の2種類があります。

シンボルモード

使い方

r, w, xという記号を使う方法です。ユーザーを指定して、対象の権限を追加/削除/上書きを指定します。

chmod [ユーザー][記号][権限][ファイル]


▼権限の種類

記号権限
r読込み
w書込み & 削除
x実行

▼ユーザー指定

記号権限
u所有者
gグループ
oその他
aすべて(u,g,o)。省略も同じ

▼権限の付与

記号権限
+後述の権限を付与
後述の権限を削除
=後述の権限にする


シンボルモードを使った権限の変更方法実例

$ ls -l
total 0
-rw-r--r--  1 root  1796141739  0  1 27 10:33 hello.txt

#グループに全権限を付与
$ chmod g=rwx hello.txt

#確認
$ ls -l
total 0
-rw-rwxr--  1 root  1796141739  0  1 27 10:33 hello.txt


ユーザーを複数指定する場合

chmodコマンドを実行するときに、ユーザーを複数指定することもできます。

chmod [ユーザー][記号][権限],[ユーザー][記号][権限][ファイル]

注意点

ユーザーごとにカンマでつなぎます。カンマの後にスペースを入れてはいけません。


▼実例

$ ls -l
total 0
-rw-rwxr--  1 root  1796141739  0  1 27 10:33 hello.txt

#権限付与(または削除)
$ chmod u+x,g-x,o=rw hello.txt

#確認
$ ls -l
total 0
-rwxrw-rw-  1 root  1796141739  0  1 27 10:33 hello.txt


絶対モード(数値)

使い方

r, w, xというシンボル以外に数値で指定することもできます。

chmod <所有者><グループ><他人> <ファイル1, ファイル2,,,>

例えば、$ chmod 744 hoge.txtのように記述します。

3桁の数字で、1桁目が所有者、2桁目がグループ、3桁目が他人に与える権限になります。

各数値が意味する権限は以下のようになっています。

付与権限01234567
内容–x-w--wxr–r-xrw-rwx
(補足)権限なし実行書込み2 + 1読込み4 + 14 + 24 + 2 + 1

–xが1、-w-が2、r–が4になっており組み合わせの合計値で指定します。


使用例

$ chmod 740 ファイル名
 ・所有者:すべて
 ・グループ:読み取りのみ
 ・その他:なし


注意点:2桁や1桁指定はできない

数値で指定するときは3桁それぞれを指定する必要があります。

▼2桁で指定だと所有者の権限がなくなる

$ ls -l
-r-x-wx-wx  1 root  1796141739  0  1 27 10:33 hello.txt

#権限変更
$ chmod 33 hello.txt

#確認
$ ls -l
-----wx-wx  1 root  1796141739  0  1 27 10:33 hello.txt



▼1桁だと所有者とグループの権限がなくなる

$ ls -l
-----wx-wx  1 root  1796141739  0  1 27 10:33 hello.txt

#権限変更
$ chmod 7 hello.txt

#確認
$ ls -l
-------rwx  1 s01386  1796141739  0  1 27 10:33 hello.txt


(参考)ls -lと類似のオプション

lsコマンドには「-l」と似た表示結果になるオプションが複数存在しています。

オプション-lとの違い
-oグループを表示しない
-g所有者を表示しない
-n所有者とグループを数値(UIDとGID)で表示


実例

$ ls -l
total 0
-rwxrw-r--  1 root  groop  0  1 27 10:33 hello.txt

$ ls -n
total 0
-rwxrw-r--  1 1058389726  1796141739  0  1 27 10:33 hello.txt

$ ls -o
total 0
-rwxrw-r--  1 root  0  1 27 10:33 hello.txt

$ ls -g
total 0
-rwxrw-r--  1 groop  0  1 27 10:33 hello.txt


タイトルとURLをコピーしました