chmod()とは? わかりやすく解説

chmod

(PHP 4, PHP 5)
chmod — ファイルのモードを変更する

説明

int chmod ( string filename, int mode )
filename で指定されたファイルのモードを mode で指定したものに変更しようと試みます。
mode は自動的には 8 進数と見なされないので注意してください。 このため、("g+w" のような)文字列は正常に動作しません。 意図した操作を行うには、mode の前にゼロ(0)を付ける必要があります。 <?php
chmod("/somedir/somefile", 755);  // 10 進数; おそらく間違い
chmod("/somedir/somefile", "u+rwx,go+rx"); // 文字列; 正しくない
chmod("/somedir/somefile", 0755);  // 8 進数; 正しいモードの値
?>

mode 引数は 3 つの 8 進法による数値で構成され、 所有者自信、所有者が属するグループ、その他のユーザーの順で アクセス制限を設定します。一つ一つの数字はそのターゲットに対し 許可を与えます。1 は実行権限、2 はファイルに対する書き込み権限、 4 はファイルに対する読み込み権限を与えます。 必要な権限にあわせ数値を加算してください。 許可モードに関する詳細は Unix システムの 「man 1 chmod」や「man 2 chmod」をご覧ください。
<?php
// 所有者に読み込み、書き込みの権限を与え、その他には何も許可しない。
chmod("/somedir/somefile", 0600);

// 所有者に読み込み、書き込みの権限を与え、その他には読み込みだけ許可する。
chmod("/somedir/somefile", 0644);

// 所有者に全ての権限を与え、その他には読み込みと実行を許可する。
chmod("/somedir/somefile", 0755);

// 所有者に全ての権限を与え、所有者が属するグループに読み込みと実行を許可する。
chmod("/somedir/somefile", 0750);
?>

成功した場合に TRUE を、失敗した場合に FALSE を返します。
注意: カレントのユーザは PHP を実行しているユーザです。 これは普通のシェルや FTP アクセスでのユーザとはたいてい違います。 たいていのシステムでは、ファイルの所有者のみがそのモードを 変更可能です。
注意: この関数では、 リモートファイル を 使用することはできません。これは、処理されるファイルがサーバの ファイルシステムによりアクセスできる必要があるためです。
注意: セーフモード が有効な場合、操作しようとしているファイルあるいは ディレクトリの UID(所有者)がスクリプトの実行ユーザと同じかどうかを PHP がチェックします。さらに、SUID・SGID や sticky ビットを 設定することはできません。
chown() および chgrp() も参照ください。
注意: この関数は Windows 環境にはまだ実装されていません。

chmod

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2019/10/28 04:58 UTC 版)

ナビゲーションに移動 検索に移動

chmod(change mode、チェンジモード)は、UNIXおよびUNIX系オペレーティングシステムにおけるシェルコマンドの一種である。ファイルディレクトリのファイルモード(ファイルパーミッションなど)を変更するのに使われる。

歴史

chmod コマンドは、AT&T の最初の UNIXResearch Unix V1)に既に備わっており、今も UNIX 系オペレーティングシステムで使われている。

使用法

chmod コマンドのオプション形式は次の通り。

$ chmod [options] mode file1 ...

現在のパーミッション設定を見るには、次のように入力する。

$ ls -l

オプション

主なオプションとして、次のものがある。

  • -R: 再帰的にディレクトリとその配下のファイル群のモードを変更する。
  • -v: Verbose(冗長)モード。処理中の全ファイル名をリスト表示する。

文字列によるモード指定

chmod では、全パーミッションと特殊モードを mode パラメータで表現する。ファイルやディレクトリのモードを指定する1つの方法としてシンボリックモードがある。シンボリックモードは、3つの部分からなる文字列で表される。

$ chmod [references][operator][modes] file1 ...

references はクラス(ユーザ、グループ、その他)を指定するのに使われる。references が指定されない場合、全クラスを意味する。以下の文字を使って指定する。

Reference クラス 説明
u ユーザ ファイルの所有者
g グループ 所有者が属するグループ
o その他 グループ以外の全ユーザ
a 全て 上記3つ全て。ugo と指定するのと同じ

operator はモードの処理方法を指定する。

Operator 説明
+ 指定されたモードを指定されたクラスに追加する。
- 指定されたモードを指定されたクラスから削除する。
= 指定されたモードが指定されたクラスの正確な内容となる。つまり、指定されなかったモードは削除され、指定されたモードだけが付与される。

modes はモードを指定する。基本パーミッションに対応して3つの基本モードがある。

Mode 名称 説明
r リード ファイルを読み出し可能、ディレクトリ内容を参照可能
w ライト ファイルやディレクトリに書き込み可能
x 実行 ファイルを実行可能、ディレクトリに移動可能
X 特殊実行 パーミッション自体ではないが、x の代わりに使うことができる。ディレクトリについては現在のパーミッションに関係なく実行パーミッションを付与するが、ファイルについては(クラスに関係なく)現在のパーミッションで実行パーミッションが設定されている場合のみ実行パーミッションを付与する。operator が '+' で、-R オプションを使う場合のみ便利である。
s setuid/gid 後述
t sticky 後述

