【パーミッション】
■パーミッションとはファイルやディレクトリごとに
読む権利
書いたり消したりする権利
実行する権利
の3種類のパーミッションを設定することができる。
読む権利
書いたり消したりする権利
実行する権利
の3種類のパーミッションを設定することができる。
サーバは不特定多数の人が同時に利用できる為
お互いが他人に迷惑をかけないようにするため設定をしている。
お互いが他人に迷惑をかけないようにするため設定をしている。
■ファイルやディレクトリに対して
【所有者】【グループ】【その他全員】
の3つのユーザーに分かれる。
それぞれのユーザー毎に
【読み】【書き】【実行】
の3つのパーミッションを設定できる。
【所有者】【グループ】【その他全員】
の3つのユーザーに分かれる。
それぞれのユーザー毎に
【読み】【書き】【実行】
の3つのパーミッションを設定できる。
【役割】
【読み】:ファイル又はディレクトリの閲覧。
この権利がないとファイルが存在しても閲覧不可。
この権利がないとファイルが存在しても閲覧不可。
【書き】:ファイル又はディレクトリに書き込み、削除が可能。
この権利が【グループ】【その他全員】にもついていた場合、
第三者からファイルを削除される危険があるので注意。
この権利が【グループ】【その他全員】にもついていた場合、
第三者からファイルを削除される危険があるので注意。
【実行】:ファイルの場合はプログラムを実行する権利。
ディレクトリの場合は中に移動する権利のことを指します。
ディレクトリにこの権限がないと内容を見ることが出来ない…。
ディレクトリの場合は中に移動する権利のことを指します。
ディレクトリにこの権限がないと内容を見ることが出来ない…。
【パーミッショの記号】
パーミッションの【読み】【書き】【実行】
の3つの実行権は以下の記号で表されます。
の3つの実行権は以下の記号で表されます。
読み ⇒ r
書き ⇒ w
実行 ⇒ x
書き ⇒ w
実行 ⇒ x
これを各ユーザーと合わせる。
所有者 | グループ | その他全員 | |
読み | r-- --- --- | --- r-- --- | --- --- r-- |
書き | -w- --- --- | --- -w- --- | --- --- -w- |
実行 | --x --- --- | --- --x --- | --- --- --x |
1文字目から3文字目が【所有者】の権限
4文字目から6文字目が【グループ】の権限
7文字目から9文字目までが【その他全員】の権限
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となる。
【所有者】:「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だとして以下のコマンドを実行する。
既存のパーミッションを[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がセットされたファイルは誰が実行しても所有者権限で動作します。(所有者が実行していることになる)
実行したユーザーではなく、そのファイルの所有者の権限で実行する。
passwdコマンドで一般ユーザがパスワードを変更する場合、
/etc/shadowファイルを書き変えなければいけないが、
/etc/shadowファイルに一般ユーザの書き込み権限は与えられていないため書き込むことはできない。
これはSUIDによって解決されている。
SUIDがセットされたファイルは誰が実行しても所有者権限で動作します。(所有者が実行していることになる)
SUID を設定するには、chmod コマンドを実行する際に、
ファイル所有者のアクセス権を設定する引数として、「s 」あるいは、「4000 」を指定。
ファイル所有者のアクセス権を設定する引数として、「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グループのメンバとして動作する。
誰がそのファイルを実行しても所有グループの権限で動作する。
(所有グループのメンバが実行していることになる)
よって所有グループが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」を付加し付加する。
Stickyでは、アルファベットに「t」を用い、
数値で表現する場合は「1000」を付加し付加する。
$ chmod 1777 program もしくは $ chmod o+t program $ls -l drwxrwxrwt 2 root root 4096 6月 19 11:36 program
その他のユーザの実行権限の部分が" t "となっていればスティッキービットがセットされている。