【Linux】chmodコマンド-パーミッションの考え方

linux

ファイルのパーミッションとは

chmodコマンドの前にファイルのパーミッションって何?という方も多いと思いますので、まずは最初にパーミッションについて説明致します。パーミッションはログインしているユーザの「所有者・グループ」に応じてファイルを「参照できるか」「更新できるか」「実行できるか」を制御することができます。

例えば、自分がログインしているのが、「ganmo」ユーザだとすると以下の「test.sh」「aaa.txt」ファイルを参照・更新することができます。ただ、「test」ユーザ等別のユーザだと「test.sh」は参照・更新できますが、「aaa.txt」は参照しかすることができません。なぜ以下の情報で参照や更新権限と分かるかを説明していきます。

[ganmo-PC unix]$ ll
total 2
-rw-r--r-- 1 ganmo ganmo 10 Jun  5 16:55 aaa.txt
drwxr-xr-x 1 ganmo ganmo  0 Jun 13 19:28 test
-rwxr-xr-x 1 ganmo ganmo 40 Jun  5 21:01 test.sh
[ganmo-PC unix]$

参照・更新できるかは、上記の行の一番左の青字の「-rw-r–r–」で決まります。
一番左の「rwx」の箇所をパーミッションと言います。それぞれ「rwx」には以下の意味があります。

r :数字で表すと4読み取り権限
w:数字で表すと2書き込み権限
x:数字で表すと1実行権限

「rwxrwxrwx」を左から順に3つに分割して「所有者」「所有グループ」「その他」の所有者の権限を表します。つまり、一番左の「rwx」と記載がある場合、所有者が読み取り権限・書き込み権限・実行権限のすべてを持つことになります。

ganmoユーザの場合、「aaa.txt」は赤字の部分からファイルの所有者となるので、所有者の権限を示す「rw-」の権限を持つことになります。

testユーザの場合、「aaa.txt」は赤字の部分からファイルの所有者ではないので、グループの権限かその他の権限扱いになります。testユーザのグループがganmoの場合は、真ん中の「r–」グループが違う場合も、一番右の「r–」に今回はなるので、権限は変わりませんね。。どちらも読み取りの権限しかないです。

ファイルへのアクセスの権限は「パーミッション」と「ファイルの所有者・グループ」で制御することができます。今回のchmodコマンドは「パーミッション」を変更するコマンドになります。

※「-rwxrwxrwx」の一番左は「-」か「d」が設定されます。「-」の場合はファイルを指し、「d」の場合はディレクトリを指します。

chmodコマンド

chmodコマンドは「change mode」の略になります。上記でも説明しましたが、「ファイルのパーミッション」を変更するコマンドになります。使用方法やオプションについて説明します。

chmodコマンドのオプション

chmodコマンドのオプションは色々ありますが、使用頻度の高いオプションは「-R」だけだと思います。

オプション説明
-fエラーメッセージを表示しない
-cコマンド実行時に変更があったときのみ結果を表示
-vコマンド実行時に詳細を表示
-Rディレクトリ内の複数のファイルも変更対象とする

chmod -fオプション

-fオプションはパーミッションを変更した際に、失敗してもエラーメッセージを出力しません。
-fオプションを付与することで以下のようなメッセージが出力されなくなります。

[ganmo-PC unix]$ ll
total 1
-rw-r--r-- 1 ganmo ganmo 10 Jun  5 16:55 aaa.txt
[ganmo-PC unix]$ chmod 755 bbb.txt
chmod: `bbb.txt'にアクセスできません:そのようなファイルやディレクトリはありません。

chmod -cオプション

-cオプションはパーミッションに変更があった場合に、変更があった旨のメッセージを出力します。

[ganmo-PC unix]$ ll
total 1
-rw-r--r-- 1 ganmo ganmo 10 Jun  5 16:55 aaa.txt
[ganmo-PC unix]$ chmod -c 755 aaa.txt
`aaa.txt'のモードを0644(rw-r--r--)から0755(rwxr-xr-x)へ変更しました。

chmod -vオプション

