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

Linuxで権限を変更する方法

LinuxおよびUnixでは、セキュリティはファイルのアクセス許可から始まります。非常に基本的なレベルでは、ファイルとディレクトリのアクセス許可は、システムのセキュリティにおいて重要な役割を果たします。 Linuxシステムでファイルまたはディレクトリを作成すると、デフォルトの権限が付与されます。

ファイルのアクセス許可は、次の3つのレベルで適用されます。ownergroup members およびothers 。 Linuxではchmodコマンドを使用して、これらの権限を変更します。

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

1)数値(8進数)メソッドを使用して権限を変更する

いくつかの演算子(-、+、または=)を使用して、特定のユーザー(u、g、o、またはa)にアクセス許可(r、w、またはx)を割り当てることにより、chmodコマンドでアクセス許可(アクセスモード)を変更できます。このコマンドは、数値(8進数)または記号によるアクセスモードの指定を受け入れます。

数値による方法は、ファイルとディレクトリのアクセス許可を設定するために最も一般的に使用される方法です。これを行うには、chmod numeric_permission filenameを入力します 。

各権限は数字で表され、特定のエンティティの権限は最終的に3つの列のセットで表されます。

上の図では、

「ユーザー」には、ユーザーが読み取り、書き込み、実行を行う権限(4 2 1)が付与されます。

「グループ」には、グループメンバーが読み書きできる(4 2 0)権限が与えられます。

「その他(世界)」には、他の人だけが読むことができる(4 0 0)権限が与えられます。

数値法では、すべての権限が一度に変更されます。

たとえば、

755userに読み取り+書き込み+実行権限を設定します 、groupに読み取り+実行権限を設定します othersに読み取り+実行権限を設定します 。

# chmod 755 asciiquarium.tar.gz
# ls -l asciiquarium.tar.gz 
-rwxr-xr-x 1 linoadmin linoadmin 15436 Mar 9 2013 asciiquarium.tar.gz

476userに読み取り権限のみを設定します 、groupに読み取り+書き込み+実行権限を設定します 読み取りと書き込みの権限をothersに設定します 。

# chmod 476 bootstrap
# ls -l bootstrap
-r--rwxrw- 1 root root 5747 Apr 25 01:45 bootstrap

500userに読み取り+実行権限を設定します 、groupに権限を設定しない othersに権限を設定しない 。

# chmod 500 asciiquarium_1.1/
# ls -ld asciiquarium_1.1/
dr-x------ 2 linoadmin linoadmin 4096 Mar 9 2013 asciiquarium_1.1/

数値法を使用する場合は、常に3つの値(所有者、グループ、その他)を指定する必要があります。

2)シンボリックモードを使用して権限を変更する

数値アクセスモードは、ほとんどのLinuxユーザーに好まれています。ただし、シンボリックフォームを使用することを好む人もいます。これは、通常、既存のモードを完全に置き換えるのではなく変更するためです。

シンボリックモードはchmod entity=permissions filenameとして使用されます 。シンボリックモードの仕様には3つの部分があり、個々の文字で構成され、文字を使用して部分を識別します。

  • Entity :ユーザー所有者= u 、グループ所有者= g 、その他= o 、およびすべて= a
  • Operation + 追加するには、- 削除する、または = 割り当てる(他の既存の権限を削除する)
  • Permissions to set r =読む、 w =書き込み、および x =実行

理解してもらうためのいくつかの例。

chmod +x  :すべてのエンティティユーザー、グループ、その他の実行権限を追加します。スクリプトまたはプログラムを実行するために実行可能にするために使用されます

# chmod +x hello.sh
# ls -l hello.sh 
-rwxr-xr-x 1 root root   66 May 15 20:12 hello

これで、次のようにスクリプトを実行できます

# ./hello 
Hello... How are you ?

u+x :ユーザーのみの実行権限を追加

# chmod u+x backupdb.sh
# ls -l backupdb.sh 
-rwxr--r-- 1 linoadmin linoadmin 15436 Mar 9 2013 backupdb.sh

go-w :グループおよび他のクラスからのみ書き込み権限を削除してください。

# chmod go-w script-test/
# ls -ld script-test/
drwxr-xr-x 3 root root 4096 Apr 25 02:21 script-test/

a=rw :すべてのユーザーに読み取りと書き込みの権限を設定しますが、実行は許可しません。

# chmod a=rw bootstrap
# ls -l bootstrap
-rw-rw-rw- 1 root root 5747 Apr 25 01:45 bootstrap

g-x,o-rxgroupの実行権限を削除します othersの読み取り+実行権限を削除します 。

注:カンマの後にスペースを使用しないでください(

# chmod g-x,o-rx baba/

lsコマンドを使用して権限を確認しましょう:

# ls -ld baba/
drwxr----- 2 root root 4096 Apr 13 01:35 baba/

シンボリックメソッドを使用すると、組み合わせていくつかのエンティティを同時に操作することができます。

シンボリックモードを使用する場合、指定していない権限は、chmodコマンドを実行する前の状態のままであることに注意してください

3)権限を再帰的に変更する

