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

Linuxのchmodコマンドの概要

Linuxシステム上のすべてのオブジェクトには、ユーザーがそのオブジェクトに対して実行できるアクションを説明する権限モードがあります。権限には次の3つのタイプがあります:読み取り( r )、書く( w )、実行します( x

読む ファイルはその内容を表示するためのものです。たとえば、テキストファイルには読み取りが必要です 誰かがその中のテキストを読むための許可。ユーザーがそのファイルに文を追加したい場合は、書き込みが必要です 許可。 実行 権限により、誰かがシェルスクリプトやバイナリプログラムファイルなどのファイルを実行できるようになります。

基本的な権限

ls -l <​​/ strong> コマンドは、ファイルに割り当てられた権限を表示します。例:

ls -l
-rw-rw-r-- 1 bruce bruce    0 Jul 30 16:25 schedule1.txt

一部の権限( rw )異なるエンティティを参照しているため、複数回表示されます: user グループ 、およびその他ユーザー は所有者と同義であり、グループ ユーザーのプライマリグループを指し、どちらもブルースです。 。 その他 他のすべてのユーザーを指します。

最初の位置は、オブジェクトのタイプを示します:- ファイルの場合、 d ディレクトリの場合、および l シンボリックリンクの場合。次の9つのポジションは、3つにグループ化され、許可モードについて説明します。ポジションはrの順序で並べられます 、 w x 、およびグループはユーザーに順序付けられます 、グループその他

--- --- --- rwx rwx rwx
uuu ggg ooo u =user、g =group、o =other
ファイル

すべてのエンティティに読み取り、書き込み、および実行ビットが設定されたファイルが表示されます。

rwxrwxrwx 

もちろん、私たちは通常、現実の世界ではこれを許容的にファイルを構成しません。これは、各位置がどのように使用されるかを示したものにすぎません。

次の例では、ファイルはその所有者( pablo )用に構成されています )読み取りおよび書き込み権限を持ち、グループのメンバーには読み取り権限のみを持ち、他のすべての人には権限を持たないようにします。

-rw-r----- 1 pablo pablo    0 Jul 30 16:25 textfile

chmod コマンドは、システム内のオブジェクトの許可モードを変更します。これは、Linuxセキュリティコマンドのセットで最も使用され、重要なコマンドの1つです。

プラス( + )記号は、許可とマイナス(-)を追加します )記号は許可を削除します。 chmod u + rを読むことができます ユーザーにreadを与えるため、「userplusread」として 許可。コマンドchmodu-r 読み取りを使用するため、「ユーザーマイナス読み取り」を意味します ユーザーから離れた許可。

ディレクトリ

同じ3つの権限がディレクトリにも適用されます。ディレクトリには読み取りが必要です ユーザーがそのコンテンツを表示するための権限。 書き込みが必要になります ユーザーがディレクトリに追加するための権限(たとえば、新しいファイルを作成するため)。ユーザーがディレクトリに変更する場合( cd )、実行する必要があります 許可。

drw-rw-r-- 2 pablo pablo 4096 Jul 30 15:56 JBOSS

PabloはJBOSSディレクトリの所有者である可能性がありますが、実行権限がないため、 cdすることはできません。 それに。彼はコマンドchmodu + xを使用できます 権限を追加すると、彼は cd できます それに。

$ cd JBOSS
bash: cd: JBOSS: Permission denied
$ chmod u+x JBOSS
$ ls -l
drwxrw-r-- 2 pablo pablo 4096 Jul 30 15:56 JBOSS
$ cd JBOSS
$ pwd
/opt/JBOSS
結合された引数

引数はコンマを使用して組み合わせることができます。この例では、権限を設定するために必要なコマンドは1つだけなので、グループはファイルに書き込んだり、他のユーザーがファイルを読み取ったりすることはできません。

$ chmod o-r,g-w readme.txt
$ ls -l
-rw-r----- 1 pablo share 0 Jul 31 13:34 readme.txt

これは「その他から読み取りを差し引いたものとグループから書き込みを差し引いたもの」と読むことができます。

Deniseがhome_backup.shというBashスクリプトを作成したとします。 実行したい 許可。彼女はまた、他の誰かがそれを読んだり、書いたり、実行したりするのを防ぎたいと思っています。これを行う1つの方法は、プラス記号とマイナス記号を使用することです。