-vオプションは変更があった場合、エラーがあった場合どちらでもメッセージを出力します。
以下のコマンドで指定している「*(アスタリスク)」は、すべてを意味します。今回は「aaa.txt」と「bbb.txt」という意味になります。

[ganmo-PC unix]$ ll
total 1
-rw-r--r-- 1 ganmo ganmo 10 Jun  5 16:55 aaa.txt
-rw-r--r-- 1 ganmo ganmo 10 Jun  5 16:55 bbb.txt
[ganmo-PC unix]$ chmod -v 755 *
`aaa.txt'のモードを0644(rw-r--r--)から0755(rwxr-xr-x)へ変更しました。
`bbb.txt'のモードを0644(rw-r--r--)から0755(rwxr-xr-x)へ変更しました。

chmod -Rオプション

-Rオプションはディレクトリ配下のファイルもすべてパーミッションを変更できます。一括でパーミッションを変更する時に役立ちます。chmodコマンドの中で一番使用頻度の高いオプションに当たると思います。

[ganmo-PC test]$
[ganmo-PC test]$ ls -ltR folder
folder:
total 0
-rw-r--r-- 1 ganmo ganmo 0 Jul 18 14:22 ccc.txt
-rw-r--r-- 1 ganmo ganmo 0 Jul 18 14:22 bbb.txt
-rw-r--r-- 1 ganmo ganmo 0 Jul 11 21:21 aaa.txt
[ganmo-PC test]$
[ganmo-PC test]$
[ganmo-PC test]$
[ganmo-PC test]$ chmod -R 755 folder
[ganmo-PC test]$
[ganmo-PC test]$
[ganmo-PC test]$ ls -ltR folder
folder:
total 0
-rwxr-xr-x 1 ganmo ganmo 0 Jul 18 14:22 ccc.txt
-rwxr-xr-x 1 ganmo ganmo 0 Jul 18 14:22 bbb.txt
-rwxr-xr-x 1 ganmo ganmo 0 Jul 11 21:21 aaa.txt
[ganmo-PC test]$
[ganmo-PC test]$

最後に

私はSierとして9年間働いて、色々なプロジェクト関わっていますが、今までの開発は全てLinuxサーバになります。周りの方に話を聞いても今までの開発がWindowsサーバではなくLinuxサーバの方が多いという方の方が多い気がします。

Linuxについて詳しくなれば転職等に有利になると思うので、是非勉強しましょう!

世界的に有名なオンラインサイトで勉強しよう!

プログラミングの勉強や、Linux・Windowsの勉強等したい時に、参考書を購入して勉強することが多いと思いますが、参考書を買うぐらいならオンラインサイトで勉強した方がいいです。現役エンジニアの生の声を聞くこともできますし、初学者の方からベテランの方まで勉強できます。私は、世界的に有名な「Udemy」をおススメします。気になる方は確認してみてください。

Linuxを勉強して転職しよう!

エンジニアは転職してなんぼの職種です。就職難の昨今でもエンジニアは現場に人が足りていません。そのため、ある程度のお金を払っても入社してくれる方を探している企業が多いのが現状です。
また、会社にもよりますが、多くの会社は入社してから数年間は雀の涙程度の給料しかあがっていきません。ただ、転職することで、100万円単位で年収が上がっていくこともざらにあります。
エンジニアは転職してキャリアアップしていく職種と言えます。

技術本を読んで知識をつけよう

IT関連の勉強を始めようと思ったとき、参考書を購入する方が大半だと思います。私も参考書を購入して、いつも勉強を始めています。最終的には見ないこともありますが、勉強を始めるきっかけに最初に参考書を購入しています。本屋にいっても大きな本屋に行けば色々なものが売っていますが、小さい本屋だと、自分が欲しい関連の本がほとんどなかったりします。そんな時に私はSEShopを使います。SEShopはITに特化した本のオンラインサイトになります。AmazonよりもIT関連の本については品揃えもいいと思いますので、気になった方は確認してみてください。

最近は、本を持つ人も少なくなりましたが、PDFで販売もしているので、スマホやタブレットにも対応しています。本を購入する場合でも送料無料です!!

コメント

タイトルとURLをコピーしました