Linuxコマンドを勉強~パーミッション、ls、lsattr、file~

ls

ファイルやディレクトリの情報を確認するには、lsコマンドを使用します。

lsコマンドとだけ実行すると、カレントディレクトリ内にあるファイル、ディレクトリ名のみの一覧が表示されます。

ファイルのもっと詳細な情報を表示するには、-lオプションを付けます。

「ls -la」とすると、.から始まるファイルも表示します。

“.”はカレントディレクトリ、”..”は1つ上のディレクトリを示します。これらを表示しない場合は、-Aオプションを付けます。

-Fオプションを付けると、ファイルタイプの識別子を付けます。ディレクトリの後ろには”/”、シンボリックリンクの後ろには”@”、実行形式ファイルの後ろには”*”が付きます。ただし、シンボリックリンクは-lオプションと同時に使用するときは「リンク名 -> リンク先」となります。

ファイル名を指定する場合は、

とします。

また、ディレクトリ名を指定するとそのディレクトリの下にあるファイルやディレクトリを表示します。

ファイル名とディレクトリ名を同時に指定すると、こうなります。

その他のオプションはこんな感じです。

-f ファイル名だけをソートしないで表示します
-t ファイルを変更した日時の順でソートする
-u ファイルにアクセスした日時の順でソートする
-r ソートを逆順にする。基本的にはアルファベットの逆順、-uや-tなどと一緒に使うと日時の古い順といった具合
-i i-nodeを表示。i-nodeについてはもっと後で・・・
-L シンボリックリンク自体でなく、リンク先のファイルの情報を表示。シンボリックリンクについても後で・・・
-R サブディレクトリの中を再帰的に全て表示

lsの表示内容

lsで見られるファイルの詳細情報は、以下となっています。

  rwx rwx rwx

  • 1桁目 … ファイルの種類。”-“がファイル、”d”がディレクトリ、”l”がシンボリックリンクです。
  • 2~4桁目 … 所有者のパーミッション
  • 5~7桁目 … 所有グループのパーミッション
  • 8~10桁目 … 所有者以外のユーザのパーミッション

② 1

  • ディレクトリの場合 … ディレクトリの数
  • ファイルの場合 … ハードリンクの数

③ taka
 所有者

④ taka
 所有グループ

⑤ 0
 ファイルサイズ

⑥ Jan 6 09:08
 ファイルの更新日時です。-uオプションを付けると、アクセス日時になります。

⑦ a.txt
 ファイルやディレクトリの名前です。

パーミッション

ls表記では、それぞれの3桁のパーミッションは左から読み取り権限、書き込み権限、実行権限を表します。”-“の場合は権限がないことを表します。
また、パーミッションは所有者、所有グループ、それ以外のユーザに対し、別々に与えられます。

上記のコマンド実行例でいうと、

・「taka」ユーザは、ファイル「b.txt」に対して、読み取り、書き込み、実行の許可がある。
・「taka」グループは、ファイル「b.txt」に対して、読み取り、書き込み、実行の許可がある。
・「taka」以外のユーザは、ファイル「b.txt」に対して、読み取り、書き込み、実行の許可がある。

・「taka」ユーザは、ファイル「ccc」に対して、読み取り、書き込みの許可はあるが、実行の許可はない。
・「taka」グループは、ファイル「ccc」に対して、読み取り許可しかなく、書き込み、実行の許可はない。
・「taka」以外のユーザは、ファイル「ccc」に対して、読み取り許可しかなく、書き込み、実行の許可はない。

・「taka」ユーザは、ディレクトリ「ddd」に対して、読み取り、書き込み、実行の許可がある。
・「taka」グループは、ディレクトリ「ddd」に対して、読み取り、実行の許可はあるが、書き込み許可はない。
・「taka」以外のユーザは、ディレクトリ「ddd」に対して、読み取り、実行の許可はあるが、書き込み許可はない。

といった具合に、私はユーザ視点で捉えています。
直感では、「○○ファイルは、○○ユーザへの○○権限を許可している」といった具合に、ファイル視点となるのでしょうか。
逆で覚えちゃったんですね。

ユーザ・グループへ各権限に対しての許可が与えられていれば、それぞれ”r”、”w”、”x”が付きます。

ところで、読み取り、書き込み、実行の権限とは、具体的にどのような操作をいうのでしょうか。
ファイルとディレクトリにより、権限によって行うことのできる操作が違います。

パーミッション ファイルへの権限 ディレクトリへの権限
r ファイルの中身が読める ディレクトリの内容を表示できる。lsが実行可能
w ファイルを編集できる。viが使用できる ディレクト内にファイルなどを作成できる。mkdir、touchなどが使用できる
x 実行ファイルとして実行できる ディレクトリへ移動できる。cdが使用できる

少し試してみます。
前回ユーザの話をしましたが、Linuxでは、ユーザの情報は/etc/passwdというファイルに保存されています。
このファイルをlsコマンドで見てみます。

ご覧のとおり、root以外のユーザに対しては読み取り権限しか許可されていません。

次に、viエディタでこのファイルを開きます。

/etc/passwdでは、このようにユーザ情報が書かれています。
ここで、このファイルを保存終了(:wq)してみます。

といった具合に、編集して終了しようとするとエラーが発生してviエディタを終了できません。

強制保存(:w!)しようとしてもダメです。

次に、実行権限のないディレクトリに対して、cdコマンドを実行してみます。
rootユーザは、/rootディレクトリがホームディレクトリとなります。
このディレクトリのパーミッションを確認します。
「ls -d」とすると、ディレクトリの内容ではなく、ディレクトリ自身の情報を表示できます。

このように、ホームディレクトリは、所有者以外、何の権限も与えられていません。
このディレクトリ直下にカレントディレクトリを変更します。

パーミッション非許可のため、cdコマンドは失敗します。
ホームディレクトリは読み取りもできないため、lsコマンドも失敗します。

パーミッションは変更できます。その方法は次回に学習します。

lsattr、chattr

lsattrコマンドは、ext2上にあるファイルの属性を表示します。
ext2は、ファイルシステムの1つです。linuxのファイルシステムは大体このファイルシステムと互換性があります。

lsコマンドで表示されないパーミッション以外の情報がこのコマンドで見ることができます。
とにかく試してみます。
lsコマンドだけを実行すると、カレントディレクトリ内のファイル属性を表示します。

・・・まったく分かりませんよね。
ちなみに、表示順は「ls -f」と同じようです。
lsと同様、ファイル名やディレクトリ名を後ろにつけることができます。

-aオプションを付けると、すべてのファイルを表示します。
-vオプションを付けると、ファイルのバージョンを表示します。

ファイル属性はたくさんあるのですが、そのなかの1つに変更不可属性(i:immutable)というものがあります。
このファイル属性をもつファイルはrootユーザでも消せなくなります。どうしても削除されたくないファイルはこれで保護できますが、rootユーザにしかこの属性をファイルに付けることはできません。

ファイルの属性を新しく付けるには、chattrコマンドを使用します。

これで「a.txt」ファイルに変更不可属性が付きました。
ファイル属性の解除は、-iといった具合に、マイナスを付けます。

こんなところでしょう。

file

ファイルの情報は他にもあります。
fileコマンドを実行すると、そのファイルがどういった種類のファイルであるかが分かります。
これはもういろいろ試すしかないです。

だいぶ長くなりましたが、パーミッションとファイルについて勉強しました。

広告
  • LINEで送る