オプションを指定せずにディレクトリでchmodコマンドを使用しても、そのサブディレクトリの権限には影響しません。これは、権限がディレクトリ自体にのみ適用されることを意味します。

ディレクトリとそのサブディレクトリのアクセス許可を(再帰的に)変更するには、-Rを使用できます。 オプション。

たとえば、500を適用した'asciiquarium_1.1'ディレクトリを見てください。 権限。

'asciiquarium_1.1'ディレクトリ内のファイルとディレクトリのアクセス許可を一覧表示すると、'500'に設定できません。

# ls -l asciiquarium_1.1/
total 60
-rw-rw-r-- 1 linoadmin linoadmin 27679 Mar  9  2013 asciiquarium
-rw-rw-r-- 1 linoadmin linoadmin   228 Mar  9  2013 CHANGES
-rw-rw-r-- 1 linoadmin linoadmin 18092 Mar  9  2013 gpl.txt
-rw-rw-r-- 1 linoadmin linoadmin    45 Mar  9  2013 MANIFEST
-rw-rw-r-- 1 linoadmin linoadmin  1060 Mar  9  2013 README

それでは、chmod -Rを使用しましょう。 次のコマンドを使用して、「asciiquarium_1.1」ディレクトリに対して同じ権限を持つコマンド:

# chmod -R 500 asciiquarium_1.1/

次に、ファイルとディレクトリのアクセス許可を次のように確認しましょう。

# ls -l asciiquarium_1.1/
total 60
-r-x------ 1 linoadmin linoadmin 27679 Mar  9  2013 asciiquarium
-r-x------ 1 linoadmin linoadmin   228 Mar  9  2013 CHANGES
-r-x------ 1 linoadmin linoadmin 18092 Mar  9  2013 gpl.txt
-r-x------ 1 linoadmin linoadmin    45 Mar  9  2013 MANIFEST
-r-x------ 1 linoadmin linoadmin  1060 Mar  9  2013 README

ファイルとサブディレクトリに権限が設定されていることがわかります。

4)特別なビット権限

パーミッションで完了するタスクのほとんどは、読み取り、書き込み、および実行のパーミッションです。ただし、ファイルシステム内のファイルとディレクトリに割り当てることができる他のいくつかの特別なアクセス許可があります。これらの特別な権限は、ファイルまたはディレクトリのモードの先頭に追加される追加の数字として参照されます。

Linuxファイルシステムで使用できる特別なビットは次のとおりです。

  • SUID :ユーザーIDの設定権限により、ユーザーはプログラムのユーザー所有者であるかのようにプログラムを実行できます。ほとんどの場合、ユーザー所有者はrootユーザーです。この権限セットの数値は4XXXです(「XXX」は前述の3つのセットの数値に置き換えられます)。
  • SGID :ディレクトリに設定すると、グループIDの設定権限により、ディレクトリに作成されたすべての新しいファイルのグループ所有権がディレクトリのグループ所有者に自動的に付与されます(数値=2XXX)。ファイルに設定すると、SGIDを使用すると、ユーザーはファイルのグループ所有者であるかのようにプログラムを実行できます。
  • スティッキービット:t 彼の権限セットは、「非所有者」が共通ディレクトリ(numeric =1XXX)内のファイルを削除しないようにするために使用されます。スティッキービットディレクトリでは、ファイルの所有者またはディレクトリの所有者のみがファイルを削除できます(rootは常にファイルも削除できます)。

理解するために、1つの例を挙げましょう:

次のコマンドを使用して、ファイルにSUID権限を適用します。

# chmod 4755 bootstrap
# ls -l bootstrap
-rwsr-xr-x 1 root root 5747 Apr 25 01:45 bootstrap

結論

権限を変更するときは、常に数値法または記号法のいずれかを使用できます。数値のアクセス許可が最も頻繁に使用され、毎回表示されます。原則として、権限に小さな変更を加えるのではなく、数値モードを使用してオブジェクトに権限を設定または強制することをお勧めします。他のユーザーが所有するファイルとディレクトリのアクセス許可を変更するには、rootまたはsudoユーザーアクセス権が必要です。そうでない場合は、自分が所有するファイルとディレクトリのアクセス許可を変更することしかできません。


Linux
  1. Linuxでホスト名を変更する方法

  2. Linuxでシェルを変更する方法

  3. Linuxでchmod(モード変更)コマンドを使用する方法

  1. Linuxでホスト名を変更する方法

  2. Linuxでユーザー名を変更する方法

  3. LinuxでSSHポートを変更する方法

  1. Linuxファイルパーミッションチュートリアル:パーミッションを確認および変更する方法

  2. Linuxでchmodを使用してファイルパーミッションを再帰的に変更する方法

  3. Redhat7Linuxでホスト名を変更する方法