$ chmod go-rw,u+x home_backup.sh

もう1つの方法は、equals( =)を使用することです。 )シンボル。これにより、以前の設定に関係なく、アクセス許可が完全に設定されます。 2番目の値の後にスペースがあることに注意してください。これは、なしの値を示します :

$ chmod u=rwx,go= home_backup.sh

これは、「ユーザーの同等の読み取り、書き込み、実行の権限と、グループおよびその他の同等の権限なし」と読むことができます。

数値モード

Chmodは、各位置に割り当てられた値を使用する数値モードもサポートしています。

所有者 グループ その他
r w x r w x r w x
400 200 100 40 20 10 4 2 1

一連の権限の合計値を計算して、単一の引数としてchmodコマンドに渡すことができます。デニスと彼女のバックアップスクリプトの例を見てください。数値モードを使用してスクリプトの権限を設定する場合は、最初に合計値を計算する必要があります。

-rwx------ 1 denise denise 0 Jul 31 13:53 home_backup.sh

デニスは、適用したい各権限に対応する番号を追加します:

400 + 200 + 100 =700

彼女のコマンドはchmod700 home_backup.shになります 。デニスがファイルの元の権限をリセットしたいとします:

-rw-rw-r-- 1 denise denise 0 Jul 31 13:53 home_backup.sh

これらの権限の値は664と計算されます:

400 + 200 + 40 + 20 + 4 =664

デニスはコマンドchmod664 home_backup.shを使用できます 元の権限を復元します。

特別なモード

オブジェクトには、他に3つのモードを設定できます。

名前 シンボリック 数値
setuid s 4000
setgid s 2000
スティッキー t 1000

SetUID ビットは、実行可能ファイルのユーザー所有権を強制します。設定すると、ファイルは、実行者ではなく、ファイル所有者のユーザーIDで実行されます。

$ chmod u+s

SetGID ビットは、ファイルとディレクトリにグループの所有権を強制します。設定すると、ディレクトリに作成されたファイルまたはディレクトリは、ユーザーではなく、ディレクトリのグループ所有権を取得します。ファイルに設定すると、ファイルは常にユーザーとしてではなく、所有するグループとして実行されます。

$ chmod g+s

スティッキー 「制限付き削除フラグ」とも呼ばれるビットをディレクトリに設定して、ディレクトリの所有者以外の人がそのディレクトリ内のファイルを削除できないようにすることができます。

$ chmod o+t

スティッキービットは、他のアクセス許可の値にその値を追加することにより、数値モードで設定できます。値が755のオブジェクトがあり、スティッキービットを設定する場合は、1000を追加します。

1000 + 400 + 200 + 100 + 40 + 10 + 4 + 1 =1755

このコマンドはchmod1755になります 。いくつかのシンボリックメソッドは同等です。一例はchmodu =rwx、go =rx、o + t

追加

手紙a すべてのユーザーに権限を割り当てるためのショートカットです。コマンドchmoda + rwx chmod ugo + rwxと同等です 。

再帰的

他の多くのLinuxコマンドと同様に、chmodには再帰的な引数 -Rがあります。 、ディレクトリとその内容を再帰的に操作できます。再帰的とは、コマンドが、ディレクトリ自体だけでなく、指定されたディレクトリの下にあるすべてのオブジェクトを操作しようとすることを意味します。この例は空のディレクトリから始まり、 -vを追加します (冗長な)引数なので、chmodはそれが何をしているかを報告します:

$ ls -l . conf
.:
drwxrwxr-x 2 alan alan 4096 Aug  5 15:33 conf

conf:
-rw-rw-r-- 1 alan alan 0 Aug  5 15:33 conf.xml
$ chmod -vR 700 conf
mode of 'conf' changed from 0775 (rwxrwxr-x) to 0700 (rwx------)
mode of 'conf/conf.xml' changed from 0664 (rw-rw-r--) to 0700 (rwx------)
リファレンス

参照ファイルコマンド(-reference =RFILE )を使用して、別のファイル( RFILE )のモードを複製できます。 )、参照ファイルとして知られています。これは、特定の構成に一致するようにファイルのモードを変更する場合、または正確なモードがわからない場合、または計算に時間をかけたくない場合に便利です。

