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

Linux – Unixのアクセス許可とファイルタイプを理解していますか?

chmodの方法を実際に理解したことはありません 今日まで働いた。私は私に大したことを説明したチュートリアルに従いました。

たとえば、3つの異なる権限グループがあることを読みました:

  • 所有者(u
  • グループ(g
  • 全員(o

これらの3つのグループに基づいて、私は今それを知っています:

  • ファイルがユーザーによって所有されている場合、ユーザーのアクセス許可によってアクセスが決まります。
  • ファイルのグループがユーザーのグループと同じである場合、グループ権限によってアクセスが決定されます。
  • ユーザーがファイルの所有者ではなく、グループに属していない場合は、他の権限が使用されます。

また、次の権限があることも知りました:

  • 読み取り(r
  • 書き込み(w
  • 実行(x

新しく習得した知識をテストするためのディレクトリを作成しました:

mkdir test

次に、いくつかのテストを行いました:

chmod u+rwx test/
# drwx------
chmod g+rx test/
# drwxr-x---
chmod u-x test/
# drw-r-x---

しばらく浮気した後、私はついにchmodのコツをつかんだと思います このコマンドを使用して権限を設定する方法。

しかし…

まだいくつか質問があります:

  • dとは スタートスタンドで?
  • 含まれているスロットの名前と用途、および他にどのような値を保持できますか?
  • 設定と設定解除を行うにはどうすればよいですか?
  • このdの値は何ですか ? (7 =4 + 2 + 1 7 =4 + 2 + 1 7 =4 + 2 + 1しかないため)
  • なぜ人々は時々0777を使うのですか 777の代わりに 権限を設定するには?

ただし、複数の質問をするべきではないので、1つの質問で質問するようにします。

すべてのLinuxディストリビューションなどのUNIXベースのシステムでは、権限に関して、最初の部分(d)は何をしますか )の略で、権限のこの部分の用途は何ですか?

承認された回答:

質問には、ファイルタイプ、権限、さまざまな形式のchmodの使用例の3つの部分で回答します。 。

ファイルの種類

ls -lの最初の文字 出力はファイルタイプを表します。 d それがディレクトリであることを意味します。設定または設定解除することはできません。ファイルの作成方法によって異なります。ファイルタイプの完全なリストは、lsのドキュメントにあります。出くわす可能性が高いのは

  • - :「通常の」ファイル。ファイルを書き込める任意のプログラムで作成されます
  • b :ブロック特殊ファイル(通常はディスクまたはパーティションデバイス)は、mknodで作成できます
  • c :文字特殊ファイル。mknodでも作成できます。 (/devを参照してください 例)
  • d :ディレクトリ、mkdirで作成できます
  • l :シンボリックリンク、ln -sで作成できます
  • p :名前付きパイプ、mkfifoで作成できます
  • s :ソケット、nc -Uで作成できます
  • D :ドア、Solaris/openindiana上の一部のサーバープロセスによって作成されました。

許可

chmod 0777 1つのchmodにすべての権限を設定するために使用されます 変更をu+と組み合わせるのではなく、実行 など。4桁の各数字は、一連の権限を表す8進数の値です。

  • suidsgid および「スティッキー」(以下を参照)
  • ユーザー権限
  • グループ権限
  • 「その他」の権限

8進数の値は、権限の合計として計算されます:

  • 「読み取り」は4です
  • 「書き込み」は2です
  • 「実行」は1です

最初の桁の場合:

  • suid 4です。このビットが設定されたバイナリは、所有者ユーザー(通常はroot)として実行されます )
  • sgid 2です。このビットセットのバイナリは所有者グループとして実行され(これはゲームに使用されたため、ハイスコアを共有できましたが、ゲームの脆弱性と組み合わせるとセキュリティリスクになることがよくあります)、このビットセットのディレクトリに作成されたファイルはに属します。デフォルトでは、ディレクトリの所有者グループ(これは共有フォルダを作成するのに便利です)
  • 「スティッキー」(または「制限付き削除」)は1です。このビットが設定されているディレクトリ内のファイルは、その所有者、ディレクトリの所有者、またはrootのみが削除できます。 (/tmpを参照してください この一般的な例について)。
関連:Linux – Linux MintでMDMをLightDMに置き換える正しい手順は?

chmodを参照してください 詳細については、マンページを参照してください。このすべてにおいて、ファイルに対するユーザーのアクセス許可を変更する可能性のある他のセキュリティ機能(SELinux、ファイルACLなど)を無視していることに注意してください。

特殊ビットは、ファイルのタイプ(通常のファイルまたはディレクトリー)および基礎となるシステムに応じて異なる方法で処理されます。 (これはchmodに記載されています マンページ。)これをテストするために使用したシステムで(coreutilsを使用) ext4で8.23 Linuxカーネル3.16.7-ckt2)を実行しているファイルシステムでは、動作は次のようになります。ファイルの場合、明示的に設定されていない限り、特殊ビットは常にクリアされるため、chmod 0777 chmod 777と同等です 、および両方のコマンドは、特別なビットをクリアし、ファイルに対する完全なアクセス許可を全員に付与します。ディレクトリの場合、4桁の数字形式を使用して特殊ビットが完全にクリアされることはないため、実際にはchmod 0777 chmod 777とも同等です ただし、一部の特別なビットはそのまま残るため、誤解を招く可能性があります。 (この回答の以前のバージョンでは、これが間違っていました。)ディレクトリの特別なビットをクリアするには、u-sを使用する必要があります。 、g-s および/またはo-t 明示的に、または負の数値を指定するため、chmod -7000 ディレクトリのすべての特殊ビットをクリアします。

ls -lで 出力、suidsgid xの代わりに「sticky」が表示されます エントリ:suid sです またはS ユーザーのxの代わりに 、sgid sです またはS グループのxの代わりに 、および「スティッキー」はt またはT 他の人のxの代わりに 。小文字は、特殊ビットと実行可能ビットの両方が設定されていることを示します。大文字は、特殊ビットのみが設定されていることを示します。

さまざまな形式のchmod

上記の動作のため、chmodで4桁全体を使用します 混乱する可能性があります(少なくとも私は混乱していたことがわかります)。許可ビットだけでなく特別なビットも設定する場合に便利です。それ以外の場合、ファイルを操作している場合はビットがクリアされ、ディレクトリを操作している場合は保持されます。したがって、chmod 2750 少なくともsgidを取得できるようにします 正確にu=rwx,g=rx,o=;しかし、chmod 0750 必ずしも特別なビットをクリアするわけではありません。

テキストコマンドの代わりに数値モードを使用する([ugo][=+-][rwxXst] )は、おそらく習慣とコマンドの目的のケースです。数値モードの使用に慣れたら、その方法でフルモードを指定する方が簡単な場合がよくあります。また、他の多くのコマンドでアクセス許可を使用できるため、数値モードを使用してアクセス許可を考えることができると便利です(installmknod …)。

一部のテキストバリアントは便利です。ファイルを誰でも実行できるようにしたい場合は、chmod a+x 他の権限が何であるかに関係なく、それを行います。同様に、+X 実行権限の1つがすでに設定されているか、ファイルがディレクトリである場合にのみ、実行権限を追加します。これは、特殊なケースのファイルとディレクトリを使用せずに、アクセス許可をグローバルに復元するのに便利です。したがって、chmod -R ug=rX,u+w,o= chmod -R 750を適用するのと同じです すべてのディレクトリと実行可能ファイル、およびchmod -R 640 他のすべてのファイルに。


Linux
  1. ファイルのアクセス許可と保存?

  2. UNIX / Linux:ファイルとディレクトリのパーミッションの初心者向けガイド ( umask、chmod、read、write、execute )

  3. unix - ファイルの先頭と末尾

  1. Linuxでファイルのパーミッションと所有権を別のファイルにコピーする方法

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

  3. UNIX のアクセス許可とファイルの種類について

  1. LinuxまたはUNIXでApacheファイルとディレクトリのインデックスを有効にするにはどうすればよいですか?

  2. UNIX / Linux:ディレクトリとファイルでスティッキー ビットを使用する方法

  3. UNIX プロセスの概要 (Linux プロセスの内部とプロセスの種類)