GNU/Linux >> Linux の 問題 >  >> Linux

LinuxでのChmodコマンド(ファイルパーミッション)

Linuxでは、ファイルへのアクセスは、ファイルのアクセス許可、属性、および所有権によって管理されます。これにより、許可されたユーザーとプロセスのみがファイルとディレクトリにアクセスできるようになります。

このチュートリアルでは、chmodの使用方法について説明します。 ファイルとディレクトリのアクセス許可を変更するコマンド。

Linuxファイルのパーミッション#

先に進む前に、基本的なLinuxパーミッションモデルについて説明しましょう。

Linuxでは、各ファイルは所有者とグループに関連付けられ、3つの異なるクラスのユーザーに対するアクセス権が割り当てられます。

  • ファイルの所有者。
  • グループメンバー。
  • その他(その他すべて)

ファイルの所有権は、chownを使用して変更できます およびchgrp コマンド。

各クラスに適用されるファイル権限には、次の3つのタイプがあります。

  • 読み取り許可。
  • 書き込み許可。
  • 実行権限。

この概念により、ファイルの読み取り、ファイルへの書き込み、またはファイルの実行を許可するユーザーを指定できます。

lsを使用してファイルのアクセス許可を表示できます コマンド:

ls -l filename.txt
-rw-r--r-- 12 linuxize users 12.0K Apr  8 20:51 filename.txt
|[-][-][-]-   [------] [---]
| |  |  | |      |       |
| |  |  | |      |       +-----------> 7. Group
| |  |  | |      +-------------------> 6. Owner
| |  |  | +--------------------------> 5. Alternate Access Method
| |  |  +----------------------------> 4. Others Permissions
| |  +-------------------------------> 3. Group Permissions
| +----------------------------------> 2. Owner Permissions
+------------------------------------> 1. File Type

最初の文字はファイルタイプを示しています。通常のファイルにすることができます(- )、ディレクトリ(d )、シンボリックリンク(l )、またはその他の特殊なタイプのファイル。

次の9文字はファイルのアクセス許可を表し、それぞれ3文字の3つのトリプレットです。最初のトリプレットは所有者のアクセス許可を示し、2番目のトリプレットはグループのアクセス許可を示し、最後のトリプレットは他のすべてのユーザーのアクセス許可を示します。権限は、ファイルの種類によって意味が異なる場合があります。

上記の例では(rw-r--r-- )は、ファイル所有者が読み取りおよび書き込み権限(rw-)を持っていることを意味します )、グループおよびその他のユーザーには読み取り権限(r--)のみがあります 。

3つのパーミッショントリプレットはそれぞれ、次の文字で構成でき、ファイルに設定されているかディレクトリに設定されているかに応じて、異なる効果があります。

ファイルに対する権限の影響

許可 キャラクター ファイルの意味
読む - ファイルが読み取れません。ファイルの内容を表示することはできません。
r ファイルは読み取り可能です。
書き込み - ファイルを変更または変更することはできません。
w ファイルは変更または変更できます。
実行 - ファイルを実行できません。
x ファイルを実行できます。
s userで見つかった場合 トリプレットsetuidを設定します 少し。 groupで見つかった場合 トリプレット、setgidを設定します 少し。また、x フラグが設定されています。
setuidの場合 またはsetgid 実行可能ファイルにフラグが設定され、ファイルはファイルの所有者またはグループ、あるいはその両方の特権で実行されます。
S sと同じ しかし、x フラグが設定されていません。このフラグがファイルで使用されることはめったにありません。
t othersで見つかった場合 トリプレットstickyを設定します ビット。
これは、xも意味します フラグが設定されます。このフラグはファイルでは役に立ちません。
T tと同じ しかし、x フラグが設定されていません。このフラグはファイルでは役に立ちません。

ディレクトリ(フォルダ)に対する権限の影響

Linuxでは、ディレクトリは他のファイルやディレクトリを含む特殊なタイプのファイルです。

許可 キャラクター ディレクトリでの意味
読む - ディレクトリの内容を表示できません。
r ディレクトリの内容を表示できます。
(例:lsを使用してディレクトリ内のファイルを一覧表示できます 。)
書き込み - ディレクトリの内容は変更できません。
w ディレクトリの内容は変更できます。
(例:新しいファイルの作成、ファイルの削除など)
実行 - ディレクトリをに変更することはできません。
x ディレクトリはcdを使用してナビゲートできます 。
s userで見つかった場合 トリプレット、setuidを設定します 少し。 groupで見つかった場合 トリプレットsetgidを設定します 少し。また、x フラグが設定されます。 setgidの場合 フラグはディレクトリに設定され、その中に作成された新しいファイルは、ファイルを作成したユーザーのプライマリグループIDではなく、ディレクトリグループID(GID)を継承します。
setuid ディレクトリには影響しません。
S sと同じ しかし、x フラグが設定されていません。このフラグはディレクトリでは役に立ちません。
t othersで見つかった場合 トリプレットstickyを設定します ビット。
これは、xも意味します フラグが設定されます。ディレクトリにスティッキービットが設定されている場合、ファイルの所有者、ディレクトリの所有者、または管理者ユーザーのみが、ディレクトリ内のファイルを削除または名前変更できます。
T tと同じ しかし、x フラグが設定されていません。このフラグはディレクトリでは役に立ちません。

