\r\n\r\n

linuxでのchmodコマンドの使い方

Linuxのchmodコマンドを使用して、ファイルへのアクセス、ディレクトリの検索、スクリプトの実行を制御することができます。Linuxのファイルパーミッションを変更するこのコマンドは、最初は複雑に見えるかもしれませんが、その仕組みを知ってしまえば、実はとても簡単です...。

Linuxのchmodコマンドを使用して、ファイルへのアクセス、ディレクトリの検索、スクリプトの実行を許可するユーザーを制御します。Linuxのファイルパーミッションを変更するこのコマンドは、最初は複雑に見えるかもしれませんが、その仕組みがわかれば、実はとても簡単なことなのです。

chmodはファイルパーミッションを変更します。

Linuxでは、ファイルやディレクトリに対して誰が何をできるかは、パーミッション・セットで制御されます。パーミッションは3セットあります。1セットはファイルの所有者用、もう1セットはファイルグループのメンバー用、最後の1セットはそれ以外の人用です。

パーミッションは、ファイルやディレクトリに対して実行可能なアクションを制御します。ファイルの読み取り、変更、実行(スクリプトやプログラムの場合)を許可または禁止します。ディレクトリの場合、パーミッションは、誰がディレクトリにcdを入れることができるか、誰がディレクトリにファイルを作成または変更することができるかを制御します。

chmodコマンドで各パーミッションを設定することができます。ファイルやディレクトリにどのようなパーミッションが設定されているかを確認するには、lsを使用することができます。

ファイルパーミッションの表示と理解

l(ロング・フォーマット)オプションを使って、lsにファイルやディレクトリのファイル・パーミッションを一覧表示させることができるのです。

ls -l

各行の最初の文字で、リストアップされるエントリーの種類を識別します。ダッシュ(-)であれば、ファイルです。dの文字であれば、ディレクトリです。

次の9文字は、3組のパーミッションの設定を示す。

  • 最初の3文字は、そのファイルを所有するユーザーの権限(ユーザー権限)を示しています。
  • 真ん中の3文字は、ファイルグループに所属するメンバーの権限(グループ権限)を示しています。
  • 最後の3文字は、最初の2つのカテゴリーに属さない人の権限(その他の権限)を示しています。

パーミッションの各グループには、3人のキャラクターがいます。これらの文字は、ある許可の有無を示しています。ダッシュ(-)か文字です。文字がダッシュの場合は、許可が下りていないことになります。文字がr、w、xの場合、許可されたことになる。

この文字は、その略です。

  • r:ファイルを開き、その内容を閲覧するための読み取り権限。
  • w: 書き込み権限。ファイルの編集、変更、削除が可能です。
  • x:実行許可。ファイルがスクリプトまたはプログラムである場合、実行(実行)することができます。

例えば、こんな感じです。

  • ---は、パーミッションが全く付与されていないことを意味します。
  • rwxは完全な権限が与えられていることを意味し、read、write、executeのインジケータが表示されます。

スクリーンショットでは、最初の行がdで始まっています。この行は、"archive "というディレクトリを参照しています。ディレクトリのオーナーは "dave "で、ディレクトリが属するグループの名前も "dave"

次の3文字は、このディレクトリのユーザーパーミッションです。これは、オーナーがフルパーミッションであることを示す。r、w、xの文字はすべて存在する。これは、ユーザーdaveがこのディレクトリに対して読み取り、書き込み、実行の権限を持っていることを意味します。

2つ目の3文字はグループ権限で、r-xです。これらの文字は、daveグループのメンバーがこのディレクトリに対して読み取り権限と実行権限を持っていることを表しています。つまり、ディレクトリ内のファイルとその内容をリストアップし、そのディレクトリにcd(実行)することができるのです。書き込み権限がないため、ファイルの作成、編集、削除はできません。

最後の3文字のセットもr-xです。これらの権限は、最初の2つの権限セットで制御されていない人に適用されます。これらの人々(「その他」と呼ばれる)は、このディレクトリに対して読み取りと実行のアクセス権を持っています。

つまり、グループのメンバーなどには読み取り権限と実行権限があり、所有者であるdaveというユーザーには書き込み権限もある。

その他のファイル(mh.shカンパニースクリプトファイルを除く)については、daveおよびdaveグループのメンバーはファイルに対する読み取りおよび書き込み属性を持ち、その他のメンバーは読み取りアクセス権のみを持っています。

特殊なケースであるmh.shカンパニースクリプトファイルでは、オーナーdaveとグループメンバーには読み取り、書き込み、実行の権限があり、その他のメンバーには読み取りと実行の権限のみがあります。

パーミッションの構文を理解する

chmod を使ってパーミッションを設定するには、次のように指示する必要があります。

  • Who:誰のためにパーミッションを設定するのか。
  • What:どのような変更を行うのか、パーミッションの追加や削除を行うのか。
  • どれ:どのパーミッションを設定すればいいのか?

これらの値を表す指標として、u+xのような短い「permissi***文」を作成します。ここで、「u」は「ユーザー」(誰)、「+」は追加(何を)、「x」は実行許可(何を)を意味します。"+"は追加(何を)、"x "は実行許可(何を)を意味します。

