この記事では、 chmod
を使用してLinux®クラウドサーバーの権限を変更する方法について説明します。 コマンド。
chmodコマンドとは何ですか?
簡単に言えば、 chmod
変更モードの略です Linuxでファイルまたはディレクトリのアクセス許可を設定するために使用されます。ルートユーザーはchmod
を使用します どのユーザー、グループ、その他がファイルやディレクトリにアクセスできるかを判断するため。
通常、 chmod
を使用します 次の形式のコマンド:
$ chmod (options) (permissions) (file name)
$ chmod (permissions) (file name)
chmod
でのオプションの使用 コマンドはオプションです。 2番目の例は、最も頻繁に使用されます。オプションがない場合、 chmod
コマンドで指定されたファイルまたはディレクトリの権限を変更します。
Linuxシステムでは、権限を使用して、ファイルまたはディレクトリの所有者(ユーザー)、ファイルまたはディレクトリを所有するグループ(グループ)、またはファイルまたはディレクトリにアクセスする他のユーザー(その他)を参照できます。
次の表記を使用して、これらの権限を記述してください。
- 英数字(r、w、x)
- 8進数(0〜7)
たとえば、 example.txtというファイルがあります 、次の権限を設定する必要があります:
- ユーザーはファイルの読み取り、書き込み、および実行を行うことができます。
- グループメンバーはファイルの読み取りと実行はできますが、書き込みはできません。
- 他の人はファイルを読み取ることしかできません。
次のコマンドオプションは、 example.txtに必要な権限を設定します :
$ chmod u=rwx,g=rx,o=r example.txt
このオプションでは、英数字を使用して、ファイルにアクセスできるユーザーと、これらの指定されたユーザーに設定する権限を示します。
- 文字「u」=ユーザー
- 文字「g」=グループ
- 文字「o」=その他
- 文字「r」=読む
- 文字「w」=書く
- 文字「x」=実行
次の例は、Linuxが前の例で付与された権限をどのように表現するかを示しています。
-rwxr-xr--
最初の3文字(rwx)は、ユーザーの権限です。次の3つ(r-x)はグループの権限を表し、最後の3つ(r–)は他のユーザーの権限を表します。
次に、 example.txtの8進数オプションがあります 演習:
$ chmod 754 example.txt
この例では、数字の7、5、および4はそれぞれ、ユーザー、グループ、およびその他の権限を表します。最初の数字の位置はユーザーの権限を決定し、2番目の数字はグループの権限を決定し、3番目の数字は他のユーザーの権限を割り当てます。
これらの番号はランダムに選択されていません。数字の4、2、1、および0を合計すると、権限が決まります。番号には次の割り当てがあります:
- 4は「読み取り」の略です
- 2は「書き込み」の略です
- 1は「実行」の略です
- 0は「なし」を表します
したがって、前の例では、7は読み取り(4)、書き込み(2)、および実行(1)の組み合わせから決定されます:4 + 2 + 1 =7。5は読み取り(4)の追加から取得されます。 none(0)、および実行(1):4 + 0 + 1 =5。最後に、4は読み取り(4)、none(0)、およびnone(0)の組み合わせです:4 + 0 + 0 =4 。
通常、 chmod
のオプションを使用する必要はありません。 コマンドを実行しますが、その場合は、 chmod
で次のオプションを使用できます。 :
-
-c
、-変更
:加えられた変更について詳細な出力を提供します -
-f
、-サイレントコード> 、
-静かな
:ほとんどのエラーメッセージを消音します -
-v
、-verbose
:処理されたすべてのアクションの詳細メッセージを出力します -
-no-preserve-root
:デフォルトで/(ルート)ディレクトリに通常与えられる差異を無視します -
-preserve-root
:/(ルート)ディレクトリで再帰的に動作しません -
-reference =RFILE
:特定のモードを無視して、RFILEの権限と一致する権限を設定します -
-R
、-recursive
:ファイルまたはディレクトリに加えられた変更は再帰的に適用されます -ヘルプ
:ヘルプメッセージを表示してから終了します-バージョン
:バージョン情報を表示してから終了します
すでに説明した権限に加えて、 chmod
コマンドは、Linuxで他の3つの特別な権限を設定できます。
- SUID(ユーザーIDの設定)
- SGID(グループIDの設定)
- スティッキービット
SUID
s
ユーザーのrwx
x
を置き換える権限セット 、は、次の例に示すように、この権限を表します。
$ chmod 4755 /usr/bin/passwd
$ ls -lh /usr/bin/passwd
-rwsr-xr-x. 1 root root 28K Mar 10 2020 /usr/bin/passwd
rwsr-xr-x
の最初の3文字 ユーザーの権限を表します。 x
の代わりに注意してください s
があります ユーザーの3つの権限スロットにあります。 x
を表示する代わりに 実行には、 s
があります 実行スポットで。なぜですか?
注: 通常の8進数のパーミッションセットの前にある4は、このパーミッションを表します。したがって、 755
の代わりに 、権限は 4755
として記述されます 。
この特定の権限により、ユーザーはバイナリプログラムを、所有者ではない場合でも所有者であるかのように実行できるため、このオプションは注意して使用する必要があります。この最もよく知られている例は、 passwd
です。 コマンド。
passwd
の場合 、バイナリプログラムがrootによって所有されている場合でも、ユーザーはプログラムを実行できます。ただし、 passwd
デフォルトではSUIDとして設定されており、常にrootユーザーとして実行されます。
通常のユーザーが他のバイナリプログラムに対するSUID権限を持っている場合、 root
がなくてもrootとしてコマンドを実行できます。 権限。これにより、通常は sudo
を必要とする特権の異常な昇格が可能になります。 アクセスする権限。
SUID権限は、バイナリのみの形式でLinuxOSに組み込まれている予防策に影響を与える可能性があります。スクリプトには影響しません。
SGID
s
グループのrwx
x
を置き換える権限セット in t r-x
次の例に示すように、セグメントはSGID権限を表します。
$ chmod 2755 /usr/bin/screen
$ ls -lh /usr/bin/screen
-rwxr-sr-x. 1 root screen 465K Feb 10 2020 /usr/bin/screen
このs
は3つの権限の2番目のグループにあります。これは、英数字スタイルで記述されたときのグループの権限です。 8進レンダリングでは、 2
他の3つの8進数の許可番号の前は、この許可を示します。 755
の代わりに 、これを 2755
と記述します 。
SUIDと同様に、SGID権限はバイナリでのみ機能します。スクリプトでは機能しません。 SGIDの機能に関しては、特権のないグループメンバーがrootユーザーであるかのようにバイナリを実行できるようにします。
通常、このアクセス許可は、グループのメンバーがグループによって共有されているディレクトリ内でアクセスできる必要があるディレクトリで使用できます。このディレクトリに作成されたファイルは、ファイルを作成したグループメンバーに関係なく、同じグループ所有者になります。
t
他の人のrwx
x
を置き換える権限セット 、は、次の例に示すように、この権限を表します。
$ chmod 1777 /tmp
$ ls -lhd /tmp
drwxrwxrwt. 8 root root 4.0K Nov 6 14:42 /tmp
t
に注意してください 3文字の最後のセットで。 t
に相当する8進数 1
です 3つの許可オクタルの前。 777
の代わりに 、これを 1777
と記述します 。
このスティッキービットは何をしますか?通常、この権限は tmpで使用します ディレクトリ、およびその機能は、ユーザーが他のユーザーが所有するファイルを削除できないようにすることです。通常、グループがディレクトリへの書き込みアクセス権を持っている場合、そのグループ内のすべてのユーザーは、そのディレクトリ内の任意のファイルを削除できます。スティッキービットの許可はそれを止めます。ファイルの作成者のみがファイルを削除できます。
ベストプラクティスとして、他のアクセス許可が8進数の7(読み取り、書き込み、実行)であるディレクトリには、スティッキービットのアクセス許可を設定する必要があります。 754
で たとえば、8進数が 757
の場合、スティッキービット権限を使用するとします。 ここで、7は3番目の8進数です(他のユーザーの許可を表します)。
以下は、出力例の各部分を説明する簡単なチートシートです。
-rwxrw-r-- rack space 123G Feb 03 15:36 example.txt
-
-
:-コード> 最初は、これがファイルであることを示しています。
d
冒頭はディレクトリを示します。 -
rwx
:最初の3文字はファイル所有者の権限を表し、所有者がファイルexample.txtの読み取り、書き込み、および実行を実行できることを意味します。 -
rw-
:次の3文字はグループの権限を表し、グループメンバーはファイルの読み取りと書き込みはできますが、実行はできません。 -
r-
:3番目の3文字は他のユーザーの権限を表し、ファイルを所有している所有者またはグループに属していない人はファイルを読み取ることしかできないことを意味します。ファイルへの書き込みやファイルの実行はできません。 ラック
:ファイルの所有者。スペース
:グループの所有者。-
123G
:ファイルのサイズ(ギガバイト単位)。M
メガバイトを示し、K
キロバイトを表します。 -
Feb 03 15:36
:これは、ファイルが最後に変更された日時を示します。 -
example.txt
:ファイルの名前。これを「/example」としてリストすると、ディレクトリの名前になります。