パーミッションは日本語で言うとアクセス権限と言ったところでしょうか。 まず、なぜそのような機能が必要になったのかと言うことから説明します。
LinuxはUnixと呼ばれるOSが元になっています。 昔はコンピュータは高価なものでした。 個人所有どころか一家に一台なんてとんでもないくらい高かったみたいです。 そのため、一台のコンピュータを複数人で使用していました。 Unixはその時代から使われていたものなので、 マルチユーザー機能を備えているのは当然と言えるでしょう。 Unixを元にしたLinuxもマルチユーザー機能を備えています。
複数人で使用すると言うことは、一台のコンピュータにいろんな人のデータが 保存されていると言うことです。もちろん、他人に勝手にデータを見られたり、 プログラムを実行されたりすると困ります。 そのため、パーミッションと言う概念があるわけです。
コンピュータにログインして自分に与えられた領域で、 コンピュータに備わっている機能を利用するだけの人を一般ユーザーと言います。 コンピュータは使うだけでなく、管理も必要です。管理とは、 プログラムのインストール、セキュリティ対策、一般ユーザーの追加、電源を切る、 ハードウェアの変更等です。それらの管理を行う人をスーパーユーザーと言います。 一般ユーザーはコンピュータの管理を行う権限を持ちません。 他人のファイルを操作する権限も持ちません。 自分に与えられた領域で、自分のファイルを操作するだけです。 一方、スーパーユーザーなら何でもできます。 一般ユーザーのファイルを操作することもできます。
グループと言う概念もあります。 時には複数人で作業を行いたくなることもあるでしょう。 その時には、ファイルを複数の一般ユーザーが操作できると便利です。 そこでグループです。グループに登録されれば、 そのグループに許可をされているファイルを操作することができます。
パーミッションの話では、3つの立場の人が登場します。 ファイルの所有者User, さっき説明したGroup, その他の一般ユーザーをまとめてOtherです。 そして、3つの権限があります。 ファイルの読み込みRead, ファイルの書き込みや削除Write, ファイルの実行 eXecuteです。
ls -lの様にlsコマンドに
"-l"オプションをつけるとファイルの詳細が表示されます。
すると、一番左に-rw-r--r--
の様に表示されているはずです。これがそのファイルのパーミッションです。
その隣に数字があって、そのとなりにファイルの所有者が表示されています。
その隣がファイルのグループです。
パーミッションの読み方を説明しましょう。
rはRead,wはWrite,xはeXecuteです。
-はその権限が与えられていないことを意味します。
すべての権限が与えられていれば-rwxrwxrwxの様に表示されます。
まず、一番左の1文字は気にしないでください。
次の3文字はファイルの所有者に対して与えられている権限です。
その次の3文字はグループに対して与えられている権限です。
残りの3文字はその他のユーザーに対して与えられている権限です。
-rw-r--r--の場合だと、
ユーザーは読み書きができて、グループとその他のユーザーは読み込みのみできます。
パーミッションの変更にはchmodコマンドを使います。
chmod {ユーザー}{+ or -}{権限} {ファイル名}
{ユーザー}には、u,g,oを指定します。uはUser,gはGroup,oはOtherです。 {権限}にはr,w,xを指定します。rは読み込み,wは書き込み,xは実行です。 {+ or -}には、{ユーザー}に対して{権限}を付与する場合は+を、 {権限}を剥奪する場合は-を指定します。 例をあげて説明してみます。
file1の現在のパーミッションがrw-r--r--となっていました。
chmod u+x file1を実行するとrwxr--r--となります。
ファイルの所有者にファイルを実行する権限が与えられました。
実行形式のファイルや、スクリプトの場合この実行権限が無いと実行できません。
chmod go-r file1を実行するとrwx------となります。
グループとその他のユーザーはfile1を見ることさえできなくなりました。
見せる必要が無ければこの方がいいでしょう。
chmod go+rwx file1を実行するとrwxrwxrwxとなります。
この状態であれば、file1を誰でも好きなように操作できてしまいます。
必要もなくこの状態にするのは望ましくないでしょう。
一般ユーザーは他のユーザーのファイルは操作できません。 しかし、管理者であれば誰のファイルでも自由に操作できます。 Linuxであれば管理者は大抵rootです。 ファイルの所有者やグループがrootになっていれば、 それは管理者でなければ操作できないと言うことです。