1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
|
.\" Copyright (c) 1989, 1990, 1993, 1994
.\" The Regents of the University of California. All rights reserved.
.\"
.\" This code is derived from software contributed to Berkeley by
.\" the Institute of Electrical and Electronics Engineers, Inc.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\" 3. All advertising materials mentioning features or use of this software
.\" must display the following acknowledgement:
.\" This product includes software developed by the University of
.\" California, Berkeley and its contributors.
.\" 4. Neither the name of the University nor the names of its contributors
.\" may be used to endorse or promote products derived from this software
.\" without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\" @(#)chmod.1 8.4 (Berkeley) 3/31/94
.\" %Id: chmod.1,v 1.10 1998/05/19 06:24:50 jkoshy Exp %
.\" jpman %Id: chmod.1,v 1.2 1997/04/01 01:37:14 mutoh Stab %
.\"
.Dd March 31, 1994
.Dt CHMOD 1
.Os
.Sh 名称
.Nm chmod
.Nd ファイルのモードを変更する
.Sh 書式
.Nm chmod
.Oo
.Fl R
.Op Fl H | Fl L | Fl P
.Oc
.Ar mode
.Ar file ...
.Sh 解説
.Nm
は指定されたファイルのモードを
.Ar mode
で指定したものに変更します。
.Pp
オプションとして以下のものがあります:
.Bl -tag -width Ds
.It Fl H
.Fl R
オプションが指定されていれば、引数がシンボリックリンクのとき、それを
たどって変更します。
(ディレクトリツリー探索中に見つかったシンボリックリンクは
それ以上追跡しません)
.It Fl L
.Fl R
オプションが指定されていれば、すべてのシンボリックリンクをたどり、
リンク先のファイルを変更します。
.It Fl P
.Fl R
オプションが指定されていても、どのシンボリックリンクもたどりません。
.It Fl R
指定されたファイル自身だけではなく、それらをルートとする
ディレクトリ階層を再帰的に検索してモードを変更します。
.El
.Pp
シンボリックリンクはモードを持たないので、
.Fl H
または
.Fl L
オプションが指定されていなければ、シンボリックリンクに対する
.Nm
実行結果は常に真となり、何も変えません。
.Fl H ,
.Fl L ,
.Fl P
オプションは、
.Fl R
オプションが指定されていなければ無視されます。また、これらが
複数指定されると最後に指定したものが有効になります。
.Pp
ファイルのモードの変更はそのファイルの所有者とスーパユーザだけにしか
許されていません。
.Pp
.Nm
は正常終了時には 0 を、エラーが生じたときは 0 より大きい値を返します。
.Sh モード
モードには、数値を用いた絶対値指定と、シンボルによる指定があります。
数値指定では、以下の値を
.Ar ``or''
で組み合わせた 8 進数を用います:
.Pp
.Bl -tag -width 6n -compact -offset indent
.It Li 4000
(set-user-ID-on-execution ビット)
このビットがセットされている実行可能ファイルは、
ファイルを所有するユーザ ID に実効ユーザ ID を設定されて実行されます。
set-user-id ビットをセットされているディレクトリは、
その中で作成される全てのファイルおよびディレクトリの所有者を
ディレクトリの所有者に設定することを強制し、
作成するプロセスのユーザ ID は無関係となります。
これは、ディレクトリが存在するファイルシステムが
この機能をサポートしている場合に限られます:
.Xr chmod 2
と
.Xr mount 1
の
.Ar suiddir
オプションを参照してください。
.It Li 2000
(set-group-ID-on-execution ビット)
このビットがセットされている実行可能ファイルは、
ファイルを所有するグループ ID に実効グループ ID を設定されて実行されます。
.It Li 1000
(スティッキービット)
ディレクトリに設定した時には、
非特権ユーザは、所有するファイルのみ削除およびリネーム可能となり、
ディレクトリのパーミッションは無関係となります。
FreeBSD では、実行可能ファイルに設定されたスティッキービットは無視され、
ディレクトリにのみ設定可能です (
.Xr sticky 8
参照)。
.It Li 0400
所有者の読み込みを許可。
.It Li 0200
所有者の書き込みを許可。
.It Li 0100
ファイルの場合、所有者の実行を許可。
ディレクトリの場合、所有者の検索を許可。
.It Li 0040
グループのメンバの読み込みを許可。
.It Li 0020
グループのメンバの書き込みを許可。
.It Li 0010
ファイルの場合、グループのメンバの実行を許可。
ディレクトリの場合、グループのメンバの検索を許可。
.It Li 0004
他者の読み込みを許可。
.It Li 0002
他者の書き込みを許可。
.It Li 0001
ファイルの場合、他者の実行を許可。
ディレクトリの場合、他者の検索を許可。
.El
.Pp
例えば、所有者に読み込み・書き込み・実行を許可し、
グループのメンバに読み込み・実行を許可し、
他者に読み込み・実行を許可し、
set-uid と set-gid を指定しない絶対値指定のモードは、
755 (400+200+100+040+010+004+001) となります。
.Pp
シンボルによる指定は以下の文法に従います。
.Bd -literal -offset indent
mode ::= clause [, clause ...]
clause ::= [who ...] [action ...] last_action
action ::= op [perm ...]
last_action ::= op [perm ...]
who ::= a | u | g | o
op ::= + | \- | =
perm ::= r | s | t | w | x | X | u | g | o
.Ed
.Pp
.Ar who
シンボルの ``u'', ``g'', ``o'' はそれぞれユーザ、グループ、それ以外に
相当します。``a'' シンボルは ``ugo'' を指定した場合と同じになります。
.Pp
.ne 1i
.Ar perm
シンボルはモードの各ビットを以下のように表現します。
.Pp
.Bl -tag -width Ds -compact -offset indent
.It r
読み込み許可ビット
.It s
実行時 setuid および実行時 setgid ビット
.It t
sticky ビット
.It w
書き込み許可ビット
.It x
実行/検索 許可ビット
.It X
対象がディレクトリであるか、変更前のモードで誰かの実行/検索許可ビット
が立っている場合に、実行/検索許可ビットがセットされます。
.Ar perm
シンボルでの ``X'' の指定は、
.Ar op
シンボルを ``+''で連結する時のみ意味があり、他の場合は無視されます。
.It u
元ファイルの所有者許可ビット
.It g
元ファイルのグループ許可ビット
.It o
元ファイルの所有者とグループ以外の許可ビット
.El
.Pp
.Ar op
シンボルの働きは以下のようになります
.Bl -tag -width 4n
.It +
.Ar perm
値が指定されなければ、``+'' は何の作用もありません。
.Ar who
シンボルが指定されていなければ、
.Ar perm
値はそれぞれのwhoシンボルの対応するビットに作用し、それを umask で
マスクしたビットがセットされます。
.Ar who
シンボルが指定されていれば、その
.Ar perm
値が設定されます。
.It \&\-
.Ar perm
値が指定されていなければ、``\-'' は何の作用もありません。
.Ar who
シンボルが指定されていなければ、
.Ar perm
値はそれぞれのwhoシンボルの対応するビットに作用し、それを umaskで
マスクしたビットがクリアされます。
.Ar who
シンボルが指定されていれば、その
.Ar perm
値がクリアされます。
.It =
.Ar who
シンボルで指定されたモードビットがクリアされます。whoシンボルが指定
されていなければ、所有者、グループ、その他の各モードビットがクリアされ
ます。
.Ar who
シンボルが指定されていなければ、
permで指定したビットが、所有者、グループ、その他のそれぞれを umaskで
マスクしたものだけ設定されます。
.Ar who
シンボルと
.Ar perm
が指定されていれば、その値がそのまま設定されます。
.El
.Pp
各
.Ar clause
では、モードビットを操作するためのオペレーションを 1 つ以上記述しなけ
ればなりません。そして各オペレーションは記述した順番で適用されます。
.Pp
所有者とグループ以外の ``o'' のみに対して、 ''s'' や ``t'' の組み合わせの
.Ar perm
値が指定されても無視されます。
.Sh 使用例
.Bl -tag -width "u=rwx,go=u-w" -compact
.It Li 644
ファイルを誰にでも読めるようにして、ファイルの所有者のみ書き込み可能に
します。
.Pp
.It Li go-w
ファイルの所有者以外の書き込みを禁止します。
.Pp
.It Li =rw,+X
umask でマスクされていないビットの読み書きを許可しますが、実行許可は
現在設定されているものを保持します。
.Pp
.It Li +X
誰かが実行/検索可能なファイルやディレクトリならば、すべてのユーザが
実行/検索できるファイルやディレクトリとします。
.Pp
.It Li 755
.It Li u=rwx,go=rx
.It Li u=rwx,go=u-w
誰にでも読み込みと実行ができて、所有者のみ書き込み可能になるようにしま
す。
.Pp
.It Li go=
グループやその他のユーザにいかなる許可も与えません。
.Pp
.It Li g=u-w
グループビットをユーザビットと同じにしますが、グループの書き込みは禁止
します。
.El
.Sh バグ
naughty bitのための
.Ar perm
オプションが無い。
.Sh 関連項目
.Xr chflags 1 ,
.Xr install 1 ,
.Xr mount 1 ,
.Xr chmod 2 ,
.Xr stat 2 ,
.Xr umask 2 ,
.Xr fts 3 ,
.Xr setmode 3 ,
.Xr symlink 7 ,
.Xr chown 8 ,
.Xr sticky 8
.Sh 規格
.Nm
ユーティリティは、規格にない
.Ar perm
シンボルの
.Dq t
と
.Dq X
を除いては
.St -p1003.2
互換になるように作られています。
.Sh 歴史
.Nm
コマンドは
.At v1
から導入されました.
|