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

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

[Red Hat Enterprise Linuxを試してみませんか?今すぐ無料でダウンロードしてください。]

Linuxシステムを使用したことがある場合は、確かにファイルを処理したことがあります。つまり、次のようなメッセージが表示される可能性があります。

localhost@user1$ cat /etc/sudoers
cat: /etc/sudoers: Permission denied

または、これと同様に、「このフォルダにファイルをアップロードする権限がありません」などのエラーメッセージが表示され、特定のファイルの読み取り、書き込み、またはアクセスができなくなった可能性があります。そして、当然のことながら、このエラーにより、少なくともこの問題に初めて遭遇したときに、なぜアクセスが拒否されたのか疑問に思うかもしれません。

Linuxのファイル権限とそれらを制限する方法を見てみましょう。さらに、ファイルを少し試してみましょう。 Linuxの特定のディレクトリにあるファイルを一覧表示すると、r、w、およびxが表示され、これらの文字が何を意味するのか疑問に思うかもしれません。これらは、特定のユーザーがファイルで何ができるかを正確に判断する上で非常に重要です。

例を見てみましょう:

localhost@user1$ ls -ltr chmod_directory/
total 0
-rw-r--r--. 1 creator creator 0 Jul 29 21:55 I_Can_Write.txt
-rw-r--r--. 1 creator creator 0 Jul 29 21:55 I_Can_Execute.sh
-rw-r--r--. 1 creator creator 0 Jul 29 21:55 I_Can_Access.txt

上記の例に示すように、デフォルトのファイルパーミッションはrw-r--r--(umask値(この記事の後半で説明)から)です。

各権限には数値が割り当てられています:

  • r(読み取り)の値は4です
  • w(書き込み)の値は2です
  • x(実行)の値は1です

これらの値は「トリプレット」ごとに加算されます。つまり、rw-のファイルパーミッションの値は6、rwxの値は7です。前述のように、新しく作成されたファイルのデフォルト値は644(rw-r --r--)は、ファイルの所有者が読み取りと書き込みを実行でき、他のすべての所有者はこのファイルの読み取りのみを実行できることを意味します。最初のトリプレットはファイルの所有者/作成者のアクセス許可、2番目はグループのアクセス許可、3番目は他のユーザー(所有者/作成者の外部のユーザーまたはアクセス許可を持つグループ)です。この設定は明らかな理由で理にかなっています。所有者は、ファイルの読み取りと書き込みの両方を行うために、ファイルの内容をより高度に制御する必要があります。他の人は内容を読みたいがそれらを修正したくないかもしれません。もちろん、この設定はchmodで変更できます。 この記事の焦点であるコマンド。

したがって、この概念をより簡単に理解するには、ファイルのアクセス許可を3x3マトリックスと考えてください。ここで、所有者、グループ、その他はそれぞれr、w、およびxの設定を持っています。上記の例では:

  • ファイルの作成者 (所有者/ユーザー)には読み取りと書き込みの権限があります:- rw -r--r--。
  • ファイルのグループ作成者(グループ)には読み取り権限があります:-rw- r- r--。
  • 他のユーザーは、最後のビットで表される読み取り権限を持っています:-rw-r- r-

次に、ディレクトリのデフォルトの権限値を見てみましょう。ディレクトリchmod_directoryを考えてみましょう はデフォルトの権限755で作成されました。ファイルとは異なり、ディレクトリにはファイルが含まれています。所有者以外の人が'cdするために 'ディレクトリに移動するには、実行権限が必要です。これにより、ディレクトリが作成されます。

  • 所有者が読み取り、書き込み、実行可能(rwxは7)。
  • グループで読み取りおよび実行可能(r-xは5)。
  • 他のユーザーが読み取りおよび実行可能(r-xは5)。

注:r-xの指定は、rからxを引いたものではなく、読み取りと実行を意味しますが、書き込みがありません。 -は許可のプレースホルダーです。

(これがデフォルトの動作である理由を考えてみてください。)

さて、ファイルとディレクトリの権限の基本を学んだので、chmodを見てみましょう。 コマンド。ファイルとディレクトリの権限を変更するのに役立ちます。

