アスタリスク インフラTECH wiki

パーミッション

最終更新:

manba

- view
メンバー限定 登録/ログイン

【パーミッション】


■パーミッションとはファイルやディレクトリごとに
読む権利
書いたり消したりする権利
実行する権利
の3種類のパーミッションを設定することができる。

サーバは不特定多数の人が同時に利用できる為
お互いが他人に迷惑をかけないようにするため設定をしている。

■ファイルやディレクトリに対して
【所有者】【グループ】【その他全員】
の3つのユーザーに分かれる。
それぞれのユーザー毎に
【読み】【書き】【実行】
の3つのパーミッションを設定できる。

【役割】

【読み】:ファイル又はディレクトリの閲覧。
     この権利がないとファイルが存在しても閲覧不可。

【書き】:ファイル又はディレクトリに書き込み、削除が可能。
     この権利が【グループ】【その他全員】にもついていた場合、
     第三者からファイルを削除される危険があるので注意。

【実行】:ファイルの場合はプログラムを実行する権利。
     ディレクトリの場合は中に移動する権利のことを指します。
     ディレクトリにこの権限がないと内容を見ることが出来ない…。

【パーミッショの記号】

パーミッションの【読み】【書き】【実行】
の3つの実行権は以下の記号で表されます。

読み ⇒ r
書き ⇒ w
実行 ⇒ x

これを各ユーザーと合わせる。
   所有者 グループ その他全員
読み  r-- --- ---   --- r-- ---   --- --- r-- 
書き  -w- --- ---   --- -w- ---   --- --- -w- 
実行  --x --- ---   --- --x ---   --- --- --x 

1文字目から3文字目が【所有者】の権限
4文字目から6文字目が【グループ】の権限
7文字目から9文字目までが【その他全員】の権限


パーミッションの表記は、数字で表すと下記になる。

読み込みを許可 書き込みを許可 実行を許可 全てを許可しない
r w x -
4 2 1 0

例えばパーミッションが「rwxr-xr--」のときは
【所有者】:「r=4」+「w=2」+「x=1」= 7
【グループ】:「r=4」+「w=なし」+「x=1」=5
【その他全員】:「r=4」+「w=なし」+「x=なし」=4
となるので、このパーミッションは754となる。


【パーミッションの変更方法】


FTPソフトで「FFFTP」から変更可能。
状況次第ではコマンド打つよりこっちの方が楽かも。

  • パーミッションを変更したいファイルを右クリック
  • 右クリックして出てきたメニューの中から「属性変更」をクリック
  • 3桁の数字が入力されている部分があるので数字を入力
  • OKボタンを押して変更終わり

■コマンドの場合

# chmod [オプション] [アクセス権(3桁数字形式)] [ファイル]

【オプション】
指定したディレクトリ直下の全ファイル
-R

記号を用いてパーミッションを変更する場合
【ユーザー】
所有者 u
グループ g
その他全員 o
全ユーザー a
【演算子】
既存の設定に追加 +
既存の設定から削除 -
権限の指定 =
【パーミッション】
読み取り許可 r
書き込み許可 w
実行許可 x

【使用例】
既存のパーミッションを[rw-r--r--]644だとして以下のコマンドを実行する。
chmod ugo+x [ファイル名]
これでパーミッションは[rwxr-xr-x]755になる。


【特殊なパーミッション】

SUID と SGID と Sticky

■SUIDとは

Set User ID の略で、SUID が設定されているコマンドやプログラムを実行すると、
実行したユーザーではなく、そのファイルの所有者の権限で実行する。
passwdコマンドで一般ユーザがパスワードを変更する場合、
/etc/shadowファイルを書き変えなければいけないが、
/etc/shadowファイルに一般ユーザの書き込み権限は与えられていないため書き込むことはできない。
これはSUIDによって解決されている。
SUIDがセットされたファイルは誰が実行しても所有者権限で動作します。(所有者が実行していることになる)

SUID を設定するには、chmod コマンドを実行する際に、
ファイル所有者のアクセス権を設定する引数として、「s 」あるいは、「4000 」を指定。

$ chmod 4755 program
  もしくは
$ chmod u+s program
$ ls -l
-rwsr-xr-x  1 root root 7806  6月 19 20:51 program

所有者の実行権限の部分が" s "となっていればSUIDがセットされている。

■SGIDとは

Set Group ID の略で、ファイルにSGIDをセットすることで
誰がそのファイルを実行しても所有グループの権限で動作する。
(所有グループのメンバが実行していることになる)
よって所有グループがrootであるならばそのファイルはrootグループのメンバとして動作する。

SUID と異なる点は、アルファベットに 「g」 を用い、数値で表現する場合は 「2000」 となる。

$ chmod g+s program
  もしくは
$ chmod 2755 program
$ ls -l
-rwxr-sr-x  1 root root 7806  6月 19 20:51 program

所有グループの実行権限の部分が" s "となっていればSUIDがセットされている。

■Stickyとは

スティッキービット(stickybit)が設定されているディレクトリでは、
書き込みが許可されたファイルであっても、
他のユーザーが所有しているものは削除できないようになる。

ファイルにスティッキービットをセットするには
Stickyでは、アルファベットに「t」を用い、
数値で表現する場合は「1000」を付加し付加する。

$ chmod 1777 program
    もしくは
$ chmod o+t program
$ls -l
drwxrwxrwt    2  root root  4096  6月 19 11:36 program

その他のユーザの実行権限の部分が" t "となっていればスティッキービットがセットされている。
目安箱バナー