chmod - ファイルまたはディレクトリーのモードを変更する

形式

chmod [-fhR] mode pathname

説明

chmod は、指定されたファイルまたはディレクトリーのアクセス許可、すなわちモード を変更します。モードは、誰が ディレクトリーまたはファイルを読み取り、書き込み、または検索できるか を判別します。SUPERUSER.FILESYS.CHANGEPERMS (UNIXPRIV クラス・プロファイル) への読み取りアクセス権を持っているユーザー は、chmod コマンドを使用して、任意のファイルの許可ビットを変更できます。

chmod は、ファイル所有者またはスーパーユーザーだけが 使用できます。

オプション

-f
ファイル・アクセス許可に関連するエラーを検出しても、chmod は エラー・メッセージを出しません。
-h
検出されたシンボリック・リンク (または外部リンク) によりポイントされた ファイルまたはディレクトリーに対してモード変更を抑止します。 z/OS システムでは、シンボリック・リンク (または外部リンク) の 許可は変更できません。
-R
ファイル・モード・ビットを再帰的に変更します。ディレクトリーの名前を指定するパス名オペランドごとに、chmod はそのディレクトリーとファイル階層でその下にあるすべてのファイルのファイル・モード・ビットを変更します。

chmod はシンボリック・リンク (または外部リンク) の許可を変更しません。というのは、z/OS システムでは、シンボリック・リンク (および外部リンク) に関する許可を使用することはないからです。-h が指定されていないのに、シンボリック・リンク (または外部リンク) が指定されたかファイル階層巡回中に検出された場合は、リンクに従い、解決されたディレクトリー (およびファイルとサブディレクトリー) が変更されます。

コマンド行上の mode 値は、シンボル形式あるいは 8 進値のいずれかで指定できます。

mode 引数のシンボル形式は以下のとおりです。
[who] op permission[op permission …]
who の値は、以下の任意の組み合わせです。
u
所有者 (ユーザーまたは個人) の許可を設定します。
g
グループ許可を設定します。
o
他の許可を設定します。
a
すべての許可を設定します。これがデフォルトです。who の値が指定されない場合は、デフォルトは umask で変更された a です。
シンボル・モードの op 部分は、chmod が許可をオン にするか、またはオフにするかを 指定します。可能な値は以下のとおりです。
+
許可をオンにします。
-
許可をオフにします。
=
指定された許可をオンにし、その他をすべてオフにします。
シンボル・モードの permission 部分は、以下の任意の組み合わせです。
r
読み取り許可。これがオフの場合は、ファイルを読み取ることはできません。
x
実行許可。これがオフの場合は、ファイルを実行することはできません。
X
ディレクトリーに対する実行または検索許可、あるいは、現行モードの少なくとも 1 つの実行ビットが設定されているときに限り、ファイルに対する実行許可。
w
書き込み許可。これがオフの場合は、ファイルに書き込むことはできません。
s
所有者許可セクションではセット・ユーザー ID ビットがオン、グループ許可セクションではセット・グループ ID ビットがオン。
スーパーユーザーまたはファイル所有者は、 chmod コマンドまたは chmod() 関数を使用して、 実行可能ファイルの 2 つのオプションを変更することができます。オプションは、 次の 2 つのファイル・モード・ビットで設定されます。
  • setuid オプション指定の セット・ユーザー ID (S_ISUID)。
  • setgid オプション指定の セット・グループ ID (S_ISGID)。

これらのビットのいずれかまたは両方がオンならば、プログラムを実行するプロセスの 実効 UID か実効 GID あるいはその両方に加えて、保管 UID か保管 GID あるいはその両方が、 ファイルの所有 UID か GID、あるいはその両方に変更されます。 この変更によって、プログラムを実行するプロセスに、 ファイル所有者またはグループがアクセスできるデータへのアクセス権が一時的に与えられます。

新規ファイルでは、両方のビットはオフに設定されています。 また、ファイルの所有 UID または GID が変更されるか、 ファイルが書き込まれた場合も、ビットはオフになります。 シェル・スクリプトでは、これらのビットは無視されます。

