気の向くままに辿るIT/ICT/IoT
ファイル

PERMISSION/パーミッション/許可

ホーム前へ次へ
ファイルモードビットのパーミッションとは?

PERMISSION パーミッション/許可

パーミッションとは

 サーバ内のファイルの利用における権限の「許可」の事です。

 音楽や画像などをCDやDVDに録音・録画などを楽しんでいらっしゃる方はご存知だと思いますが、『CD-R』『DVD-R』とか『CD-RW』『DVD-RW』とかいった空のCDが販売されていますよね。

 あのCDやDVDのあとについている『-R』や『-RW』は「読み取るだけ、つまり1度書き込んだらそれっきり再生のみ」や「何回も書いたり読んだり、つまり録音再生が可」といった意味ですよね。

 パーミッションも同じ考え方です。というよりパーミッションの表記法が使われているといった方が正しいですが。

 また、UNIXLinuxといったOSをご利用の場合やscript スクリプトCGI、FTP(FTP超初心者 / 初級者編ftp/ftps/sftp/scpなど中級者編)でもパーミッションは欠かせませんよね。

 概略は以下のとおりです。

◆パーミッション設定


サーバ内のファイルに対して

  ・読み取る権限(r)
  ・書き込む権限(w)
  ・実行する権限(x)

  を

  ・USER(u) →ファイル作成者
  ・GROUP(g)→Webサーバ上の同じスペースを共有している人
  ・OTHER(o)→その他のみんな
  ・ALL(a)  →全てのみんな

に「許可」する(割り振る)事をパーミッションの設定といいます。

 これらは正確にいうとファイルシステムによる権限を許可するか否かの許可設定です。

 UNIX系のコンソールで『ls -l』などを実行するとファイル一覧が表示されますが一番左側に『-rwxr-xr-x』などと表示されているのをご覧になったことがあるかと思います。

 これはその行に表示されているファイルに対する権限を表示したものなのです。

 この『-rwxr-xr-x』は実は大きく4つのエリアに分けることができ、最初の『-』はディレクトリ(d)やシンボリックリンク(l/小文字のエル)等であった場合に相応の文字が設定される表示領域です。

 ディレクトリやリンクでなくファイルである場合は何も設定がない意味で「-」となり、先頭以外にに見られる「-」は該当箇所の権限が許可されていない事を表します。

 以降は3文字ずつ分割でき、それぞれ『rwx』『r-x』『r-x』となります。

 ここでピンときた方もいらっしゃることでしょう。

 そうです、この表示には前述の


『読み取る権限』『書き込む権限』『実行する権限』

が順に並んだものが3つあるという規則性があるのです(個々のビットはファイルモードビットと呼ばれる場合があります)。

 なぜ3つか、そうですね


USER(u)・GROUP(g)・OTHER(o)

の事です。

 ですから前述の『-rwxr-xr-x』は


1桁め   『-』:ファイルである(ディレクトリやシンボリックリンクでない)
2~4桁め『rwx』:USER(u)は読み取り・書き込み・実行が可
5~7桁め『r-x』:GROUP(g)は読み取り・実行が可
8~10桁め『r-x』:OTHER(o)は読み取り・実行が可

という意味だったのです(この2ケタめ~10ケタめの9ケタ(ビット)をファイル権限の許可設定ができるビットという意味でファイルパーミッションビットと呼ぶことがあり、他方、特殊モードビットというものも存在しますがここでは気にする必要はありません)。

 CGIスクリプトファイルについて言えば、作成したあなたはUSER(u)であり、他のGROUP(g)・OTHER(o)(・ALL(a))への権限としてそれぞれ誰が


[ r ]ファイルを読むこと
[ w ]書き込むこと
[ x ]実行すること

ができるかできないかを設定することになります。

 但し、これらはファイルについてであり、ディレクトリの場合は、意味が少し違ってきます。


ディレクトリの場合

[ r ]カレントディレクトリの一覧閲覧可
[ w ]カレントディレクトリ内でファイルの新規作成、修正、削除可
[ x ]カレントディレクトリへの移動とカレントディレクトリ検索可

 ディレクトリのパーミッションは、そのディレクトリ内のファイルのパーミッションより優先されます。

 仮にあるディレクトリで『--x』と実行権限だけが許可されている場合、『r』が無効なので「一覧」はできませんが、存在するファイル名を知っている且つそのファイルに実行権限[ x ]が許可設定されている場合はそのファイルを実行することができます。

 これは例えば、formのactionに設定されているCGIスクリプトファイル等です。

 どのように権限を許可・許可の取り消しをするかというとサーバ上では

◆権限を許可する場合『+』を使用


g+x    ←GROUP(g)に実行権限を付与(許可)


◆権限を許可を取り消す場合『-』を使用


g-x    ←GROUP(g)から実行権限の許可を抹消(取り消す)

 因みに『ALL(a)』は、「USER(u)・GROUP(g)・OTHER(o)」の全てを指すワイルドカードで以下は、


a-x

 『「USER(u)・GROUP(g)・OTHER(o)」から実行権限の許可を抹消』することを指示しています。

 また、この『rwx』という3つの組み合わせは8進数で表現されることもあります。

 例えば、以下は


777

 『「USER(u)・GROUP(g)・OTHER(o)」は読み取り・書き込み・実行が可』を示したものです。

 つまり『777』という各桁1桁が各々『読み取り・書き込み・実行』を指しており、1桁目が『USER(u)』2桁目が『GROUP(g)』3桁目が『OTHER(o)』を指しています。

 但し、この設定はセキュリティ上、一番甘い設定となりますので、誰でも何でも出来てしまうこの設定を必要とするケースはほとんどないでしょう。

 同じように


『USER(u)は読み取り・書き込み可』
『GROUP(g)・OTHER(o)は読み取り可』

644




『USER(u)・GROUP(g)・OTHER(o)は読み取り・書き込み可』

666




『USER(u)は読み取り・書き込み・実行可』
『GROUP(g)は全て不可』
『OTHER(o)は読み取り・書き込み可』

705




『USER(u)は読み取り・書き込み・実行可』
『GROUP(g)・OTHER(o)は読み取り・書き込み可』

755

 8進数を使ったサーバ上での権限設定には


  chmod

を利用して


  chmod 700 ファイル名
または
  chmod 0700 ファイル名

などとします。

 これらは8進数(進数・進法)とは何かを学んでから覚えるのはもちろん素晴らしいですが、FFFTPなどのFTPソフトなどでファイルの属性変更を行う際、視覚的に理解できるようなつくりになっているので試してみるといいでしょう。

UNIX/Linuxのパーミッションの考え方

 より詳しくは、ファイルパーミッションビットパーミッションモードumaskとchmod/パーミッション設定をご参照ください。

ホーム前へ次へ