この記事ではLinuxでのファイルの権限設定について触れたいと思います。
アプリをインストールして使う場合、権限設定不要で動くことも多いです。
しかし、設定ファイルを自分で作ったときなどにそのファイルの権限設定が合わないためにアプリが動かないといったことが起きます。
このような際に対応するためにも権限設定については知っておいて損はありません。
この記事で行うこと
- Linuxの権限について
- ユーザ
- グループ
- ファイルのパーミッション
- 権限設定コマンドの解説
- chown
- chmod
1. Linuxnお権限について
Linuxではユーザーとグループという概念があります。
1-1. ユーザ
ユーザは特定の個人を指します。
とはいえ実際の人でなくても、例えばアプリケーションなんかもユーザを持っていたりします(システムアカウントといいます)。
ユーザはコマンドを実行できる主体と考えることができます。
つまり、ユーザでなければコマンドを実行できません。
これだとアプリケーションが何かしらのコマンドを実行したいときに困ってしまいます。
なので、アプリケーションもシステムアカウントを持っているのです。
1-2. グループ
グループはユーザをひとまとめにした物を指します。
代表的な例だと、rootになれる管理者ユーザを集めたwheelグループがあります。
またユーザを作ると、同時にユーザ名と同じ名前のグループができます。(例えばyutoといユーザを作ると、同時にyutoというグループができます)
グループは複数のユーザを一纏めにしますし、ユーザは複数のグループに属せます。
グループとユーザはいわゆる多対多の関係です。
1-3. ファイルのパーミッション
各ファイルは「所有者」と「グループ」と「パーミッション」を持っています。
「所有者」と「グループ」はそれぞれファイルを所有するユーザ、グループを表しています。
「パーミッション」はそのファイルへのアクセスをどこまで許すかという物を「所有者」「グループ」「その他ユーザ」毎に設定することになります。
どこまで許すかという部分は以下の組み合わせで設定できます。
1 | 実行権限 (eXecute) | x |
2 | 書き込み権限 (Write) | w |
4 | 読み取り権限 (Read) | r |
例えば、このファイルは誰でも読み取れるけど、書き込むのはグループに所属している人だけで、実行は自分だけといった設定ができます。
さて、こうやって毎回「このファイルは誰でも読み取れるけど、書き込むのはグループに所属している人だけで、実行は自分だけ」と書くのは面倒です。
なので、左から順に所有者に許可されたこと、グループに許可されたこと、その他ユーザに許可されたことを並べてみましょう。
また、より短縮するために許可されたことの内容をアルファベット一文字で表してみましょう。(上表の右にあるアルファベット)
rwxrw-r--
ファイルのあるディレクトリで ls -l
を実行すると、各ファイル名の左側に同じような表記があると思います。
これはそのファイルのパーミッションを表していたのです。
また、もっと短縮することができます。
上記の表の左側にある数字を足し合わせて権限を表すのです。
実行、書き込み、読み取りが全てできる場合は1+2+4=7、書き込みと読み取りができる場合は2+4=6、実行と書き込みのみできる場合は1+2=3といった具合です。
これで表すと、上記の表示は764と表せます。
これはパーミッションの設定時に使うので覚えておいてください。
2. 権限設定コマンドの解説
権限設定は以下の2つのコマンドで行うことができます。
2つだけなので、ぜひ覚えてください。
2-1. chown
ファイルの所有者とグループを変えられます。(本来はグループを変えるための chgrp
というコマンドがありますが chown
で両方変えられるのでこっちだけ覚えていれば大丈夫です)
CHange OWNerの略です。
使い方は以下となります。
# chown [オプション] [変更後の所有者]:[変更後のグループ] [ファイル名]
またよく使われるオプションは -R
があります。
これはディレクトリを chown
で指定したときに、中身も全て同じように所有者変更を行うという物です。
なお、小文字の -r
ではオプションとして扱われずにエラーになるので必ず大文字で入力してください。
2-2. chmod
ファイルのパーミッション設定を変えられます。
CHange MODeの略です。
使い方は以下となります。
# chmod [オプション] [変更後のパーミッション] [ファイル名]
変更後のパーミッションは3桁の数字で表すようにしてください。(1-3の最後で扱ったアレです)
またよく使われるオプションは -R
があります。
これはディレクトリを chmod
で指定したときに、中身も全て同じように所有者変更を行うという物です。
なお、小文字の -r
ではオプションとして扱われずにエラーになるので必ず大文字で入力してください。
chmodを使った権限設定方法には「○○の権限を外す」「○○の権限を付ける」のように設定できる他の書き方もあるのですが、ここでは触れません。気になる方は調べてみてください。
まとめ
今回はLinuxの権限の基本とファイルへの権限設定について説明しました。
他にも権限設定だと「新たにグループを作成する」「ユーザをグループに追加する」などグループ周りのことがあるのですが、基本的に全てを一人で管理する自宅サーバではあまり必要とならないので割愛します。
興味のある方はぜひ調べてみてください。
アプリが動かないとなった時、設定ファイルの中身が間違っていなければ次に疑うべきは権限設定です。お気を付けを。