Linuxの権限確認・変更とスーパーユーザ
ファイルのオーナーとグループ
catコマンド(既存コマンド)のオーナーの確認
$ ls -l /bin/cat
-rwxr-xr-x 1 root root 54160 Nov 30 15:16 /bin/cat
最初のrootはファイルの所有者、2つ目のrootはファイルが所属するグループを意味します。
→/bin/catファイルは、rootユーザがオーナーで、rootグループに属しています。
新規作成したファイルのオーナーの確認
$ touch test.txt
$ ls -l test.txt
-rw-rw-r-- 1 banri banri 54160 Nov 30 15:16 test.txt
以上の例では、test.txtというファイルを作成し、そのオーナーを確認しています。
→ユーザbanriがファイルを作成したため、banriがオーナーになっています。
グループ
グループとは、ユーザの集合を意味します。
自分がどこにグループに属しているかは以下のコマンドで確認できます。
$ groups
banri wheel
banriはbanriとwheelというグループに属しています。
ファイル権限(パーミッション)確認
ファイルタイプ
$ ls -l /bin/cat
-rwxr-xr-x 1 root root 54160 Nov 30 15:16 /bin/cat
もう1度、catコマンドの例を挙げます。-rwxr-xr-xの箇所に注目です。
一番左の-はファイルタイプの一種で、ファイルを意味します。以下はファイルタイプとそれらの意味となる対応表です。
| ファイルタイプ | 意味 |
|---|---|
| – | ファイル |
| d | ディレクトリ |
| l | シンボリックリンク |
ファイルタイプを除いた部分rwxr-xr-xの部分に注目です。
これら9文字はファイルモードを意味し、rwx、r-x、r-xと3文字ごとのブロックに分けられます。
catコマンドでは、以下のようになります。
| オーナー | グループ | その他ユーザ |
|---|---|---|
| rwx | r-x | r-x |
ファイル権限の記号と意味は以下のようになります。
| 記号 | 意味 |
|---|---|
| r | 読み取り(read) |
| w | 書き込み(write) |
| x | 実行(execute) |
なお、-となっているところは、権限がないという意味です。
そして、ファイル権限の記号はディレクトリ関しにも同様です。
| 記号 | 意味 |
|---|---|
| r | 読み取り→ディレクトリに含まれるファイル一覧取得 |
| w | 書き込み→ディレクトリ下にあるファイル・ディレクトリの作成・削除 |
| x | 実行(execute)→ディレクトリをカレントディレクトリにする |
ファイル権限(パーミッション)変更
ファイル権限の変更方法は以下の2つです。
1.シンボルモード
シンボルモードは、変更対象にどのような権限を追加・禁止するかが明確です。
chmod [ugoa] [+-=] [rwx] <file name>
------ ----- ----- -----------
変更対象 演算子 権限 ファイル名
変更対象はそれぞれ以下のような意味になります。
| 記号 | 意味 |
|---|---|
| u | ユーザ(=オーナー)(user) |
| g | グループ(group) |
| o | その他(others) |
| a | すべて(all) |
演算子はそれぞれ以下のような意味になります。
| 記号 | 意味 |
|---|---|
| = | 指定した権限と等しくする |
| + | 権限を付与する |
| – | 権限を禁止する |
先ほど、作成したtest.txtのファイルの権限を変更してみます。オーナーやグループと同様に、その他ユーザへファイルの書き込み権限を付与します。
$ ls -l test.txt
-rw-rw-r--. 1 banri banri 54160 Nov 30 15:16 test.txt
$ chmod o+w test.txt
$ ls -l test.txt
-rw-rw-rw-. 1 banri banri 54160 Nov 31 02:16 test.txt
その他ユーザの権限r--がrw-に変更されましたね。
次に、グループのファイルへの書き込み権限を禁止します。
$ ls -l test.txt
-rw-rw-rw-. 1 banri banri 54160 Nov 31 02:16 test.txt
$ chmod g-w test.txt
$ ls -l test.txt
-rw-r--rw-. 1 banri banri 54160 Nov 31 02:17 test.txt
グループの権限rw-がr--に変更されましたね。
複数のユーザの権限を一括指定する場合は以下のようにします。
$ ls -l test.txt
-rw-rw-rw-. 1 banri banri 54160 Nov 31 02:17 test.txt
$ chmod ug=x test.txt
$ ls -l test.txt
---x--xrw-. 1 banri banri 54160 Nov 31 02:18 test.txt
2.数値モード
chmod <8進数の数値> <file name>
| 数字 | 意味 |
|---|---|
| 4 | 読み取り(read) |
| 2 | 書き込み(write) |
| 1 | 実行(e x ecute) |
権限は以上の8進数の足し算で決定できます。例えばrwxr-xr-xのような権限を一括指定したい場合は以下のようになります。権限の一括指定には、シンボルモードより数値モードの方が利用されるそうです。私も権限設定で「700」や「754」などをよく使用します。
| オーナー | グループ | その他ユーザ |
|---|---|---|
| rwx | rw- | r-x |
| 4+2+1 | 4+2 | 4+1 |
| 7 | 6 | 5 |
以上のように、それぞれの足し算の結果を繋げた765が権限の数値となります。
$ ls -l test.txt
-rwxr-xrw-. 1 banri banri 54160 Nov 31 02:17 test.txt
$ chmod 765 test.txt
$ ls -l test.txt
-rwxrw-r-x. 1 banri banri 54160 Nov 31 02:18 test.txt
スーパーユーザ
スーパーユーザは、あらゆる権限が付与されたユーザのことで、システムの設定ファイルの変更やアプリケーションをインストールする権限を持っています。rootユーザとも呼ばれています。スーパーユーザに対して、ユーザbanriなどは一般ユーザに分類されます。以下はスーパーユーザになる方法とスーパーユーザで実行する方法です。
1.スーパーユーザになる – suコマンド
[banri@localhost]$ su
Password:
[root@localhost]#
一般ユーザからスーパーユーザになる(ログインする)と、プロンプトが$から#に変更されます。
[root@localhost]# exit
exit
[banri@localhost]$
スーパーユーザから一般ユーザに戻る(ログアウトする)には、exitコマンドを入力します。プロンプトが#から$に戻りました。
2.スーパーユーザで実行する – sudoコマンド
sudoは設定ファイルを実行したい時やアプリケーションをインストール・起動したい時など、アプリケーションのインストール・起動などに利用されます。以下は、sudoを使用したnginxのインストールと起動に関するコマンドです。
# nginxをインストール
$ sudo yum install nginx
# nginxを起動
$ sudo systemctl start nginx

