Linuxのファイルパーミションや権限などについて無知だったので調べた。
はじめに
Linuxで扱われるファイルは、自分で作成したファイルからシステムが提供するライブラリから実行コマンドまですべてに所有権が設定される。
ファイルのオーナーは、ファイルへのアクセス権を自由に設定することができる。
ファイルのオーナーの確認
$ ls -l /bin/cat
-rwxr-xr-x 1 root(ファイルのオーナー) wheel(ファイルが所属するグループ) 23648 9 21 2018 /bin/cat
グループ
グループとは、ユーザをまとめた集まりのこと。
システム管理を行うwheel
というグループに複数の管理者ユーザーを所属させ、wheelグループに対して許可を与えることで、同じ役割を持つ複数ユーザーに同一の権限を与えることができる。
ユーザについて
- ユーザーは同時にいくつものグループに所属することができる
- どのユーザーも1つ以上のグループに所属しなければならない
- ユーザーが作られた際に、特に指定を行わない場合は、ユーザーと同一のグループに所属する
- 自身が所属しているグループは
groups
コマンドで確認することができる
ファイルのパーミッション
それぞれのファイルには、***「誰に、どのような操作を許可する」***という権限を規定する情報が設定される。
-rwxr-xr-x(ファイルタイプとファイルパーミッション) 1 root(ファイルのオーナー) wheel(ファイルが所属するグループ) 23648 9 21 2018 /bin/cat
ファイルタイプについて
-
- : 通常ファイル
- d :ディレクトリ
- l :シンボリックリンク
ファイルのパーミッション
rwxr-xr-x
で表示されるファイルのパーミッションは3つごとに、1つのブロックになっており、それぞれ「オーナー」「グループ」「その他のユーザ」に対するパーミッションを意味している。
rやw、xといった記号は許可されるファイルへの操作を意味しています。操作は「読み取り」「書き込み」「実行」の3つの種類がある。許可されていない場合には、-
表示される。
-rwxr-xr-x 1 root wheel 23648 9 21 2018 /bin/cat
上記のファイルの権限についての説明
オーナー
rwx
→ 「読み取り」「書き込み」「実行」が許可
wheelグループのユーザ
r-x
→ 「読み込み」「実行」が許可
その他のユーザー
r-x
→ 「読み込み」「実行」が許可
chmodコマンド
ファイルやディレクトリのパーミッションを設定するコマンド。chmodコマンドにはシンボルモードによる指定と、数値モードによる設定がある。
シンボルモードのユーザ指定方法
- u : オーナー
- g : グループ
- o : その他のユーザ
- a : 上記の全て
シンボルモードでの利用方法
オーナーの書き込み権限を追加
$ chmod u+w file.txt
グループの書き込み権限を削除
$ chmod g-w file.txt
その他のユーザの権限を読み込みだけにする
$ chmod o=r file.txt
数値モードでのユーザ指定方法
数値モードでのパーミッションの数値
- r(読み込み) : 4
- w(書き込み) : 2
- x(実行) : 1
数値モードでの利用方法
file.txtのパーミッションをrwxr-xr-x
に指定する
$ chmod 755 file.txt
スーパユーザ
管理者権限を持つ、特別なユーザ
通常は一般ユーザでログインし、操作し、必要な場合のみスーパユーザとして、作業することが一般的。
suコマンド
一時的に別のユーザになるためのコマンド
suコマンドは任意のユーザーになることができるが、このコマンドは主にスーパユーザになるために利用される。Linuxではセキュリティの理由から、スーパユーザで直接ログインすることはできない。まず一般ユーザでログインして、suコマンドでスーパユーザになる必要がある。
sudoコマンド
別のユーザとしてコマンドを実行する。ユーザを指定しない場合には、スーパユーザとして実行される。
まとめ
なんとなくでchmodコマンドやsudoコマンドを使っていたので、勉強になった。