Language
日本語
English

Caution

JavaScript is disabled in your browser.
This site uses JavaScript for features such as search.
For the best experience, please enable JavaScript before browsing this site.

UNIX(Linux)
Beginner

  1. What is UNIX (Linux)? - Japanese Only
  2. What are Distributions? - Japanese Only
  3. About CentOS, macOS, and CUI - Japanese Only
  4. Installing CentOS with Virtualization Software and macOS CUI Environment - Japanese Only
  5. Login, root User, and Shutdown - Japanese Only
  6. Command Structure and Important Notes - Japanese Only
  7. File System and Navigating Directories (cd and pwd) - Japanese Only
  8. Key Directories and Listing Contents (ls) - Japanese Only
  9. Advanced Directory Navigation (cd) and Paths - Japanese Only
  10. Advanced ls Command (Part 1) and Dotfiles - Japanese Only
  11. Advanced ls Command (Part 2) - Japanese Only
  12. Tab Completion for Input - Japanese Only
  13. Creating Directories (mkdir) - Japanese Only
  14. Quick File Creation (touch) and About Files - Japanese Only
  15. Standard I/O, Redirection (> and >>), echo, and cat - Japanese Only
  1. Deleting Files and Directories (rm) - Japanese Only
  2. Copying Files and Directories (cp) - Japanese Only
  3. Moving and Renaming Files and Directories (mv) - Japanese Only
  4. What is the vi Editor? - Japanese Only
  5. Basic vi Usage (Part 1) - Japanese Only
  6. Basic vi Usage (Part 2) - Japanese Only
  7. Remote Operations via Terminal (SSH and Tera Term) - Japanese Only
  8. Installing Software (yum and Package Managers) - Japanese Only
  9. User Overview, Verification, Creation, and Switching (adduser and su) - Japanese Only
  10. User Passwords, Deletion, Modification, and sudo (passwd, userdel, usermod) - Japanese Only
  11. About Groups and the groups Command - Japanese Only
  12. Adding, Deleting, and Modifying Groups (groupadd, groupdel, groupmod) - Japanese Only
  13. About Permissions - Japanese Only
  14. Setting Permissions (chmod and chown) - Japanese Only
  1. Home
  2. UNIX(Linux)Beginner - Setting Permissions (chmod and chown)

Setting Permissions (chmod and chown) - Japanese Only

みなさまどうも。

この度はUnixとかLinuxについて大変お疲れ様でした、今回が最後の記事でございます。

最初からお読み頂いた方は色々とお疲れ様でございました、初めていらっしゃった方はどうぞごゆるりとしていってください。

といわけで今回はパーミッションあたりの設定方法についての解説です。これについては色々と頭がこんがらがちな内容なのでコマンドを叩いてみたり状態とかを確認したりとかしつつじっくりやっていきましょう。

というわけでまずいつも通り『root』さんでログインして頂きまして新規ユーザーである『test』くんを作成してみましょう。現在『root』さん以外の一般ユーザーが既に居るならば『test』くんを作らずその子を使ってしまってOKです。

[root@localhost ~]# adduser test

