Linuxパーミッションの基本!設定方法も解説!
Linuxにはパーミッション(権限)があり、パソコンでファイルやディレクトリを操作するときに必要になります。ここではLinuxのパーミッションの基本的な説明から、パソコンでの設定方法を解説していきます。Linuxを操作する上で知っておいた方が便利ですよ。
目次
- 1Linuxのパーミッションとは?
- ・バーミッションとは何?
- 2Linuxのパーミッションの基本
- ・ファイルのパーミッションの意味
- ・ディレクトリのパーミッションの意味
- 3Linuxのパーミッションの見方
- ・パーミッションの確認コマンド
- ・ファイルタイプ
- ・パーミッション
- ・リンク数
- ・所有者
- ・グループ
- ・ファイルサイズ
- ・タイムスタンプ
- ・ファイル名
- 4Linuxのパーミッションの設定方法
- ・chmodコマンドの構文の基本
- ・パーミッションを数値で指定する方法
- ・パーミッションを記号で指定する方法
- 5Linuxのパーミッションの注意点
- ・書き込み権限がなくても削除できる
- ・ディレクトリの実行権限がない場合移動できない
- ・「777」の使いどころに気をつける
- 6Linuxのパーミッションでエラーが出た時の対処法
- ・「sudo」コマンドで対処する
- ・最後に
- ・合わせて読みたい!セキュリティに関する記事一覧
Linuxのパーミッションとは?
LinuxとはWindowsやMacなどと同じパソコンOSで、このLinuxでファイルやディレクトリを操作するときにはパーミッション(権限)が必要になります。
Wnidowsの場合は「管理者権限で実行」という操作で簡単に権限が実行できますが、Linuxの場合はパーミッションを設定しないと実行できません。
パーミッションは基本的にセキュリティのためにあり、必要以上にパーミッションであなた以外の他のユーザーがさまざまな動作ができないように設定するのが一般的です。
バーミッションとは何?
いろいろ調べた結果、Linux上のzipコマンドで作ったZipファイルは、External File Attributesという領域にパーミッション情報が格納されており、Linux上のunzipコマンドはそれを見て展開してくれるが、パーミッション情報が格納されていないZipファイルだとumaskの値が有効になるらしい。
— kazusato (@kazusato) February 17, 2018
Linuxのパーミッションとはパソコンでファイルやディレクトリを操作するために設定をしておく必要があるもののことです。
Windowsでは実行する権限を意識することはほとんどありませんが、Linuxではパーミッションを設定しないと操作できないことが多いです。
職場のパソコンOSがLinuxの場合や新しく買い替えたパソコンのOSがLinuxの場合は、パーミッションの基本的なことと設定方法を知っておきましょう。
ファイルやディレクトリを操作する権限
Linuxのパーミッションには3つの権限があり、readと呼ばれる読み取り権限、writeと呼ばれる書き込み権限、executeと呼ばれる実行権限です。
read、write、executeの3つの権限はLinuxでファイルを操作する場合と、ディレクトリを操作する場合では意味が違います。
読み込み、書き込み、実行とそのままの言葉の意味だと誤解したままパーミッションを指定すると、他のユーザーが思わぬ動作をファイルやディレクトリにしてしまい、パソコンのセキュリティ上の問題が起こる可能性があります。
所有者とグループのそれぞれに設定される
Linuxのパーミッションは所有者と所有グループ、それぞれ別に設定されます。別の設定とは例えば「index.html」というファイルがあった場合は、以下の表のようになることがあります。
所有者 | 権限は「読み込み」「書き込み」「実行」 |
所有グループ | 権限は「読み込み」「実行」 |
その他ユーザー | 権限は「読み込み」 |
同じファイルでも所有者か所有グループか、その他ユーザーかで実行できるパーミッションが違うこともあるのです。もちろん所有者、所有グループ、その他ユーザーがすべてのパーミッションができることもあります。
セキュリティを強化するために設定する
Linuxでパーミッションを変更すると、セキュリティを強化することができます。大切なパソコンのファイルを保護したい場合は、Linuxのパーミッションを変更しておきましょう。
セキュリティ性を高くしたい場合は、パーミッションで出来る動作をできるだけ少なくしてください。信頼している人しかファイルにアクセスできないという場合はすべてのパーミッションができるように設定しておきましょう。
ただすべての動作ができる状態はセキュリティ性がとても低いので、パソコンにセキュリティソフトをインストールしておいてください。
最初からLinuxを搭載しているパソコンを購入することもできますし、WindowsパソコンにLinuxをインストールして使用することもできます。
もしWindowsパソコンにLinuxをインストールして使用する場合は、今までWindowsパソコンで使っていたセキュリティソフトが削除されてしまうので、Linuxに新しくセキュリティソフトをインストールする必要があります。
セキュリティソフトをインストールするまでの間、大切なファイルが心配という場合も、パーミッションを変更してセキュリティ性を高めることができます。セキュリティ面に考慮してパーミッションを指定しないと、トラブルの原因になります。
Linuxのパーミッションの基本
Linuxのパーミッションの基本はファイルでのパーミッションの意味と、ディレクトリでのパーミッションの意味が違うということです。
ここではファイルのパーミッションの意味と、ディレクトリのパーミッションの意味の基本的な違いとは何かを説明していきます。
ファイルのパーミッションの意味
Linuxのパソコンでファイルをパーミッションするときの基本的な意味とは、以下の表のようになります。
読み込み(read) | catコマンドなどを利用してファイルを読み込む |
書き込み(write) | viエディタなどを使ってファイルを修正/セーブする |
実行(execute) | バイナリファイルなら、メモリに読み込み/実行 スクリプトファイルなら、プログラムに読み込み/実行 |
一般的に多く指定されるパーミッションは読み込みです。仕事でマニュアルなどのファイルを他の人と共有する場合は読み込みだけを許可すれば、他のユーザーにファイルの内容を変更される心配なく読んでもらえます。
Linuxでファイルのパーミッションを実行するとき、ファイルの種類がスクリプトファイルの場合は注意が必要です。
バイナリファイルの場合は特に注意がいりませんが、スクリプトファイルの場合はテキストファイルじゃないとパーミッションの実行ができません。
バイナリファイル | 画像、動画、音楽、プログラムなどの文字以外のデータ |
スクリプトファイル | 簡易的なプログラムのこと |
バイナリファイルとは、中身が文字以外のデータのファイルのことです。スクリプトファイルとは簡易的であれば中身は関係なく、スクリプトファイルに部類されます。
Linuxでパーミッションを実行できるのは文字だけのデータですので、設定するときは気を付けましょう。
ディレクトリのパーミッションの意味
ファイルでのパーミッションの意味とは上記のようなものですが、これがディレクトリになると意味が違ってきます。基本ですがLinuxのディレクトリとは、WindowsやMacでいうところのフォルダのことです。
読み込み(read) | ディレクトリ内のファイルを見る lsコマンドをディレクトリ内で実行する |
書き込み(write) | ディレクトリ内に新規ファイルを作成する |
実行(execute) | 現在位置のディレクトリを指定する |
ディレクトリでのパミッションで実行する場合、何段階があるディレクトリ構成の中で好きなディレクトリを現在位置に指定することができます。このことをカレントディレクトリといいます。
ファイルのパーミッションの場合は読み込みや書き込み、実行などの言葉からなんとなく連想できる動作ですが、ディレクトリのパーミッションの場合は、読み込みと実行が言葉とは全く違う意味の動作になるので気を付けましょう。
ディレクトリのパーミッションの設定を変更すると、ディレクトリ内のすべてのファイルの設定が変わってしまいます。ディレクトリのパーミッションはファイルのパーミッション以上に注意して変更しましょう。
特に書き込みを許可してしまうと新しいファイルを作成されてしまうので、ファイルでもディレクトリでも、書き込みは基本的に許可しないようにしてください。
Linuxのパーミッションの見方
Linuxのパーミッションを見るときは、どのような方法なのでしょうか?ここからはLinuxのパーミッションの見方を説明していきます。
パーミッションの確認コマンド
Linuxのパーミッションの見方にはコマンドを使います。Linuxで作成したファイルのパーミッションの見方は、読み込み(read)パーミッションなので「-lオプションをつけたlsコマンド」です。
表示されるデータフォルダを確認してみてください。コマンド画面の「合計」という左上の文字の下に表示されている10文字区切りの文字列がコマンドです。
ファイルタイプ
Windwosのファイル拡張子は「pdf」が多いですが、Linuxの場合は「sh」という拡張子が多いです。この拡張子はシェルファイルというファイルタイプのものです。
コマンドの一番最初の文字は、このシェルファイルを使っているのがファイルなのでディレクトリなのかを表しています。「d」と記載されていればディレクトリです。
パーミッション
パーミッションのコマンドの見方は下の表のようになります。アルファベットが表記されているパーミッションは使えるという意味です。
d | r | w | x | r | w | x | r | w | x |
ディレクトリ | 読み | 書き | 実行 | 読み | 書き | 実行 | 読み | 書き | 実行 |
< | 自分 | > | < | グループ | > | < | 他者 | > |
使えないパーミッションは「-」という表記になります。例えば所有者のみがすべてのパーミッションを使えて、所有グループは読み込み、実行しかできず、他のユーザーは読み込みだけという場合は「drwxr-xr--」とコマンドが表記されます。
所有者のパーミッション
コマンドの1文字目の見方はディレクトリの有無を確認します。「d」というアルファベットが表示されていればそのファイルにはディレクトリがあります。「-」と表示されていれば、そのファイルにはディレクトリがありません。
そしてコマンドの2文字目から4文字目までの見方は、所有者に許可されているパーミッションの確認です。順番に読み込み、書き込み、実行を表していて、アルファベット表記なら許可、「-」表記なら不可です。
グループのパーミッション
グループのパーミッションの見方はコマンドの5文字目から7文字目までです。ここにアルファベットか上記の表の数値が記載されていたら、パーミッションが使えます。
所有グループのパーミッションを指定すると、同じ会社の他の人たちにしてほしい動作を指定して、してほしくない動作を制限することができます。
その他のユーザーのパーミッション
その他のユーザーのパーミッションの見方は、コマンドの8文字目から10文字目までです。ここにアルファベットか数値が記載されていれば、そのパーミッションが見方ができます。
他のユーザーのパーミッションは基本的に読み込みだけにしておくことが多いです。書き込みや実行を許可してしまうとトラブルの原因になります。
リンク数
読み込み | 書き込み | 実行 |
数値 4 | 数値 2 | 数値 1 |
読み込み、書き込み、実行とそれぞれのパーミッションによってリンク数は決まっています。
コマンドの一区切りを絡むといいますが、リンク数はパーミッションに関するコマンドが表示されているカラムのとなりにスペースを空けて2番目のカラムに表示されている数値です。
リンク数の見方はパーミッションのカラムの隣の数値を見つけて、リンク数の合計数値を確認します。内訳は数値ではなく、パーミッションのコマンドから確認できます。
所有者
コマンドで先頭の10文字のカラムで始まるコマンドの3番目のカラムが、所有者のコマンドです。このコマンドは所有者であるあなたがLinuxに登録しているユーザー名が反映されます。
グループ
3番目のカラムで所有者のコマンドの隣に表示されているコマンドはグループ名です。グループ名もあなたが設定したものが表示さえるので、所有者名と同じように他のコマンドに比べて発見しやすいです。
ファイルサイズ
Linuxのコマンドで、4番目のカラムに表示されているのがファイルサイズです。ファイルサイズはバイトという単位で表されます。ファイルサイズの単位バイトはWindowsでも、Macでも使われている単位です。
タイムスタンプ
タイムスタンプはコマンドの5番目のカラムに表示されます。表示方式は「6月 13 14:04」です。見方は「6月13日14時4分」となります。Linuxのコマンドに漢字は他のコマンドでは表示されないので、見つけやすいです。
ファイル名
Linuxのコマンドで最後の6番目のカラムはファイル名です。Windwosのエクスプローラーの場合は、基本的に最初に表示されることが多いですが、Linuxのコマンドでは一番最後に表示されます。
Linuxのパーミッションの設定方法
Linuxのコマンドからパーミッションアドの情報を変更する場合は、chmodコマンドを指定します。ここからはchmodコマンドの指定方法を紹介していきます。
chmodコマンドの構文の基本
chmodコマンドの構文の基本は、引数を使います。chmodコマンドの引数で所有者、所有グループ、他のユーザーの中のどこのパーミッションに変更を加えるのかを指定するのです。
コマンドの書き方
chmodコマンドで引数を使って変更を加える方法はオプションを指定したり、chmodコマンドを細かく指定したりして変更していきます。
基本的にはパーミッションのコマンドの意味を知っていれば、簡単に指定できます。専門的な技術は必要ないのでエンジニアじゃなくても変更することができます。
オプション
chmodコマンドのオプションには、以下のようなものがあります。オプションを有効活用すると、chmodコマンドの変更が楽になります。
-R | ファイルとディレクトリを再帰的に変更する |
-v | 処理した内容を出力する |
-c | 変更が行われた場合のみ処理内容を出力する |
-f | ほとんどのエラーメッセージを出力しない |
オプションは上記の表の短いオプションで指定することもできますが、長いオプションで設定することもできます。
パーミッションを数値で指定する方法
パーミッションを数値で指定する方法は、以下のような数値を指定します。chmodコマンドの数値を入力するときは前後にスペースを空けないようにしましょう。
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
--- | --x | -w- | -wx | r-- | r-x | rw- | rwx |
パーミッションを記号で指定する方法
パーミッションをchmodコマンドを指定して変更する方法は数値だけではなく、chmodコマンドのアルファベットの記号を使う方法もあります。
u | g | o | a |
所有者 | 所有グループ | 他のユーザー | 全員 |
Linuxのパーミッションの注意点
Linuxのchmodコマンドを指定するパーミッションを変更するときは、注意点があります。ここからはchmodコマンドを指定するときの注意点について説明していきます。
書き込み権限がなくても削除できる
所有グループと他のユーザーに「書き込み」を許可しないように設定しても、ファイルを削除することができます。書き込みを許可していないからといって削除される心配がないとは限らないので、気を付けましょう。
ファイルやディレクトリへの書き込み許可は、データの書き込みではなく、削除、変更の許可も出していることになります。ファイル内容を変更されたくない場合は、読み込みだけ許可してください。
ディレクトリの実行権限がない場合移動できない
ディレクトリの実行権限がない場合は、ファイルを移動することができません。他のユーザーがファイルを移動する必要がある場合は、パーミッションの実行を許可しておきましょう。
「777」の使いどころに気をつける
Luinxのchmodコマンドのオプションには「777」というすべてのユーザー/グループに、すべての権限を開放するものがあります。
設定が楽で便利なオプションなので多用してしまう人がいますが、「777」をオプションにするとさまざまな操作をされてしまうのでできるだけ使用しないようにしましょう。
所有者、所有グループ、他のユーザーすべてのユーザーに、読み込み、書き込み、実行のすべての動作を許可してしまうと、そのファイルを閲覧できる人のすべてがあなたと同じように自由にファイルを扱えてしまいます。
これはセキュリティ性がとても低い状態なので面倒でも細かくコマンドを指定して、できる操作は必要最低限にしましょう。
Linuxのパーミッションでエラーが出た時の対処法
抑えておきたいLinux基礎コマンド
— suin❄️PHPでオブジェクト指向 (@suin) March 17, 2019
・find (ファイル検索)
・chmod (パーミッション変更, change mode)
・ls (ファイル一覧, list)
・echo (文字列を出力)
・mv (ファイル移動, move)
・rm (ファイル削除, remove)
・cat (ネコ)
・man (男)
・cd (コンパクトディスク)
もしオプションやchmodコマンドを指定してエラーが出てしまったときは、対処コマンドを指定しましょう。ここからはLuinxのパーミッションの対処コマンドを紹介していきます。
Linuxのパーミッションの対処コマンドを知っておくと、困った事態になったときにすぐに解決できます。
「sudo」コマンドで対処する
もしLuinxのパーミッションのコマンドを変更したときにエラーが発生してファイルが開かなくなったり、ファイルの中身が表示されなくなったりする場合は対処コマンドを指定しましょう。
ファイルにエラーが発生してしまった時の対処コマンドは「sudo」というコマンドを入力してください。エラーが発生しているまま放置していると、仕事や作業に支障が出てしまいます。エラーに気が付いたときにすぐに対処しましょう。
最後に
いかがでしたか?Linuxのパーミッションのコマンドを変更すると、ファイルの操作範囲を指定することができます。WindwosやMacとは違うシステムですが、覚えておきましょう!