使える「who」の値は、以下の通り。

  • u:ユーザー、ファイルの所有者を意味します。
  • g:グループ、そのファイルが属するグループのメンバーを示す。
  • o:その他の人、uとgのパーミッションに支配されていない人。
  • a:All、つまり全部ということです。

いずれも使用しない場合、chmodは "a "を使用した場合と同じように動作します。

使える "what "の値は以下の通り。

  • -:マイナス記号。削除許可。
  • +:プラス記号権限が付与されている。パーミッションは既存のパーミッションに追加されます。この権限だけを設定させたい場合は、後述の「=」オプションを使用します。
  • =: イコール。パーミッションの設定と他のパーミッションの削除。

使える「which」の値は以下の通り。

  • r:読み取り許可。
  • w:書き込み許可。
  • x:実行権。

パーミッションの設定と変更

例えば、誰もがフルアクセスできるファイルがあるとします。

ls -l new_ file.txt

ユーザーdaveには読み取りと書き込みの権限を与え、グループとその他のユーザーには読み取り権限のみを与えたいと思います。

chmod u=rw,og=r new_file.txt

演算子"="を使用すると、既存の権限をすべて削除してから、指定した権限を設定することになります。

このファイルの新しいパーミッションを確認してみましょう。

ls -l new_file.txt

予想通り、既存のパーミッションは削除され、新しいパーミッションが設定されました。

既存の権限設定を削除せずに、権限を追加するのはどうでしょうか?それも簡単にできますよ。

例えば、編集されたスクリプトファイルがあったとして、それをすべてのユーザーが実行できるようにする必要があるのですが、現在のパーミッションは次のようになっています。

ls -l new_script.sh

以下のコマンドで、それぞれに実行権を追加することができます。

chmod a+x new_script.sh

権限を見てみると、既存の権限はそのままに、実行権限が全員に付与されていることがわかります。

ls -l new_script.sh

次のコマンドは、"a+x "ステートメントの "a "がなくても同じように動作します。

chmod +x new_script.sh

複数ファイルのパーミッション設定

複数のファイルに同時に権限を適用することも可能です。

カレントディレクトリには、以下のファイルがあります。

ls -l

拡張子が".page "のファイルから "other "ユーザーの読み取り権限を削除したいとします。以下のコマンドで実現できます。

chmod o-r *.page

その意味するところを確認してみましょう。

ls -l

このように、「other」カテゴリのユーザーの場合、「.page」ファイルから読み取りアクセスが削除されましたが、他のファイルには影響がありません。

サブディレクトリ内のファイルも含めたい場合は、-R(recursive)オプションを使用することができます。

chmod -R o-r *.page

デジタル速記法

chmodのもうひとつの使い方は、オーナーやグループなど、付与したい権限を3桁の数字で指定する方法です。一番左の数字は、所有者の許可を示しています。真ん中の数字は、グループメンバーの権限を示しています。一番右の数字は、他の数字に対するパーミッション(許可)を示します。

使用できる数字と、その数字が表すものは以下の通りです。

  • 0:(000) 許可されていません。
  • 1: (001) 執行権限。
  • 2: (010) 書き込み許可。
  • 3: (011) 書き込みと実行のパーミッション。
  • 4: (100) リードアクセス。
  • 5: (101) 読み取りと実行の権限。
  • 6: (110) 読み書き権限。
  • 7: (111) リード、ライト、実行のパーミッション。

3つの許可はそれぞれ2進数のビットで表現され、10進数に相当する。つまり、5は2進数で101となり、読み取りと実行を意味します。2は2進数で010となり、書き込み許可を意味します。

この方法では、希望する権限を設定することができます。既存の権限にこれらを追加することはありません。したがって、読み取り権限と書き込み権限がすでに存在する場合は、7(111)を使用して実行権限を追加する必要があります。1(001)を使用すると、読み取りと書き込みのパーミッションが削除され、実行パーミッションが追加されます。

他のユーザーカテゴリーの「.page」ファイルに読み取り権限を追加してみましょう。また、ユーザーやグループの権限も設定しなければならないので、既存の権限に設定する必要があります。これらのユーザーは、すでに読み取りと書き込みの権限、すなわち6(110)を持っています。others」に読み取り権限とアクセス権限を持たせたいので、4(100)に設定する必要があります。

次のコマンドを実行すると、この操作が完了します。

chmod 664 *.page

これにより、ユーザー、グループメンバー、その他に必要な権限が設定されます。ユーザーとグループメンバーの権限は元の権限にリセットされ、他のユーザーとグループメンバーの読み取り権限は元に戻されました。

ls -l

高度なオプション

chmodのマニュアルページを読むと、SETUIDやSETGIDビット、削除制限や「スティッキー」ビットに関連した高度なオプションがいくつか紹介されています。

chmodが必要な場合の99%は、ここで説明するオプションでカバーできます。

あなたが興味を持っているかもしれない記事

匿名者
匿名者

0 件の投稿

作家リスト

  1. admin 0 投稿
  2. 匿名者 0 投稿

おすすめ