4
12

More than 5 years have passed since last update.

Linuxの権限確認・変更とスーパーユーザ

Posted at

ファイルのオーナーとグループ

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はbanriwheelというグループに属しています。

ファイル権限(パーミッション)確認

ファイルタイプ

$ 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文字はファイルモードを意味し、rwxr-xr-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
4
12
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
4
12