アンドロイド

LinuxのChmodコマンド(ファイルのアクセス許可)

目次:

Anonim

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 MODE FILE…

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

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

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

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

chmod perms… FILE…

フラグの最初のセット( )、ユーザーフラグ、ファイルへのアクセス許可が変更されるユーザークラスを定義します。

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

usersフラグが省略されている場合、デフォルトのフラグは a あり、umaskによって設定される許可は影響を受けません。

フラグの2番目のセット( )、操作フラグは、許可を削除、追加、または設定するかどうかを定義します。

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

許可( perms… )は、ゼロ、または r w x X s 、および t 1つ以上の文字を使用して明示的に設定できます。 あるクラスから別のユーザークラスにアクセス許可をコピーするときは、セット u g 、および o から1文字を使用します。

複数のユーザークラスのアクセス許可を設定する場合( )、コンマ(スペースなし)を使用してシンボリックモードを区切ります。

以下に、シンボリックモードで chmod コマンドを使用する方法の例を示します。

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

    chmod g=r filename

    すべてのユーザーの実行権限を削除します。

    chmod ax filename

    他のユーザーの書き込み許可を反発的に削除します。

    chmod -R ow 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 NUMBER FILE…

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

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

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

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

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

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

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

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

上記の方法を使用して、目的のアクセス許可を表す番号 754 します。

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

4桁の数字を使用する場合、最初の数字の意味は次のとおりです。

  • setuid = 4setgid = 2sticky = 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

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

このエラーは、ほとんどのLinuxディストリビューションではデフォルトでシンボリックリンクが保護されており、ターゲットファイルを操作できないために発生します。 このオプションは /proc/sys/fs/protected_symlinks 指定されて /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のmanページをご覧ください。

chmod端末