chmod コマンドを使用すると、ファイルのアクセス権を変更できます。ファイルまたはディレクトリの所有者、あるいはスーパーユーザーだけがそのアクセス権を変更できます。
chmod コマンドを使用して、次のどちらかのモードでアクセス権を設定できます。
絶対モード – ファイルのアクセス権を表す数値を使用します。これは、アクセス権を設定するときに最も一般的に使用される方法です。絶対モードを使用してアクセス権を変更するときは、3 つ 1 組のアクセス権を 8 進数で表します。
次の表に、絶対モードでファイルのアクセス権を設定するための 8 進数値を示します。これらの数字を 3 つ組み合せて、所有者、グループ、その他のユーザーのファイルアクセス権をこの順に設定します。たとえば、値 644 は、所有者に対して読み取り権と書き込み権を設定し、グループとその他のユーザーに対しては読み取り権だけを設定します。
表 16–5 絶対モードによるファイルのアクセス権の設定
8 進数値 |
ファイルのアクセス権 |
設定されるアクセス権 |
---|---|---|
0 |
--- |
なし |
1 |
--x |
実行権のみ |
2 |
-w- |
書き込み権のみ |
3 |
-wx |
書き込み権と実行権 |
4 |
r-- |
読み取り権のみ |
5 |
r-x |
読み取り権と実行権 |
6 |
rw- |
読み取り権と書き込み権 |
7 |
rwx |
読み取り権、書き込み権、実行権 |
ファイルには、絶対モードまたは記号モードで特殊なアクセス権を設定できます。ただし、絶対モードを使用してディレクトリのsetuid アクセス権を設定または削除することはできません。この場合、記号モードを使用してください。絶対モードでは、3 つ 1 組のアクセス権の左端に新しい 8 進数値を追加して、特殊なアクセス権を設定します。次の表に、ファイルに特殊なアクセス権を設定する 8 進数値を示します。
表 16–6 絶対モードによる特殊なアクセス権の設定
8 進数値 |
特殊なアクセス権の設定 |
---|---|
1 |
スティッキビット |
2 |
setguid |
4 |
setuid |
次の表に、記号モードでファイルのアクセス権を設定するための記号を示します。記号では、アクセス権を設定または変更できる対象ユーザー、実行される操作、あるいは割り当てるまたは変更するアクセス権を指定できます。
表 16–7 記号モードによるファイルのアクセス権の設定
記号 |
機能 |
説明 |
---|---|---|
u |
対象ユーザー |
ユーザー (所有者) |
g |
対象ユーザー |
グループ |
o |
対象ユーザー |
その他のユーザー |
a |
対象ユーザー |
すべてのユーザー |
= |
操作 |
割り当て |
+ |
操作 |
追加 |
- |
操作 |
削除 |
r |
アクセス権 |
読み取り |
w |
アクセス権 |
書き込み |
x |
アクセス権 |
実行 |
l |
アクセス権 |
強制ロック、setgid ビットはオン、グループ実行ビットはオフ |
s |
アクセス権 |
setuid または setgid ビットはオン |
S |
アクセス権 |
suid ビットはオン、ユーザー実行ビットはオフ |
t |
アクセス権 |
スティッキビットはオン、その他の実行ビットはオン |
T |
アクセス権 |
スティッキビットはオン、その他の実行ビットはオフ |
機能列に <対象ユーザー> <操作> <アクセス権> の順で、ファイルまたはディレクトリのアクセス権を変更する記号を指定します。
<対象ユーザー> |
アクセス権を変更する対象となるユーザーを指定する |
<操作> |
実行する操作を指定する |
<アクセス権> |
変更するアクセス権を指定する |
次の手順を使用して、アクセス権を絶対モードで変更します。
ファイルまたはディレクトリの所有者でない場合は、スーパーユーザーになるか、同等の役割を引き受けます。
現在の所有者またはスーパーユーザーだけが、chmod コマンドを使用してファイルまたはディレクトリのアクセス権を変更できます。
chmod コマンドを使用してアクセス権を絶対モードで変更します。
$ chmod nnn filename |
nnn |
所有者、グループ、その他のユーザーのアクセス権をこの順序で表す 8 進数値を指定する。有効な 8 進数値については、表 16–5 を参照 |
filename |
ファイルまたはディレクトリを指定する |
chmod コマンドを使用して ACL エントリを持つファイルのグループアクセス権を変更する場合、グループアクセス権と ACL マスクの両方が新しいアクセス権に変更されます。新しい ACL マスクのアクセス権は、そのファイル上に ACL エントリを持つ追加ユーザーおよびグループのアクセス権を変更する場合があるので注意が必要です。getfacl コマンドを使用して、すべての ACL エントリに適切なアクセス権が設定されていることを確認してください。詳細については、getfacl(1) のマニュアルページを参照してください。
ファイルのアクセス権が変更されていることを確認します。
# ls -l filename |
次の例では、公共ディレクトリのアクセス権が、744 (読み取り/書き込み/実行; 読み取り専用 ; 読み取り専用) から 755 (読み取り/書き込み/実行; 読み取り/実行; 読み取り/実行) に変更されます。
$ ls -ld public_dir drwxr--r-- 1 ignatz staff 6023 Aug 5 12:06 public_dir $ chmod 755 public_dir $ ls -ld public_dir drwxr-xr-x 1 ignatz staff 6023 Aug 5 12:06 public_dir |
次の例では、実行可能シェルスクリプトのアクセス権が、読み取り/書き込みから、読み取り/書き込み/実行に変更されます。
$ ls -l my_script -rw------- 1 ignatz staff 6023 Aug 5 12:06 my_script $ chmod 700 my_script $ ls -l my_script -rwx------ 1 ignatz staff 6023 Aug 5 12:06 my_script |
次の手順を使用して、特殊なアクセス権を絶対モードで変更します。
ファイルまたはディレクトリの所有者でない場合は、スーパーユーザーになるか、同等の役割を引き受けます。
現在の所有者またはスーパーユーザーだけが、chmod コマンドを使用してファイルまたはディレクトリの所有者を変更できます。
chmod コマンドを使用して特殊アクセス権を絶対モードで変更します。
$ chmod nnnn filename |
nnnn |
ファイルまたはディレクトリのアクセス権を変更する 8 進数値を指定する。一番左端の 8 進数値で、ファイルに特殊なアクセス権を設定する。特殊なアクセス権に有効な 8 進数値のリストについては、表 16–6 を参照 |
filename |
ファイルまたはディレクトリを指定する |
chmod コマンドを使用して ACL エントリを持つファイルのグループアクセス権を変更する場合、グループアクセス権と ACL マスクの両方が新しいアクセス権に変更されます。新しい ACL マスクのアクセス権は、そのファイル上に ACL エントリを持つ追加ユーザーおよびグループのアクセス権を変更する場合があるので注意が必要です。getfacl コマンドを使用して、すべての ACL エントリに適切なアクセス権が設定されていることを確認してください。詳細については、getfacl(1) のマニュアルページを参照してください。
ファイルのアクセス権が変更されていることを確認します。
# ls -l filename |
次の例は、dbprog ファイルに setuid のアクセス権を設定します。
$ chmod 4555 dbprog $ ls -l dbprog -r-sr-xr-x 1 db staff 12095 May 6 09:29 dbprog |
次の例では、dbprog2 ファイルに setgid のアクセス権を設定します。
$ chmod 2551 dbprog2 $ ls -l dbprog2 -r-xr-s--x 1 db staff 24576 May 6 09:30 dbprog2 |
次の例では、public_dir ディレクトリにスティッキビットのアクセス権を設定します。
$ chmod 1777 public_dir $ ls -ld public_dir drwxrwxrwt 2 ignatz staff 512 May 15 15:27 public_dir |
次の手順を使用して、アクセス権を記号モードで変更します。
ファイルまたはディレクトリの所有者でない場合は、スーパーユーザーになります。
現在の所有者またはスーパーユーザーだけが、chmod コマンドを使用してファイルまたはディレクトリの所有者を変更できます。
chmod コマンドを使用してアクセス権を記号モードで変更します。
$ chmod who operator permission filename |
who operator permission |
who では、アクセス権を変更するユーザーを指定し、operator では実行する操作を指定し、permission では変更後のアクセス権を指定する。有効な記号の一覧については 表 16–7 を参照 |
filename |
ファイルまたはディレクトリを指定する |
ファイルのアクセス権が変更されていることを確認します。
# ls -l filename |
次の例では、その他のユーザーから読み取り権を削除します。
$ chmod o-r filea |
次の例では、ユーザー、グループ、およびその他のユーザーに、読み取り権と実行権を追加します。
$ chmod a+rx fileb |
次の例では、グループに読み取り権、書き込み権、および実行権を割り当てます。
$ chmod g=rwx filec |