はじめに
Linuxのパーミッションの設定はしっかりと理解されていますか?
私は今日理解しました。どうせ明日にはほとんど忘れていると思うのでまとめてみます。
よかったら参考にどうぞ🦍
目次
- パーミッション(権限)がある理由
- パミッションの確認方法
- パミッションの見方
- ファイルタイプ
- パーミッションの意味
- パーミッションの数値変換
- 初期値
- 権限変更
パーミッション(権限)がある理由
Linuxを操作していると必ず遭遇するPermission denied
は操作しているユーザーに「読み込み」「書き込み」「実行」のいずれかの許可がないことを表します。中には「なぜ許可が必要なのか?」と感じたことのある方もいると思います。
それはLinuxシステムが複数のユーザーで使用することを前提に作られているからです。現在、サーバーのOSの多くはLinuxで構成されていますが、サーバーを管理する複数のエンジニア全員が全ての権限を与えられているとセキュリティ上大変問題があります。そのため、パーミッションがあるわけです。
パミッションの確認方法
$ ls -al
オプションに「a」を付与すると「.」から始まる隠しファイルも表示することができます
結果
$ ls -al
drwxr-xr-x 16 saito saito 512 1 24 10:10 .
drwxr-xr-x 10 root root 320 1 16 16:22 ..
drwxr-xr-x 15 saito saito 480 1 29 16:07 .test
-rw-r--r-- 1 saito saito 1213 12 23 11:33 README.md
drwxr-xr-x 6 saito saito 192 1 13 20:54 foo
パミッションの見方
パーミッションが記されているところはdrwxr-xr-x
の部分で分解すると以下のようになります。
- rw- r-- r--
| | | |
| | | ④その他のユーザー
| | ③ファイルグループ
| ②ファイルオーナー
①ファイルタイプ
①ファイルタイプ
基本的にファイルを表す「-」とディレクトリを表す「d」を覚えておけばいいと思います。
種別 | 意味 |
---|---|
- | ファイル |
b | ブロックファイル |
c | キャラクタファイル |
d | ディレクトリ |
l | シンボリックリンク |
p | FIFO(名前付きパイプ) |
s | Unixドメインソケット |
? | その他のファイルタイプ |
パーミッションの意味
種別 | 意味 |
---|---|
- | 権限未設定 |
r | 読み込み可 (Read) |
w | 書き込み可 (Write) |
x | 実行可 (eXecute) |
これをもとに上の例を読んでみると
| パーミッション | ①ファイルタイプ | ②オーナー | ③グループ | ④その他ユーザー |
|-----|---------|---------|---------|---------|---------|
| drwxr-xr-x | ディレクトリ | 読み込み、書き込み、実行可| 読み込み、実行可| 読み込み、実行可|
| -rw-r--r-- | ファイル | 読み込み、書き込み| 読み込み可| 読み込み可|
となります。
rwxの表記順序は固定です
パーミッションの数値変換
パーミッションは数値に変換することができます。
種別 | 数値 | 意味 |
---|---|---|
- | 0 | 権限未設定 |
r | 4 | 読み込み可 (Read) |
w | 2 | 書き込み可 (Write) |
x | 1 | 実行可 (eXecute) |
この数字は各権限範囲ごとに足し算します。 |
| パーミッション | オーナー | グループ | その他ユーザー | | 数値 |
|-----|:---:|:---:|:---:|:---:|:---:|:---:|:---:|
| drwxr-xr-x | 4+2+1| 4+1 | 4+1| →| 755 |
| -rw-r--r-- | 4+2| 4 | 4 | →| 644 |
初期値
ファイルを作成した時にそれぞれ初期値が決められています。
種別 | 数値 | パーミッション |
---|---|---|
ファイル | 666 | rw-rw-rw- |
ディレクトリ | 777 | rwxrwxrwx |
権限変更
権限の変更はchmod
コマンドで変更することができます。
chmod オプション モード 変更するファイル
例えば下記を実行するとこのように変化します。
$ chmod 777 README.md
Before | After |
---|---|
-rw-r--r-- | -rwxrwxrwx |
ファイル権限はrootならびにユーザーが変更でき、ユーザーの変更範囲はそのユーザーもしくはグループに権限があるファイルとディレクトリまでです
すなわちユーザーはrootの権限を操作することはできません(当たり前ですね笑)
久々にQiita書きました。。。いままでGoの記事が多かったですが、これからはインフラ寄りな記事も書いていきたいです〜
それでは👋
参考記事