Linuxでのパーミッション変更に役立つ!片手で31まで数える方法。


今回やること

2進数を用いて、片手で31まで数える方法を解説します。
Linux上でファイルのパーミッションを変更する際に役立つので、ぜひ覚えてみてください。

2進数とは

2進数とは、2で桁が上がる数字のことです。
私たちが普段使用しているのは10で桁上がりするため10進数となります。
我ながら大変わかりづらい説明なので、以下に2進数と10進数の対応表を用意しました。
2進数では数字が2になるときに桁数が増えてますね。
10進数も同様に10になるときに桁数が増えています

2進数 10進数
0 0
1 1
10 2
11 3
100 4
101 5
110 6
111 7
1000 8
1001 9
1010 10

指で2進数を数える方法

まず拳をグーの状態にしてください。
そうすると全ての指が折り畳まれている状態になります。
この状態から、以下のようにして2進数を数えていきます。
折り畳まれている指=0
立っている指=1

この状態では2進数で0なので10進数でも0です。

2進数で1、10進数でも1

2進数で10、10進数では2

2進数で11、10進数では3

2進数で100、10進数では4(f◯ckではありません)

2進数で101、10進数では5

2進数で110、10進数では6

2進数で111、10進数では7

2のn乗-1(nは指の本数)まで数えられるので、両手の指を使えば2の10乗-1で1023まで数えられます。(実用性は皆無ですが...)

パーミッションの読み方

linuxサーバー上にテスト用のファイルを用意しました。
lsコマンドの実行結果の左端に -rwxr--r-- という記載がありますね。
これがパーミッションを表しており、以下のような意味を持ちます。
r = 参照権限
w = ファイルの編集権限
x = ファイルの実行権限

パーミッションの2桁目から4行目 = ルートユーザーが出来ること
パーミッションの5桁目から7行目 = ファイルの所有者が出来ること
パーミッションの8桁目から10行目 = 指定のグループに所属しているユーザーが出来ること

つまり、以下の例では
ルートユーザー 参照、編集、実行が出来る。つまりなんでも出来る。
ファイルの所有者 参照だけできる
グループに所属しているユーザー 参照だけできる
ということになります。

# ls -l
-rwxr--r--. 1 yoshida users    0  5月  6 03:35 test.txt

実践

それではパーミッションの変更を行ってみましょう。
今回はファイルの所有者に編集の権限を付けたいと思います。
結論から言うと以下のコマンドでパーミッションを変更することが出来ます。
ここで重要な部分が"764"です。これがパーミッションを表しています。
1桁目の7は2進数で111なので、ルートユーザーにrwxの権限を付与することが出来ます。(つまり変更無し)
2桁目の6は2進数で110なので、所有者にrwの権限を付与することが出来ます。
2桁目の4は2進数で100なので、所有者にrの権限を付与することが出来ます。(つまり変更無し)

# chmod 764 test.txt
# ls -l
-rwxrw-r--. 1 yoshida users    0  5月  6 03:35 test.txt

頭の中での流れを以下に示します。
1.ファイルの所有者のパーミッションを変更するから5桁目〜7桁目を編集する
2.編集権限を付与するので、「r--」から「rw-」にする
3.「rw-」と言うことは2進数で110(ここで指を動かして110が10進数でいくつなのか数える)
4.2進数の110は6だ!
となるため、「chmod 764」で所有者に編集権限が付与できると言うわけです。

終わりに

今回の記事は以上となります。
簡単にできることなのでAWSのEC2上でやってみるか、私が以前書いた記事を参考にLinuxサーバーを立ち上げるなりして試してみてください!
・参考
VMware vSphereで仮想サーバーを作ってみた
仮想マシンにCentOSをインストールしてみた