chmodの使用 #

chmod コマンドは次の一般的な形式を取ります:

chmod [OPTIONS] MODE FILE...

chmod コマンドを使用すると、シンボリックモードまたは数値モードまたは参照ファイルを使用してファイルのアクセス許可を変更できます。モードについては、この記事の後半で詳しく説明します。このコマンドは、スペースで区切られた1つ以上のファイルやディレクトリを引数として受け入れることができます。

ファイルの権限を変更できるのは、root、ファイル所有者、またはsudo権限を持つユーザーのみです。 chmodを使用するときは特に注意してください 、特に権限を再帰的に変更する場合。

シンボリック(テキスト)メソッド#

chmodの構文 シンボリックモードを使用する場合のコマンドの形式は次のとおりです。

chmod [OPTIONS] [ugoa…][-+=]perms…[,…] FILE...

フラグの最初のセット([ugoa…] )、usersフラグは、ファイルへのアクセス許可を変更するユーザークラスを定義します。

  • u -ファイルの所有者。
  • g -グループのメンバーであるユーザー。
  • o -他のすべてのユーザー。
  • a -すべてのユーザー、ugoと同じ 。

ユーザーフラグを省略した場合、デフォルトのフラグはaです。 また、umaskによって設定された権限は影響を受けません。

フラグの2番目のセット([-+=] )、操作フラグは、権限を削除、追加、または設定するかどうかを定義します。

  • - 指定された権限を削除します。
  • + 指定された権限を追加します。
  • = 現在の権限を指定された権限に変更します。 =の後に権限が指定されていない場合 シンボル、指定されたユーザークラスからのすべての権限が削除されます。

権限(perms... )は、ゼロまたは次の1つ以上の文字を使用して明示的に設定できます:rwxXs 、およびt 。セットuから1文字を使用します 、g 、およびo あるユーザークラスから別のユーザークラスに権限をコピーする場合。

複数のユーザークラスに権限を設定する場合([,…] )、シンボリックモードを区切るには、コンマ(スペースなし)を使用します。

以下は、chmodの使用方法の例です。 シンボリックモードのコマンド:

  • グループのメンバーにファイルの読み取りを許可しますが、書き込みと実行は許可しません:

    chmod g=r filename
  • すべてのユーザーの実行権限を削除します:

    chmod a-x filename
  • 他のユーザーの書き込み権限を再帰的に削除します:

    chmod -R o-w dirname
  • ファイルの所有者を除くすべてのユーザーの読み取り、書き込み、および実行のアクセス許可を削除します。

    chmod og-rwx filename

    次のフォームを使用しても同じことができます。

    chmod og= filename
  • ファイルの所有者に読み取り、書き込み、実行の権限を付与し、ファイルのグループに読み取り権限を付与し、他のすべてのユーザーには権限を付与しません。

    chmod u=rwx,g=r,o= filename
  • ファイルの所有者権限を、ファイルのグループのメンバーが持つ権限に追加します。

    chmod g+u filename
  • 特定のディレクトリにスティッキービットを追加します:

    chmod o+t dirname

数値法#

chmodの構文 数値法を使用する場合のコマンドの形式は次のとおりです。

chmod [OPTIONS] NUMBER FILE...

数値モードを使用する場合、3つのユーザークラスすべて(所有者、グループ、およびその他すべて)の権限を同時に設定できます。

NUMBER 3桁または4桁の数字にすることができます。

3桁の数字を使用する場合、最初の数字はファイルの所有者の権限、2番目の数字はファイルのグループ、最後の数字は他のすべてのユーザーの権限を表します。

各書き込み、読み取り、および実行のアクセス許可には、次の数値があります。

  • r (読み取り)=4
  • w (書き込み)=2
  • x (実行)=1
  • 権限なし=0

特定のユーザークラスのアクセス許可番号は、そのグループのアクセス許可の値の合計で表されます。

数値モードでファイルの権限を確認するには、すべてのユーザークラスの合計を計算するだけです。たとえば、ファイルの所有者に読み取り、書き込み、実行のアクセス許可を与えるには、ファイルのグループに読み取りと実行のアクセス許可を与え、他のすべてのユーザーにのみ読み取りのアクセス許可を与えるには、次のようにします。

  • 所有者:rwx =4 + 2 + 1 =7
  • グループ:r-x =4 + 0 + 1 =5
  • その他:r-x =4 + 0 + 0 =4

