LinuxのChmodコマンドは、ファイルとディレクトリのアクセス許可を変更または割り当てるために使用されます。 Linux / Unixシステムでは、ファイルとディレクトリへのアクセス可能性は、ファイルの所有権と権限によって決まります。前回の記事では、chownコマンドを使用してファイルとディレクトリの所有権を管理する方法について説明しました。このチュートリアルでは、chmodコマンドについて説明します。
変更モードの略であるchmodコマンドは、ファイルとディレクトリのアクセス許可を管理し、誰がそれらにアクセスできるかを決定するために使用されます。それでは、ファイルとディレクトリのアクセス許可の性質と、それらを変更する方法について詳しく見ていきましょう。
Linuxの権限
chmodコマンドがどのように機能するかをよりよく理解するために、Linuxファイルパーミッションモデルを研究することが賢明です。
Linuxには、読み取り(r)、書き込み(w)、実行(x)の3種類のファイル権限があります。これらの権限は、ファイルの読み取り、書き込み、または実行を実行できるユーザーを決定します。これらの権限は、このチュートリアルで後で説明するように、テキストまたは8進数(数値)表記を使用して割り当てることができます。
ファイルとディレクトリは、ファイルの所有者(u)、グループ(g)、またはその他(o)のいずれかに属することができます
- u –ファイルの所有者
- g –グループ
- o –その他
ファイルのアクセス許可は、ls-lコマンドを使用して一覧表示されます。 -lフラグは、ファイルのアクセス許可を一覧表示します。権限は、ユーザー、グループ、その他の3つのセットにそれぞれ配置されています
ファイルのアクセス許可をよりよく理解するために、次のようにディレクトリの内容を一覧表示します。
$ ls -l </ pre>
![]()
左端から始めて、最初の文字/記号はファイルタイプを示します。ハイフン(-)は、ファイルが通常のファイルであることを示します。記号dは、それがディレクトリであることを示します。記号lは、それがシンボリックリンクであることを示します。
残りの9文字は、それぞれ3つの記号r(読み取り)、w(書き込み)、およびx(実行)を持つ3つのトリプレットにセグメント化されます。前に指摘したように、最初のセグメントは所有者のアクセス許可を指し、2番目のセグメントはグループのアクセス許可を示し、最後の部分は他のユーザーがファイルまたはディレクトリに対して持つアクセス許可を指定します。
出力から、2つのファイル(hello.txtとreports.zip)と1つのディレクトリがあることがわかります。
最初のファイルを調べてみましょう
-rw-rw-r-- 1 linuxtechi linuxtechi 35 Aug 17 15:42 hello.txt最初のファイルの場合、-rw-rw-r–権限は、ファイルの所有者が読み取りおよび書き込み権限を持ち、グループも読み取りおよび書き込み権限を持ち、他のユーザーは読み取り権限のみを持っていることを意味します。同じ権限がreports.zip圧縮ファイルにも適用されます。
ディレクトリの権限を見てみましょう:
drwxrwxr-x 2 linuxtechi linuxtechi 4096 Aug 17 15:43 salesディレクトリとグループの所有者にはすべてのアクセス許可(読み取り、書き込み、実行)があり、他のユーザーには読み取りと実行のアクセス許可のみがあることがわかります。
トリプルハイフン記号—ファイルの所有者、グループ、または他のユーザーのいずれにも権限が付与されていないことを示します。
chmodコマンドを使用してファイルとディレクトリのアクセス許可を設定する
ファイルのアクセス許可とその表示方法を確認したので、これらのアクセス許可を変更する方法に焦点を当てません。
Linuxのchmodコマンドは、テキスト(記号)表記または数値(8進数)表記のいずれかを使用してファイルとディレクトリのアクセス許可を変更するために使用されます。次の構文が必要です:
$chmod[オプション]モードファイル名
ファイルまたはディレクトリの権限を変更できるのは、rootユーザーまたはsudo権限を持つ通常のユーザーのみです。コマンド構文では、スペースで区切って複数のファイルまたはディレクトリを渡すことができます。
それでは、chmodコマンドのさまざまな例を調べて見てみましょう。
例1)数値表記を使用してアクセス許可を割り当てる
数値のスタイル/表記を使用して権限を設定する場合は、以下に示す構文を使用してください。
$ sudochmod[オプション]numeric_valueファイル名
数値は3つまたは4つの数値を取ることができます。ただし、ほとんどの場合、3つの数字が使用されます。読み取り、書き込み、および実行のアクセス許可は、次の値を取ります。
- 読み取り許可=>4
- 書き込み権限=>2
- 実行許可=>1
3つのセグメントのそれぞれでの読み取り、書き込み、実行などのアクセス許可の値の合計が、特定のファイルまたはディレクトリの完全なアクセス許可を占めます。
これはどういう意味ですか?
所有者が読み取り、書き込み、実行の権限を持ち、グループが読み取りと実行の権限を持ち、他のユーザーが読み取り権限のみを持っていると仮定します。これは次のように分類できます。
- u:rwx =7
- g:r-x =5
- o:r– =4
したがって、指定されたファイルのファイル権限の数値として754の値に到達します。
所有者に読み取り、書き込み、実行の権限を割り当て、グループと他のユーザーにのみ読み取り権限を割り当てるには、次のコマンドを実行します。
$ chmod 744 devops.txt
ファイルの所有者にすべてのアクセス許可を割り当て、グループへのアクセス許可を読み取って実行し、他のユーザーへのアクセス許可をまったく割り当てないようにするには、次を実行します。
$ chmod 750 coders.txt
ファイルの所有者にすべてのアクセス許可を割り当てるには、グループへの読み取りおよび書き込みアクセス許可と他のユーザーが次のコマンドを実行します。
$ chmod 755 sysadmin.txt
例2)ディレクトリへのアクセス許可の再帰的な割り当て
ディレクトリにアクセス許可を割り当てるときは、-Rフラグを使用して、ファイルとサブフォルダにアクセス許可を再帰的に割り当てます。例:
$ chmod 755 -R directory_name
$ chmod 755 -R / home / linuxtechi / data
例3)テキスト表記を使用して権限を割り当てる
権限を割り当てる別の方法は、テキスト表記を使用することです。このメソッドでは、chmodコマンドは、構文内の所有者、グループ、その他、またはすべてのユーザー(u、g、およびo)を表すフラグまたは記号を取ります。
この方法は前の方法ほど単純ではないため、間違った権限が割り当てられないように注意する必要があります。
構文は次のようになります
$ chmod [OPTIONS] [u g o a] [– + =] [r、w、x]ファイル
これを分解しましょう。
パラメータの最初のグループ[ugo a]は、権限が変更されるユーザーのカテゴリを指定します
- u:ユーザー
- g:グループ
- o:その他
- a:すべて(これには上記のすべてが含まれます)
このセットを省略した場合、デフォルトのオプションはオプションです。
2番目のオプションセット–演算子オプション[– + =] –は、権限をユーザーのカテゴリに追加するか、ユーザーのカテゴリから削除するかを決定します。オプション削除
- –:フラグは、指定されたユーザーからファイルのアクセス許可を削除します。
- +:これにより、指定したユーザーに権限が追加/追加されます。
- =:これにより、指定されたユーザーに個別の権限が割り当てられ、ユーザーセグメントの以前の権限が削除されます。
いくつかの例を見てみましょう:
例4)ファイルに読み取り権限を割り当てる
$ chmod o=rファイル名
上記のコマンドは、記号「o」で示される他のユーザーにファイルにのみ読み取り権限を割り当て、「その他」セグメントに割り当てられた以前の権限を削除します。次の権限を持つfile1.txtを取得します
「その他(o)」セグメントの読み取り権限を割り当てるには、実行のみを実行します
$ sudo chmod o =r file1.txt
出力から、「その他」のセグメントに読み取り権限が割り当てられていると同時に、実行権限が失われていることがわかります。これは、=演算子が新しい権限を割り当てると同時に、以前の権限を消去することを意味します。
例5)ファイルとグループの所有者に実行権限を割り当てる
$ sudo chmod ug+xファイル名
上記のコマンドは、ファイルの所有者とグループに実行権限を追加します。私たちのファイルを使用すると、これは次のようになります:
$ sudo chmod ug + x file1.txt
例6)ファイル、グループ、その他に異なる権限を割り当てます
$ sudo chmod u =rwx、g =rw、o=rファイル名
上記のコマンドは、すべての権限をファイルの所有者に割り当て、読み取りと書き込みの権限をグループに割り当て、読み取り権限のみを他のユーザーに割り当てます。
注: =演算子の後に権限が指定されていない場合、ユーザーセグメントからのすべての権限が削除されます。
例7)他のユーザーのすべての権限を削除する
$ sudo chmodo=ファイル名
上記のコマンドは、指定されたファイルの「その他」のユーザーセグメントからすべての権限を削除します。
このコマンドは、以下のコマンドと同じ効果があります。
$ sudochmodo-rwxファイル名
例8)参照ファイルを使用して権限を割り当てる
ファイルのアクセス許可を割り当てるもう1つの便利で便利な方法は、参照ファイルを使用することです。この方法では、–reference =ref_fileオプションを使用して、ファイルのアクセス許可を別の参照ファイルのアクセス許可と同じに設定します。以下の構文を使用してください
$ sudo chmod –reference=ref_fileファイル名
たとえば、file2.txtのファイル権限をfile1.txtの権限と同じに設定するには、次のコマンドを実行します。
$ sudo chmod --reference =file1.txt file2.txt
参照ファイルはfile1.txtですが、file2.txtは参照ファイルのファイル権限を取得するファイルです。
例9)実行権限をディレクトリのみに割り当てる
ファイルとサブディレクトリを含むディレクトリがあり、ファイルに触れずにディレクトリにのみ実行権限を割り当てたいとします。したがって、これは次のchmodコマンドを使用して実現できます
$ chmod a + X *
注意深く気付いた場合は、実行権限に大文字のXを使用しています。上記のコマンドは、現在の作業ディレクトリのすべてのディレクトリに実行権限を設定します。
結論
これは私たちのトピックに幕を開けます。 chmodコマンドを見て、このコマンドを使用してファイルのアクセス許可を変更できるさまざまな例を見ました。