これら3要素で構成される文字列がシンボリックモードでのパーミッション指定として認識される。複数の変更があるときは、それらをカンマで連結して指定すればよい。

次の例は、sample という名前のファイルまたはディレクトリについて、ユーザクラスおよびグループクラスのリードパーミッションとライトパーミッションを付与するものである。

$ chmod ug+rw sample
$ ls -ld sample
drw-rw----   2 unixguy  unixguy       96 Dec  8 12:53 sample

次の例は、全パーミッションを削除するもので、sample は読み出すことも書き込むことも実行することもできなくなる。

$ chmod a-rwx sample
$ ls -l sample
----------   2 unixguy  unixguy       96 Dec  8 12:53 sample

次の例は、ユーザおよびグループのパーミッションをリードと実行だけに設定する(ライトは不可とする)。

コマンド実行前の sample のパーミッション
$ ls -ld sample
drw-rw----   2 unixguy  unixguy       96 Dec  8 12:53 sample
$ chmod ug=rx sample
$ ls -ld sample
dr-xr-x---   2 unixguy  unixguy       96 Dec  8 12:53 sample

八進数によるモード指定

chmod コマンドは、三桁か四桁の八進数でモードを指定できる。これを絶対モード指定と呼ぶ。例えば、次のように指定する。

$ chmod 0664 sample

sample というファイルの setuidsetgidsticky ビットが設定されていない場合、これは以下と等価である。

$ chmod 664 sample

あるいは

$ chmod +r,-x,ug+w sample

特殊モード

chmod コマンドは、ファイルやディレクトリの追加パーミッション(あるいは特殊モード)も変更可能である。シンボリックモードでは ssetuidsetgid モードを表し、tsticky モードを表す。それぞれ、特定のクラスでのみ有効である。詳しくはファイルパーミッションを参照されたい。

多くのオペレーティングシステムでは絶対モードでの特殊モード指定が可能だが、一部では不可能なOSもあり、その場合はシンボリックモードでしか指定できない。

  • chmod +r file – 全てのリードパーミッションを付与
  • chmod -x file – 全ての実行パーミッションを削除
  • chmod u=rw,go= file – 所有者にはリード/ライトパーミッションをセットし、グループおよびその他については全パーミッションを削除
  • chmod +rw file – 全てのリード/ライトパーミッションを付与
  • chmod -R u+w,go-w docs/ – ディレクトリ docs とその配下の全ファイルについて、ユーザ(所有者)にはライトパーミッションを付与し、それ以外からはライトパーミッションを削除するよう変更
  • chmod 666 file – 全てのリード/ライトパーミッションを付与
  • chmod 0755 fileu=rwx (4+2+1),go=rx (4+1 & 4+1) と等価。0 は特殊モードを指定しないことを意味する。
  • chmod 4755 file4setuid を意味する。
  • find path/ -type d -exec chmod a-x {} \; – path/ 配下の全ディレクトリについて、a-x を設定する(ファイルのみの場合は '-type f')
  • find path/ -type d -exec chmod 777 {} \; – path/ 配下の全ディレクトリについて、全パーミッションを付与する
  • chmod -R u+rwX,g-rwx,o-rwx <directory> – 所有者パーミッションはディレクトリについては rwx、ファイルについては rw を設定し、それ以外のパーミッションは --- とする。

関連項目

外部リンク




固有名詞の分類


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「chmod()」の関連用語




4
50% |||||



7
異なるファイル名のいずれかを探すfind . -type f \ -lsこの例では名前が 'jsp' または 'java' で終わるファイルを探す。括弧が必要であることに注意。また、"or" を "o" と略記することも可能。大抵のシェルでは丸括弧を "\" のようにエスケープする必要がある。-ls と -or は全てのバージョンの find で使えるわけではない。コマンド実行find /var/ftp/mp3 -type f -iname '*.mp3' -exec chmod 744 {} \;この場合、ディレクトリ /var/ftp/mp3 にあって名前が「.mp3」や「.MP3」などで終わるすべてのMP3ファイルについて、ファイルパーミッションを変更する。アクションは -exec chmod 744 {} \; の部分で指定されている。MP3ファイルそれぞれについて、chmod 744 {} というコマンドの {} の部分をファイル名に置き換えたものが実行される。セミコロンがコマンドの終わりを示している。なお、744 というパーミッションは普通に記せば rwxr--r-- であり、ファイル所有者は完全なアクセスが可能だが、それ以外のユーザーは読むことしかできない。xargsとの連携find /var/ftp/mp3 -type f -iname '*.mp3' -print | xargs chmod 744上の-execでは、該当するファイル1つにつき一度ずつプロセスを起動することとなり、効率が悪い。いったん-printで出力し、xargsによってコマンドラインとして渡せるだけの量をまとめて渡すことで、効率化することができる。なお、GNUプロジェクト版のfindには、ファイル名をヌル文字区切りで出力する-print0オプションがあり、xargs -0で解釈させることで、ホワイトスペースの入ったファイル名についても正常に処理可能となる。文字列検索
32% |||||




chmod()のお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



chmod()のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
PHP Documentation GroupPHP Documentation Group
Copyright © 1997 - 2025 by the PHP Documentation Group.
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのchmod (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。

©2025 GRAS Group, Inc.RSS