Linuxの権限確認・変更とスーパーユーザ - Qiitaファイルのオーナーとグループcatコマンド(既存コマンド)のオーナーの確認$ ls -l /bin/cat-rwxr-xr-x 1 root root 54160 Nov 30 15:16 /…
ファイルのオーナーとグループ
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