上記の方法を使用すると、754という番号になります。 、これは必要な権限を表します。

setuidを設定するには 、setgid 、およびsticky bit フラグは4桁の数字を使用します。

4桁の数字を使用する場合、最初の桁は次の意味になります。

  • setuid =4
  • setgid =2
  • sticky =1
  • 変更なし=0

次の3桁は、3桁の数字を使用する場合と同じ意味です。

最初の桁が0の場合は省略でき、モードは3桁で表すことができます。数値モード0755 755と同じです 。

数値モードを計算するには、別の方法(バイナリ方法)を使用することもできますが、少し複雑です。ほとんどのユーザーにとって、4、2、および1を使用して数値モードを計算する方法を知っていれば十分です。

statを使用して、数値表記でファイルの権限を確認できます コマンド:

stat -c "%a" filename
644

chmodの使用方法の例を次に示します。 数値モードのコマンド:

  • ファイルの所有者に読み取りと書き込みのアクセス許可を与え、グループメンバーと他のすべてのユーザーにのみ読み取りのアクセス許可を与えます:

    chmod 644 dirname
  • ファイルの所有者に読み取り、書き込み、実行の権限を付与し、グループメンバーには読み取りと実行の権限を付与し、他のすべてのユーザーには権限を付与しません。

    chmod 750 dirname
  • 読み取り、書き込み、実行のアクセス許可と、特定のディレクトリへのスティッキービットを付与します:

    chmod 1777 dirname
  • ファイル所有者に読み取り、書き込み、および実行のアクセス許可を再帰的に設定し、特定のディレクトリの他のすべてのユーザーにはアクセス許可を設定しません。

    chmod -R 700 dirname

参照ファイルの使用#

--reference=ref_file オプションを使用すると、ファイルのアクセス許可を、指定した参照ファイル(ref_file)のアクセス許可と同じに設定できます。 。

chmod --reference=REF_FILE FILE

たとえば、次のコマンドはfile1の権限を割り当てます file2

chmod --reference=file1 file2

ファイルのアクセス許可を再帰的に変更する#

指定されたディレクトリの下にあるすべてのファイルとディレクトリを再帰的に操作するには、-Rを使用します。 (--recursive )オプション:

chmod -R MODE DIRECTORY

たとえば、/var/wwwの下にあるすべてのファイルとサブディレクトリの権限を変更するには 755へのディレクトリ 使用するもの:

chmod -R 755 /var/www
シンボリックリンクの操作#

シンボリックリンクには常に777があります 権限。

デフォルトでは、シンボリックリンクの権限を変更する場合、chmod リンクが指しているファイルの権限を変更します。

chmod 755 symlink

ターゲットの所有権を変更する代わりに、「「シンボリックリンク」にアクセスできません:アクセスが拒否されました」というエラーが表示される可能性があります。

ほとんどのLinuxディストリビューションではデフォルトでシンボリックリンクが保護されており、ターゲットファイルを操作できないため、エラーが発生します。このオプションは、/proc/sys/fs/protected_symlinksで指定されています 。 1 有効で0を意味します 無効。シンボリックリンク保護を無効にしないことをお勧めします。

ファイルのアクセス許可を一括で変更する#

ファイルとディレクトリのアクセス許可を一括変更する必要がある場合があります。

最も一般的なシナリオは、Webサイトファイルのアクセス許可を644に再帰的に変更することです。 およびディレクトリの755へのアクセス許可 。

数値的方法の使用:

find /var/www/my_website -type d -exec chmod 755 {} \;find /var/www/my_website -type f -exec chmod 644 {} \;

シンボリックメソッドの使用:

find /var/www/my_website -type d -exec chmod u=rwx,go=rx {} \;find /var/www/my_website -type f -exec chmod u=rw,go=r {} \;

find コマンドは、/var/www/my_websiteの下のファイルとディレクトリを検索します 見つかった各ファイルとディレクトリをchmodに渡します 権限を設定するコマンド。

結論#

chmod コマンドはファイルの権限を変更します。権限は、記号モードまたは数値モードのいずれかを使用して設定できます。

chmodの詳細については chmodのマンページにアクセスしてください。

ご質問やご意見がございましたら、お気軽にコメントをお寄せください。


Linux
  1. Linuxwcコマンド

  2. Linuxgrepコマンド

  3. Linuxchmodコマンド

  1. Linuxでの9つのクイックchmodコマンドの例

  2. Linuxファイルパーミッションの基本

  3. Linuxパーミッション:chmodの紹介

  1. Linuxファイルのアクセス許可について

  2. Linuxテールコマンド

  3. Linuxタッチコマンド