0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Linux】Linuxのパーミッションを理解する

Last updated at Posted at 2024-09-25

はじめに

今回はLInuxのパーミッションについて学んだことをまとめていきたいと思います!

パーミッションの理解には

  • ファイルオーナー
  • グループ
  • パーミッション
  • スーパーユーザ
    について知る必要があるので順番に解説していきます!

ファイルオーナーとは?

Linux で扱われるすべてのファイルには、**所有者(ファイルオーナー)**が設定されています。ファイルのオーナーは、ファイルへのアクセス権限(パーミッション)を自由に設定することができます。

所有者の確認方法

ls -lコマンドを使用すると、ファイルやディレクトリの所有者(オーナー)を確認できます。

ls -l
drwxr-xr-x@ 12 [所有者]  [グループ]  384 Sep 10 08:41 memos

上記の[所有者]の部分にファイルオーナー名が表示されます。

グループとは?

グループとは、複数のユーザをまとめた集合のことです。例えば、複数のユーザを「groupA」というグループに所属させ、そのグループに対してアクセス権限を付与することで、同じ役割を持つユーザに一括して権限を設定することができます。

drwxr-xr-x@ 12 [所有者]  [グループ]  384 Sep 10 08:41 memos

さっきのls -lの例でいうと上記の[グループ]の部分にグループ名が表示されます。

パーミッションとは?

パーミッションとは、誰に対してどのような操作を許可するかを定義する情報のことです。

ls -lコマンドの結果の先頭に表示される3文字ごとのブロックは、ファイルのパーミッションを表しています。

パーミッションの構造

drwxr-xr-x@ 12 [所有者]  [グループ]  384 Sep 10 08:41 memos

例えば上記の例だといかの 意味になります

  • ファイル種別:

    • d はディレクトリを表します(-ならファイル、lならシンボリックリンク)
  • パーミッション:

    • 所有者(オーナー): rwx → 読み取り・書き込み・実行のすべてを許可。
    • グループ: r-x → 読み取りと実行を許可、書き込みは不可。
    • その他ユーザ: r-x → 読み取りと実行を許可、書き込みは不可。

パーミッションの文字の意味

  • r: 読み取り権限 (Read)
  • w: 書き込み権限 (Write)
  • x: 実行権限 (Execute)

パーミッションの設定方法

chmod コマンド

パーミッションは、ファイルオーナーもしくはスーパーユーザのみ変更することができます。chmod コマンドには2つの指定方法があって シンボルモード数値モードがあります

シンボルモードでの指定

chmod [ugoa][+-=][rwx] [ファイル名]
記号 意味
u オーナー
g グループ
o その他ユーザ
a ugo すべて

演算子の意味

記号 意味
+ 権限を追加
- 権限を取り除く
= 権限を指定通りにする

例:

  • オーナーの書き込み権限を追加:
    chmod u+w hoge.txt
    
  • その他ユーザの実行権限を禁止:
    chmod o-x hoge.txt
    
  • グループとその他ユーザに読み取り権限を付与:
    chmod go=r hoge.txt
    

数値モードでの指定

chmod [8進数の数値] [ファイル名]

各権限の数値対応表

記号 数値
r (読み取り) 4
w (書き込み) 2
x (実行) 1

例:

パーミッション rwxr-xr-x を指定する場合、以下のように数値で表します。

  • 所有者: rwx4+2+1 = 7
  • グループ: r-x4+1 = 5
  • その他ユーザ: r-x4+1 = 5

この場合、chmod 755 ファイル名 で設定できます。

こう見ると数値モードの方が短くかけて使い勝手が良さそうですね笑

スーパーユーザとは?

スーパーユーザは、管理者権限を持つ特別なユーザです。
通常は root ユーザとも呼ばれます
システム全体にアクセスできるため、本来削除ができないように権限が制御されているファイルも削除することもできてしまいます。そういったファイルを消すとLinuxシステムが壊れてしまったりするので注意が必要です。

スーパーユーザができること

  • システム設定の変更
  • ファイルやディレクトリのアクセス権限の変更
  • すべてのファイルに対する読み込み・書き込み・削除・実行

スーパーユーザになる方法

su コマンド

スーパーユーザになるには、su コマンドを使用します。

su

-オプションを付けると、スーパーユーザの環境が初期化されます!
つまりログインしているユーザの環境変数とか引き継がずにできるということです

su -

スーパーユーザの環境に入ると、プロンプトが $ から # に変わります(ただし設定で変えられていたりすると異なる場合がある)

スーパーユーザを終了する

スーパーユーザ状態を終了するには、exit コマンドを使います。

exit

sudo コマンド

sudoの使い方

sudo は、1つのコマンドに対してスーパーユーザの権限で実行する際に使用します。

sudo [コマンド名]

sudosu の違い

  • su: スーパーユーザのセッションが続くため、コマンドを複数連続して実行できる。
  • sudo: 指定した1つのコマンドのみスーパーユーザ権限で実行し、その後は一般ユーザに戻る。

sudoersファイル

/etc/sudoers ファイルを編集することで、誰がどのコマンドを実行できるかを管理します。

例:

hoge ALL=(ALL) ALL

この設定は、hoge ユーザがすべてのコマンドを実行できることを示します。

sudoers ファイルの編集

sudoers ファイルを編集する際は、visudo コマンドを使用することが推奨されるようですvisudo を使用することで、ファイル保存前に文法チェックが行われ、安全に編集ができます。
使わないと、文法がおかしくても設定を上書きされてしまいます。
visudoを使ったとしても文法チェックでエラーがでたときにQを入力してしまうと誤りがあっても強制的に保存されてしまうため注意がいるようです。

sudo visudo

ただ、そもそもsudoersファイルなどは編集しない方が良いみたいですね。
間違った設定とかしてしまうと再度スーパーユーザになれなくなってしまうこともあるみたいなので

su と sudo どちらを使うべきか?

  • 基本的には sudo を使用する方が安全なようです。
    理由はシンプルにsu コマンドを使用するとスーパーユーザの状態が長く続くため、誤操作のリスクが高まるからですね。
  • ただし、sudo がデフォルトで使用できない環境や、設定が難しい場合には su を使用することもあるみたいです。

まとめ

以上Linuxのパーミッションについてでした。
例えばsshキーとか作る時、適切な権限をファイルに付与したりする理由とか、今まで何となくしか理解してなかった権限や設定について理解できたように思います。

参考書籍

0
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?