$ ls -l
-rw-r--r-x 1 alan alan 0 Aug  5 17:10 notes.txt
-rw-rw-r-- 1 alan alan 0 Aug  5 17:10 readme.txt
$ chmod --reference=readme.txt notes.txt
$ ls -l
-rw-rw-r-- 1 alan alan 0 Aug  5 17:10 notes.txt
-rw-rw-r-- 1 alan alan 0 Aug  5 17:10 readme.txt
変更を報告する

その他のLinuxリソース

  • Linuxコマンドのチートシート
  • 高度なLinuxコマンドのチートシート
  • 無料のオンラインコース:RHELの技術概要
  • Linuxネットワーキングのチートシート
  • SELinuxチートシート
  • Linuxの一般的なコマンドのチートシート
  • Linuxコンテナとは何ですか?
  • 最新のLinux記事

chmodコマンドには-cもあります (-変更 )引数。変更が行われたときにのみレポートするようにchmodに指示します( -v に対して) 、または-動詞 、chmodにすべての出力を報告するように指示します)。 Chmodは、操作が許可されていない場合など、他のことも報告します。

引数-f-サイレント-静か )ほとんどのエラーメッセージを抑制します。この引数を-cで使用する 実際の変更のみが表示されます。

ルートを保持

ルート( / Linuxファイルシステムの)は、非常に敬意を持って扱う必要があります。誰かがこのレベルでコマンドを間違えると、その結果はひどくなり、システムが完全に役に立たなくなる可能性があります。特に、あらゆる種類の変更を行う再帰コマンドを実行している場合、またはさらに悪いことに、削除を行う場合はなおさらです。幸い、chmodコマンドの-preserve-root 引数はルートを保護および保持します。ルートで再帰的なchmodコマンドを使用して引数を使用すると、何も起こらず、次のメッセージが表示されます。

[alan@localhost ~]# chmod -cfR --preserve-root a+w /
chmod: it is dangerous to operate recursively on '/'
chmod: use --no-preserve-root to override this failsafe

このオプションは、再帰的に使用されない場合は効果がありません。ただし、rootユーザーがコマンドを実行する場合、 /の権限 変更されますが、他のファイルやディレクトリの変更は行われません。

[alan@localhost ~]$ chmod -c --preserve-root a+w /
chmod: changing permissions of '/': Operation not permitted
[root@localhost /]# chmod -c --preserve-root a+w /
mode of '/' changed from 0555 (r-xr-xr-x) to 0777 (rwxrwxrwx)

驚いたことに、これはデフォルトの引数ではありません。 -no-preserve-root は。 「保存」オプションを指定せずにコマンドを実行すると、デフォルトで「保存なし」モードになり、変更してはならないファイルの権限が変更される可能性があります。

[alan@localhost ~]$ chmod -cfR a+x /
mode of '/proc/1525/task/1525/comm' changed from 0644 (rw-r--r--) to 0755 (rwxr-xr-x)
mode of '/proc/1541/task/1541/comm' changed from 0644 (rw-r--r--) to 0755 (rwxr-xr-x)
mode of '/proc/1541/task/1580/comm' changed from 0644 (rw-r--r--) to 0755 (rwxr-xr-x)
mode of '/proc/1541/task/1592/comm' changed from 0644 (rw-r--r--) to 0755 (rwxr-xr-x)
mode of '/proc/1557/task/1557/comm' changed from 0644 (rw-r--r--) to 0755 (rwxr-xr-x)
mode of '/proc/1558/task/1558/comm' changed from 0644 (rw-r--r--) to 0755 (rwxr-xr-x)
mode of '/proc/1561/task/1561/comm' changed from 0644 (rw-r--r--) to 0755 (rwxr-xr-x)
> 結論

Linuxシステム上のすべてのオブジェクトには、一連の権限があります。不要なアクセスを防ぐために、時々それらをチェックして維持することが重要です。


Linux
  1. Linuxコマンドラインでのtcpdumpの使用の概要

  2. Linuxのchownコマンドの概要

  3. Linuxlsコマンドをマスターする

  1. Linuxでのalternativesコマンドの概要

  2. diffコマンドの概要

  3. Linux 'w' コマンドの出力で IDLE 列を読み取る方法は?

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

  2. Linuxchmodコマンド

  3. Linux での locate コマンド