UNIXPRIV クラスに FILE.GROUPOWNER.SETGID という RACF® プロファイルが存在すると、 ディレクトリーの セット・グループ ID ビットで ディレクトリー内に作成された新規オブジェクトのグループ所有者を初期化する方法が決まります。
  • セット GID ビットがオンならば、所有 GID はディレクトリーの GID に設定されます。
  • セット GID ビットがオフならば、所有 GID はプロセスの実効 GID に設定されます。
t
これはスティッキー・ビットを表します。ファイルに対しては、スティッキー・ビットがセットされると、ユーザー の STEPLIB、リンク・パック域、またはリンク・リスト連結内のプログラムが検索されます。 ディレクトリーに対しては、スティッキー・ビットがセットされると、ファ イルの所有者、ディレクトリーの所有者、またはスーパーユーザーによ ってのみ、ディレクトリーないしサブディレクトリーのファイルの削除ある いは名前変更が可能になります。

コンマで分離して、複数のシンボル名を指定することができます。

絶対モードは、ファイルの属性の完全なリストを指定する 8 進数です。これらのビットを OR することによって属性を指定します。
4000   Set-user-ID bit
2000   Set-group-ID bit
1000   Sticky bit
0400   User read
0200   User write
0100   User execute (or list directory)
0040   Group read
0020   Group write
0010   Group execute
0004   Other read
0002   Other write
0001   Other execute

  1. orgcht から書き込み権限を除去するには、次のように入力します。
    chmod -w orgcht
  2. 読み取り、書き込み、および実行許可をオンにし、セット・ユーザー ID ビット 属性、セット・グループ ID ビット属性、およびスティッキー・ビット属性をオフにします。 これは、chmod 0777 aprsal と同等です。
    chmod a=rwx aprsal
  3. すべての許可ビットをオンに設定する (読み取り/書き込み/実行をすべてのユーザーに 許可する) には、次のように入力します。
    chmod 777 scratch
  4. ユーザー (所有者) 実行可能許可ビットをオンに設定するには、次のように入力します。
    chmod u+x file 
  5. グループ読み取り / 書き込み許可ビットを設定するには、次のように入力します。
    chmod g+rw file
  6. 2 ファイルに対する他の書き込み許可をオフに設定するには、次のように入力します。
    chmod o-w file1 file2
  7. ディレクトリー /public/teamdir およびディレクトリー内のすべてのファイルとサブディレクトリーに対するグループ読み取り/空きこみ/実行許可を設定するには、次のように入力します。
    chmod -R g+rwx /public/teamdir
  8. /u/ateam/pgm に対するグループ読み取り/実行をオンに、書き込みをオフに設定 するには、次のように入力します。
    chmod g=rx /u/ateam/pgm

ローカライズ

chmod は、以下のローカライズ環境変数を使用します。
  • LANG
  • LC_ALL
  • LC_CTYPE
  • LC_MESSAGES
  • NLSPATH

詳しくは、ローカライズを参照してください。

終了値

0
正常終了
1
以下のいずれかの理由による失敗
  • 指定されたファイルにアクセスできない。
  • 指定されたファイルのモードを変更できない。
  • 変更する項目を含むディレクトリーを読み取ることができない。
  • -R オプションを使用しているときにリカバリー不能エラーが検出された。
2
以下のいずれかの理由による失敗
  • mode 引数が抜けているか正しくない。
  • 引数が少なすぎる。

メッセージ

以下の エラー・メッセージが出される可能性があります。
function not implemented
ディレクトリーが自動マウント制御下にある場合に、このエラーが起きる可 能性があります。
irrecoverable error during -R option
-R オプションが指定されましたが、ディレクトリー構造内のファイルまたはディレクトリーの中に アクセスできないものがありました。これは、許可が原因で起きた可能性があります。
read directory name
指定されたディレクトリーの読み取り許可がありません。

移植性

POSIX.2 , X/Open 移植性ガイド.

-f オプションと -h オプション および t 許可は、POSIX 標準の拡張です。

関連情報

lssetfaclumask