マニュアルページに記載されているように:

This manual page documents the GNU version of chmod. chmod changes the file mode bits of each given file according to mode, which can be either a symbolic representation of changes to make, or an octal number representing the bit pattern for the new mode bits.

The format of a symbolic mode is [ugoa...][[+-=][perms...]...], where perms is either zero or more letters from the set rwxXst, or a single letter from the set ugo. Multiple symbolic modes can be given, separated by commas.

A combination of the letters ugoa controls which users' access to the file will be changed: the user who owns it (u), other users in the file's group (g), other users not in the file's group (o), or all users (a). If none of these are given, the effect is as if a were given, but bits that are set in the umask are not affected.
8進表現の使用

ファイルのアクセス許可を変更するには、8進表現(数値)または記号表現(文字)のいずれかを使用できます。 8進数表現では、1桁目はユーザー用、2桁目はグループ用、3桁目はその他用です。この概念を理解するために、8進表現で権限を設定する2つの例を見てみましょう。

例1 :ユーザーとグループの両方に読み取り(4)、書き込み(2)、実行(1)のアクセス許可を付与し、他のユーザーには読み取り(4)のアクセス許可のみを付与する場合は、次を使用できます。

localhost@user1$ chmod 774 <file-name>

例2 :書き込み権限をファイルの所有者以外のすべてに制限する場合は、次を使用できます:

localhost@user1$ chmod 744 <file-name>
シンボリック表現の使用

数値ではなく記号表現を使用して権限を変更することもできます。記号表現とは、文字(記号)と文字の指定(r、w、x)を使用して、ユーザー(u)、グループ(g)、そ​​の他(o)に権限を割り当てることです。

これらの例をもう一度見てみましょう。ただし、記号表現を使用します。

例1 :ユーザーとグループの読み取り、書き込み、実行に加えて、他のユーザーの読み取りのみ、次のようにマップします:

localhost@user1$ chmod ug+rwx,o+r <filename>

例2 :ユーザーの読み取り、書き込み、実行、およびグループマップとその他のマップの読み取り権限のみ:

localhost@user1$ chmod u+rwx,go+r <file-name>

すばらしいです。皆さんのことを誇りに思います。これで、ファイルのアクセス許可の概念をマスターできました。ただし、回避したい危険なシナリオが2つあることに注意してください。したがって、chmodを使用するときは、これをベストプラクティスとして維持してください。 chmod 777 <file-name>などの境界ケースの使用は避けてください およびchmod 000 <filename>chmod 777 <file-name>を使用する すべてのユーザーにrwx権限を付与します。通常、システム内のすべてのユーザーにフルパワーを付与することはお勧めできません。 2番目のケースでは、皆さんに理解を任せます。

umasksの使用

ファイルのデフォルトのパーミッションを決定するために知っておく必要のあるもう1つの概念(umask)を皆さんに残しておきます。全体として、デフォルト値は次のとおりです。

  • Umask:0022
  • ファイル:0666
  • ディレクトリ:0777

ご存知かもしれませんが、デフォルトのファイル権限値は0644で、デフォルトのディレクトリは0755です。デフォルトのumask値は、ファイル/ディレクトリ全体のデフォルト値から差し引かれます。 umask値は/etc/profileで設定できます または~/.bashrc

まとめ

Chmodは、ファイルとディレクトリのパーミッションを操作するための優れたLinuxコマンドです。この記事で説明した概念を使用すると、Linuxベースのディストリビューションで権限を処理するための十分な知識を身に付けることができます。


Linux
  1. Linuxユーザーアカウント監視の概要

  2. Linuxのchmodとchown–Linuxでファイルのパーミッションと所有権を変更する方法

  3. Linuxでのファイルパーミッションと例

  1. Linuxのchmodコマンドの概要

  2. Linux のファイル権限 – 読み取り/書き込み/実行

  3. Linux ファイル/ディレクトリのパーミッションチートシート

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

  2. Linuxの権限の変更

  3. lsでLinuxファイルのパーミッションを確認する