そしてそれと同時に『test』くんのホームディレクトリである『/home/test』の内部に「もぅ...見ないでって言ったのに...(///)」と書き込んだ『test.txt』を作成してみて下さい。『echo』くんとリダイレクションのコンビ技を使うとするとこんな感じですね。

[root@localhost ~]# echo "もぅ...見ないでって言ったのに...(///)" > /home/test/test.txt
[root@localhost ~]# cat /home/test/test.txt
もぅ...見ないでって言ったのに...(///)

では現在の『/home/test/test.txt』なファイルのパーミッションの状態なのですが『ls -l』を使って確認してみるとこんな感じになっております。

[root@localhost ~]# ls -l /home/test/test.txt
-rw-r--r--. 1 root root 51  Jul 25 09:40 2018 /home/test/test.txt

『rw-r--r--』と『root root』って部分に注目ですね。現在のオーナーは『root』さんでグループも『root』グループになっています。

さてこの状態でちょいと『test』くんの所属してるグループを確認してみましょう。『groups』コマンドで確認してみると

[root@localhost ~]# groups test
test : test

ってなりますので現在の『test』くんは『test』グループにしか属しておりません。

先程の『/home/test/test.txt』のパーミッションでは『root root』となっていたので現在の『test』くんは『その他』なユーザーのパーミッションが適用されるって事ですね。『rw-r--r--』だったのでその一番右側の3文字の『r--』でございましてつまりは「読み込みは出来るけど書き込みと実行はできない状態」でございます。

最初にこれを試してみましょう。まず『cat』コマンドで出力してみると

[test@localhost root]$ cat /home/test/test.txt
もぅ...見ないでって言ったのに...(///)

ちゃんと出力されています。でも追記しようとすると

[test@localhost root]$ echo "見ちゃった...(*'ω'*)" >> /home/test/test.txt
bash: /home/test/test.txt: Permission denied

「Permission denied」って事なので「許可ないからダメだよー」って言われちゃって編集できませんね。これは実行ファイルだとしても実行する事は出来ない感じになっています。「読み込みは出来るけど書き込みと実行はできない状態」がバッチリ反映されてる感じでございますね。

ここでオーナーとグループを変更できるコマンドの『chown』くんを使ってみましょう。まず一旦『exit』とかで『test』くんから『root』さんにユーザーを切り替えて頂きまして

[test@localhost ~]$ exit
exit
[root@localhost ~]#

この状態で『chown test /home/test/test.txt』と叩いてみて下さい。そしてそのまま『ls -l /home/test/test.txt』と叩いてみると

[root@localhost ~]# chown test /home/test/test.txt
[root@localhost ~]# ls -l /home/test/test.txt
-rw-r--r--. 1 test root 51  Sep 21 18:56 2018 /home/test/test.txt

オーナーの部分が『test』くんになっていますね。

この状態で『test』くんにユーザーを切り替えて追記しようとすると

[test@localhost root]$ echo "見ちゃった...(*'ω'*)" >> /home/test/test.txt
[test@localhost root]$ cat /home/test/test.txt
もぅ...見ないでって言ったのに...(///)
見ちゃった...(*'ω'*)

ちゃんと追記出来ていますね。オーナーが『test』くんになったので『rw-』が適用されるようになったわけです。

そこでもういっちょ『root』さんに戻って頂きまして

[test@localhost root]$ exit
exit
[root@localhost ~]#

今度はオーナーとグループを変更してみましょう。「グループを変更するにはどういう記法になるの?」と聞かれると『:』を使って区切ってしまえばOKです。

例えば「オーナーが「test』くんでグループが『root』」になると『test:root』ってなり「グループだけを『test』にしたい」となると『:』の左側を空白にして『:test』って打つ感じですね。

[root@localhost ~]# ls -l /home/test/test.txt
-rw-r--r--. 1 test root 78  Sep 21 18:59 2018 /home/test/test.txt
[root@localhost ~]# chown :test /home/test/test.txt
[root@localhost ~]# ls -l /home/test/test.txt
-rw-r--r--. 1 test test 78  Sep 21 18:59 2018 /home/test/test.txt

こんな感じで必要な権限をそれぞれ設定してしまえばOKです。ここまでは大丈夫そうでしょうか。

続いて権限を変更出来る『chmod』です。ちょっと頭がこんがらがちかもですが『chown』コマンドくんは「-rw-r--r--. 1 test test 78 Sep 21 18:59 2018 /home/test/test.txt」の部分の「test test」な部分を変更するコマンドでございまして次に解説する『chmod』コマンドくんは『rw-r--r--』な部分を変更するコマンドでございます。慣れないとわけわかめでございますね。

あと注意点なんですが『chown』コマンドは『root』(スーパーユーザー)さん、つまり管理者権限を持っている状態でないと実行する事は出来ません。これは『sudo』でもOKでございます。んで『chmod』に関してはスーパーユーザーじゃなくともそのファイルのオーナー(所有者)さんであれば一般ユーザーでも変更可能になってます。ファイルの所有グループさんではNGです。ここ間違いやすいので少し気を付けて下さい。

更に前回の記事でも解説しましたが『root』(スーパーユーザー)さんであれば全てのファイルをこにょこにょし放題というかパーミッションとかそういうのの影響は一切受けませんのでこれは絶対に忘れないようにして下さい。どういうことかと言うと例えば『/home/test/test.txt』なファイルの状態が以下としますよね。

[root@localhost ~]# ls -al /home/test/test.txt
----------. 1 test test 78  9月 21 18:59 2018 /home/test/test.txt

これは権限部分が『---------』ってなっているので本来ならば誰も触れないファイルになってしまっています。しかしスーパーユーザーさんならば以下のように

[root@localhost ~]# cat /home/test/test.txt
もぅ...見ないでって言ったのに...(///)
見ちゃった...(*'ω'*)

中身が余裕で見れちゃいます。もちろん編集や削除などなどなんでもOKでございます。こんな感じで「スーパーユーザーさんというのはこの世界の神のような存在であるのでオーナーや権限などの影響は一切受けないんだな!(*'ω'*)」と覚えておくとよいかもです。

セキュリティ的にスーパーユーザーさんの管理は非常に重要になるわけなのですがそれはこの辺が原因ですね。全てのファイルの権限をしっかり設定してある状態であってもスーパーユーザーならばその影響を一切受けないので悪いハッカーさんにハッキングされてスーパーユーザーさんになられてしまったら即終了でございます。

更にハッキング出来る程のスキルがある人ならばそのサーバーを一瞬で乗っ取る為のプログラム、現在のユーザーを全削除したりパスワードを変更したり公開鍵を破棄したりして元々のユーザーさんが誰も触れなくなるような処理も用意してあるはずなのでそう考えると怖いですよね。プログラムをコピペして実行するだけで済むのでものの30秒くらいで乗っ取り完了になります。

ぶっちゃけ侵入さえ出来れば著者も一瞬で「このサーバーは俺のもんだぜー!(*'▽'*)」って出来ちゃいますので「これから商用サーバーを設計するぜ!٩( 'ω' )و」って人はスーパーユーザーの管理はまじで気を付けて下さい。ここは超要注意でございます。

というわけで話を戻しまして『chmod』の使い方についてです。基本的な文法は『chmod パーミッション 該当ファイルとかディレクトリとか』って感じになるのですがこの『パーミッション』部分の記法がちょっとややこしいです。

まず前回の記事で解説した3桁の数字で『パーミッション』を表記するパターンを使う場合がありまして例えば全てのアクセスを許可する『rwxrwxrwx』にしたい場合だったら『777』、誰でも実行は出来ないけど読み書きはできる『rw-rw-rw-』にしたかったら『666』、って感じで数字で指定してしまえばOKです。『/home/test/test.txt』をこにょこにょするとしたらこんな感じですね。

[root@localhost ~]# chmod 777 /home/test/test.txt
[root@localhost ~]# ls -al /home/test/test.txt
-rwxrwxrwx. 1 test test 78  9月 21 18:59 2018 /home/test/test.txt

ちなみに『chmod』の『パーミッション』の指定方法にはまた別の方法がございまして「オーナーとかグループとかその他とか全てとかを指定して更に付加とか削除とか丸ごと書き換えとかを指定して更に権限を指定する」なんて方法があったります。なんのこっちゃって話なのですがこんな表記になりますね。

[root@localhost ~]# chmod u=w /home/test/test.txt

こちらも慣れてしまうと便利な表記方法になりますのでこれについて詳しく見てみましょう。というか3桁の数字で『パーミッション』を表記するパターンはどうにもゲシュタルト崩壊しがちなので著者は大体こっちを使っておるでございます。

というわけで上記の『u=w』なんて部分に注目しつつ以下の表を見て頂きたいのですが

u所有者(オーナー)を対象とする。
gグループを対象とする。
oその他を対象とする。
a全てを対象とする。
+指定した権限を付加する。
-指定した権限を削除する。
=指定した権限にする。要するに上書き。
r読み込み権限を付ける。
w書き込み権限を付ける。
x実行権限を付ける。

こんな感じで各パーミッションを指定できる感じになりますね。

例えばオーナーに書き込み権限を追加したいならば

[root@localhost ~]# chmod u+w /home/test/test.txt

になりましてオーナーに書き込み権限のみを許可した状態にしたいならば

[root@localhost ~]# chmod u=w /home/test/test.txt

ってすればOKです。『=』は要するに指定したオーナーとかグループとかに対するパーミッションを全て上書きって事になるのでこちらも覚えておいてください。

そして「複数指定したいぜー」って気分になったら以下のようにすればOKです。

[root@localhost ~]# chmod ug=rw /home/test/test.txt

こうする事でオーナーとグループに読み込みと書き込みの権限が設定されます。

ちなみにこの『u』とか『g』とかの順番は順不同でOKなので

[root@localhost ~]# chmod gu=wr /home/test/test.txt

ってしてしまってもOKです。

そしてオーナーとかグループとかに違う権限を同時に指定したいぜーって気分になったら『,』を使いましょう。こんな感じですね。

[root@localhost ~]# chmod u=wr,g=w /home/test/test.txt

これで同時に指定する事ができます。ちなみに引数で指定するという都合上、『,』の前後に半角スペースは置くことはできませんので以下はエラーになっちゃいます。ここはご注意ですね。

[root@localhost ~]# chmod u=wr, g=w /home/test/test.txt

多分3桁の数字で指定するよりもこっちの方が使いやすいと思うので著者的にはこちらの方がおすすめでございますね。

というわけでここまでお読み頂きありがとうございました。

多分このくらいの知識があればUNIX及びLinuxの基本的なとこは余裕で扱えるようになっているのではないかと予想しておりますがいかがでしょうか。

また時間ができ次第応用的な部分も記事にしていきたいと思いますので今後共当サイトを宜しくお願い致します。

ではではこの辺で。またどこかでお会いしましょう。

This article was written by Sakurama.

Author's beloved small mammal

桜舞 春人 Sakurama Haruto

A Tokyo-based programmer who has been creating various content since the ISDN era, with a bit of concern about his hair. A true long sleeper who generally feels unwell without at least 10 hours of sleep. His dream is to live a life where he can sleep as much as he wants. Loves games, sports, and music. Please share some hair with him.

If you find any errors or copyright issues, please .