Bash
Linux
CentOS
パーミッション

ババァ!ノックしろよッ!ってならないためのlinuxパーミッション入門

思春期あるある

9b73bf62b9b5c5d2c59dd69c7127a6c6.jpg

※ 進撃の巨人 予告より

思春期を超えたことがあるみなさんなら

共感していただけると思うのですが、

突然親が部屋に来訪してくるとビビりますよね。

やましいことがあってもなくてもビビりますよね。

今回は、

linuxなら、
親が勝手に部屋に入ってこれなくなるので、
安全だよ

という話をしようと思います。

環境を用意する

今回はCentOS7を環境として用意しました。

軽く試したい時、dockerさんにはとてもお世話になっております。。。

$ docker run -it centos:centos7

母ユーザと俺ユーザを作成し、それぞれの部屋を作成

$ useradd haha
$ useradd ore

なお、ここで

$ cat /etc/passwd

とすると、以下のようにユーザが追加されていることがわかります。

ore:x:1000:1000::/home/ore:/bin/bash
haha:x:1001:1001::/home/haha:/bin/bash

また、

$ ls /home
haha  ore

となっており、homeディレクトリにhahaとoreディレクトリが追加されています。

userを追加すると、それぞれのユーザが使える部屋も同時に追加される感じですね。

俺の部屋で怪しい本を生成

$ su ore
$ cd /home/ore
$ touch ayashii_book

俺の部屋に怪しい本をおきます。

母親が俺の部屋に入ろうとすると、、、

$ su haha

ユーザを母親に切り替えます。

$ cd /home/ore
bash: cd: ore: Permission denied

母親は、俺の部屋に入れない!

なぜ部屋に入れないのか

ここでoreディレクトリの

パーミッションを確認してみましょう。

$ ls -la
drwx------. 2 ore  ore  4096 Dec 22 15:48 ore

このパーミッションを図にすると、

以下のようになります。

Untitled (18).png

つまり、

  • oreディレクトリは、oreユーザに対して、読み、書き、実行を許している

  • 他のユーザに対しては何も許していない

ということになります。

だから、hahaユーザは入ることもできないのです。

やったね!

(ディレクトリの場合、

 実行権=そのディレクトリに入れる権利

 であることは覚えておきましょう)

[http://dqn.sakusakutto.jp/2011/11/linuxx.html]

どうしたら母が入れるようになるのか

ディレクトリに入れるようにするためには、

このディレクトリに対して、

othersが実行権を持てばよいです。

Untitled (20).png

実際にやってみましょう。

$ su ore
$ chmod 701 ore
$ drwx-----x. 2 ore  ore  4096 Dec 22 15:48 ore

この701とは何か、ということですが、

これはrwxのパーミッションを数字で表したものになります。

末尾の1が、実行権を表してます。

(こちらについてはまた解説いたします)

$ su haha
$ cd ore

入れました!

しかし、部屋の中に何があるかはみれない

俺の部屋でlsをしてみます。

$ ls
ls: cannot open directory .: Permission denied

なるほど。部屋には入れるけど

中はみれないのか。

今度はothersに読み取り権限を与える

今度は、以下の図のようにします。

Untitled (19).png

今度はothersに読み取り権限を与えてみましょう。

$ su ore
$ cd /home
$ chmod 705 ore

母親、再来

$ su haha
$ cd /home/ore

b0061947_23331098.jpg

$ ls
ayashii_book

見つかったッ!

※ くだらなくて申し訳ありません

まとめ

このように、

思春期はlinuxでuseraddすれば、

母親が入れない部屋(ホームディレクトリ)が生成されるので

健やかな日々を送れると思います。

みなさんも、

パーミッションをうまく利用して快適ライフを送りましょう。

参考

https://eng-entrance.com/linux-permission-basic