権限(パーミッション)と chmod

  


▼オーナ,グループ,アザー

  • Linux(UNIX) の全てのファイルやディレクトリには,オーナーとグループが存在する(プロセスにも存在する).

   1. オーナ,所有者(owner)  そのファイルの持ち主
   2. グループ  そのファイルが属するグループ

  • ファイル,ディレクトリのオーナー,グループは ls -l コマンドで表示できる.
  • ホームディレクトリの .bashrc オーナとグループを調べてみよう.

 $ ls -l .bashrc
 -rwxr-----    1 iseki    users        1022 Jun  5  2006 .bashrc
  • この場合,ファイル .bashrc のオーナーは iseki で,所属するグループ users である.
  • 貴方のホームディレクトリの オーナとグループを調べてみよう. ls -ld ~


▼ファイルへのアクセス権限

  • ファイルにはアクセス権限(パーミッション:permission)が存在する.
  • 上記の例では -rwxr----- がアクセス権を表す
      最初の1文字: - はファイルの種類を表す(-は普通のファイル.dの場合はディレクトリ)
      次の3文字:rwx はファイルのオーナー iseki に対するアクセス権
      さらに次の3文字:r-- はファイルと同じグループ users に属するユーザに対するアクセス権
      最後の3文字:--- はその他のユーザに対するアクセス権

  • アクセス権のそれぞれの文字は [読み取り許可] [書き込み許可] [実行許可] を表す.
      ユーザ isekirwx なので,このファイルに対して 読み取り,書き込み,実行 が可能.
      グループ uers に属するユーザは r-- なので,このファイルに対して 読み取りのみ が可能.
      その他のユーザは --- なので,このファイルに対して 全てが禁止 ちなる.
      もし iseki がグループ users にも属している場合,オーナー権限の方が優先される.
      
  • は,一般ファイルの場合は 実行可能 だが,ディレクトリの場合は チェンジディレクトリ可能 となる.
  • 従って,もし貴方の所有する,ファイルのアクセス権が -rw-rw-rw-となっていたり,ディレクトリのアクセス権が
    -rwxrwxrwx となっていたら,それは大問題である.

 $ find ~ | xargs ls -l | grep "rw[sx-]rw[sx-]rw"   xargs コマンドについては各自調べる.
  • 「xargs: シングル quote が一致しません」 とエラーが出る場合,

 $ find ~ -print0 | xargs -0 ls -la | grep "rw[sx-]rw[sx-]rw"

としてみる.これは、空白を含んだファイル名(Windowsファイルなど)があると、
xargsがファイル名の区切りを間違えるためである。

演習

  • 色々なファイルのオーナとグループを調べてみよう.
  • 色々なファイルのアクセス権限を調べてみよう.


 


属性の変更

▼オーナーの変更

  • オーナの変更には chown コマンドを使用する(ただしrootしか実行できない)

    # chown [-R] <変更するユーザ名> <ファイル名>   

    ファイル名にディレクトリを指定して -R を付けると,ディレクトリ以下の全てのファイルにコマンドが作用する.

    # chown iseki /tmp/iseki.dat  /tmp/iseki.dat の持ち主を iseki に変更する 


▼グループの変更

  • グループの変更には chgrp コマンドを使用する(ただし,自分の属するグループ間でしか変更できない.rootは全てのグループを設定可能)

    # chgrp [-R] <変更するグループ名> <ファイル名>

    # chgrp users /tmp/users.dat  /tmp/users.dat のグループを users に変更する 
    # chgrp -R users /home/guest  /home/guest 以下のファイル,ディレクトリのグループを usersに変更.
    


▼権限の変更

  • 権限の変更には chmod コマンドを使用する

# chmod [-R] <変更オプション> <ファイル名>

変更オプションは   設定対象   設定操作   アクセス権の種類

          

$ chmod a+rx  /tmp/com.sh       /tmp/com.sh を全てのユーザに対して,読み込み,実行可能にする.
$ chmod a+rx,a-w /tmp/com.sh  上記の設定に加えて,全てのユーザに対して書き込みを禁止する.
$ chmod u+x test.sh                  test.sh をオーナが実行可能なように設定する.(俗に言う,実行bitを立てるというやつ)
$ chmod g-rwx,o-rw,o+x ~/public_html public_html に対する一般的なパーミッション.Webサーバプログラム(アザー)がディレクトリの中に入れるようにする.
# chmod -R u+rwx /home/iseki   /home/iseki 以下の全てのファイルに対して,オーナが読み書き実行が可能できるようにする
  • 初心者のうちは,変更オプションに数字を使用しないこと.理由は 間違い易い から.

 


特殊なアクセス権

u+s SUID(Set User ID)

  • そのファイルを実行した場合,実行者の権限ではなく,ファイルのオーナの権限でプログラムが作動する.

 

g+s SGID(Set Group ID)

  • ファイル:そのファイルを実行した場合,実行者のグループ権限ではなく,ファイルのグループ権限でプログラムが作動する.
  • ディレクトリ:そのディレクトリのなかにサブディレクトリやファイルを作成した場合,グループ情報を引き継ぐ


o+t (スティッキ-ビット)

  • ファイル:プログラムがメモリ内にキャッシュされる(最近はこの指定が無くてもキャッシュされるのであまり意味はない)
  • ディレクトリ:/tmpディレクトリなどで,誰でも書き込みが可能だが,削除はファイルのオーナか rootしかできないように設定することができる.


演習

  • 兎に角,いろいろ試してみる.

最后修改: 2014年04月18日 星期五 16:51