chmodコマンド(パーミッションをシンボルまたは数値で設定する)
形式
chmod [-fhR] モード パス名
このコマンドはサンプルスクリプトファイルscript_chmod3を基に作成します。作成手順については「2.6.6(2) スクリプト形式のUNIX互換コマンドを使うための準備【Windows限定】」を参照してください。
機能
所有者およびEveryone以外のACEを削除して,モードのシンボルまたは数値の指定に従い,アクセス許可を変更または設定します。
このコマンドは,次のような設定をしたい場合などにアクセス権をシンボルまたは数値で設定します。
-
chmodコマンドのモードがシンボルで指定されたジョブ定義スクリプトをWindowsに移行したい場合
-
「所有者」またはすべてのユーザーのアクセス権を追加および抑止したい場合
引数
- -f
-
指定を無視します。
- -h
-
指定を無視します。
- -R
-
指定を無視します。
- モード
-
モードの指定値と,それによって設定される各ACEのアクセス許可を次に示します。これ以外のモードが指定された場合,標準エラー出力へ「chmod: invalid file mode: モード」を出力し,アクセス許可は変更しません。
モードの指定値
(括弧内:adshscripttool -fmodeコマンドの実行結果)
設定されるアクセス許可
u+r(A00000000)
所有者:Rを追加
u+rw(AA0000000)
所有者:Cを追加
u+rwx(AAA000000)
所有者:Fを追加
u+w(0A0000000)
所有者:Wを追加
u-rwx(DDD000000)
所有者のACEを削除
u=r(RDD000000)
所有者:Rに置き換え
u=rw(RRD000000)
所有者:Cに置き換え
u=rwx(RRR000000)
所有者:Fに置き換え
u=w(DRD000000)
所有者:Wに置き換え
o+r(000000A00)
Everyone:Rを追加
o+rw(000000AA0)
Everyone:Cを追加
o+rwx(000000AAA)
Everyone:Fを追加
o+w(0000000A0)
Everyone:Wを追加
o-rwx(000000DDD)
EveryoneのACEを削除
o=r(000000RDD)
Everyone:Rに置き換え
o=rw(000000RRD)
Everyone:Cに置き換え
o=rwx(000000RRR)
Everyone:Fに置き換え
o=w(000000DRD)
Everyone:Wに置き換え
+r / ugo+r(A00A00A00)
所有者:R,Everyone:Rを追加
+rw / ugo+rw(AA0AA0AA0)
所有者:C,Everyone:Cを追加
+rwx / ugo+rwx(AAAAAAAAA)
所有者:F,Everyone:Fを追加
+w / ugo+w(0A00A00A0)
所有者:W,Everyone:Wを追加
-rwx / ugo-rwx(DDDDDDDDD)
所有者,EveryoneのACEを削除
=r / ugo=r(RDDRDDRDD)
所有者:R,Everyone:Rに置き換え
=rw / ugo=rw(RRDRRDRRD)
所有者:C,Everyone:Cに置き換え
=rwx / ugo=rwx(RRRRRRRRR)
所有者:F,Everyone:Fに置き換え
=w / ugo=w(DRDDRDDRD)
所有者:W,Everyone:Wに置き換え
777(RRRRRRRRR)
所有者:F,Everyone:Fに置き換え
766(RRRRRDRRD)
所有者:F,Everyone:Cに置き換え
755(RRRRDRRDR)
所有者:F,Everyone:Rに置き換え
744(RRRRDDRDD)
所有者:F,Everyone:Rに置き換え
733(RRRDRRDRR)
所有者:F,Everyone:Wに置き換え
722(RRRDRDDRD)
所有者:F,Everyone:Wに置き換え
700(RRRDDDDDD)
所有者:Fに置き換え
666(RRDRRDRRD)
所有者:C,Everyone:Cに置き換え
655(RRDRDRRDR)
所有者:C,Everyone:Rに置き換え
644(RRDRDDRDD)
所有者:C,Everyone:Rに置き換え
633(RRDDRRDRR)
所有者:C,Everyone:Wに置き換え
622(RRDDRDDRD)
所有者:C,Everyone:Wに置き換え
600(RRDDDDDDD)
所有者:Cに置き換え
555(RDRRDRRDR)
所有者:R,Everyone:Rに置き換え
544(RDRRDDRDD)
所有者:R,Everyone:Rに置き換え
533(RDRDRRDRR)
所有者:R,Everyone:Wに置き換え
522(RDRDRDDRD)
所有者:R,Everyone:Wに置き換え
500(RDRDDDDDD)
所有者:Rに置き換え
444(RDDRDDRDD)
所有者:R,Everyone:Rに置き換え
433(RDDDRRDRR)
所有者:R,Everyone:Wに置き換え
422(RDDDRDDRD)
所有者:R,Everyone:Wに置き換え
400(RDDDDDDDD)
所有者:Rに置き換え
333(DRRDRRDRR)
所有者:W,Everyone:Wに置き換え
322(DRRDRDDRD)
所有者:W,Everyone:Wに置き換え
300(DRRDDDDDD)
所有者:Wに置き換え
222(DRDDRDDRD)
所有者:W,Everyone:Wに置き換え
200(DRDDDDDDD)
所有者:Wに置き換え
モードでは,読み取り権限と書き込み権限を合わせたもの(モードビット6の場合)を変更権限として定義しています。すべての権限を合わせたもの(モードビット7の場合)をフルコントロールとして定義しています。
モードで,実行権限に相当する指定は無視します。したがって,モードビット5は4と同等,モードビット3は2と同等として定義しています。
- パス名
-
対象とするファイルまたはフォルダを指定します。複数指定することもできます。
終了コード
終了コード |
意味 |
---|---|
0 |
正常終了 |
1以上 |
エラー終了 |
注意事項
-
このコマンドを実行すると,所有者およびEveryone以外のACEは削除され,モードの説明にあるACEの設定だけを実施します。必要なアカウントのACEがある場合は,サンプルスクリプト内のcaclsコマンドの定義に追加してください。
-
「その他のユーザー」のアカウントをEveryoneにしているため,所有者のアクセス権がその他のユーザーのアクセス権より低い場合でも,所有者はEveryoneのアクセス権でアクセスできるようになります。
-
ファイルおよびフォルダのアクセス許可の変更権限がない場合,caclsコマンドが標準エラー出力にメッセージ「アクセスが拒否されました」を出力してcaclsコマンドがエラーとなり,権限を変更できません。実行ユーザーにアクセス許可の変更権限を付与して使用してください。
使用例
ジョブ定義スクリプトの定義例を次に示します。サンプルスクリプトファイルscript_chmod3を基にchmodコマンドが作成されていることを前提とします。
-
その他のユーザーに書き込み権限を追加します。
chmod o+w test.txt
-
指定が許可されていないモードを指定します。
chmod g-w test.txt
この場合,標準エラー出力には次のように出力されます。
chmod: invalid file mode: g-w