UNIXの権限とファイルタイプの理解

UNIXの権限とファイルタイプの理解

chmod私は今日までそれがどのように機能するのか本当に理解していませんでした。私はチュートリアルに従い、それは私に1つの大きなことを説明しました。

たとえば、次の 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

しかし、いくつかの質問をしてはいけないので、一つの質問でまとめてみましょう。

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

ベストアンサー1

あなたの質問については、ファイル形式、権限、さまざまな形式の3つの部分に分けて回答しますchmod

ファイルタイプ

出力の最初の文字はls -lファイル形式を表します。dつまり、ディレクトリです。ファイルの生成方法によっては設定や設定解除はできません。ファイル形式の完全なリストは以下にあります。ls ドキュメント;あなたが会えるのは

  • -:ファイルを書き込むことができるすべてのプログラムを使用して生成された「一般」ファイル
  • b:通常、ディスクまたはパーティションデバイスであるブロック特殊ファイルは、以下を使用して作成できます。mknod
  • c:文字特殊ファイルを使用して作成することもできますmknod/dev例を参照)。
  • d:次のコマンドを使用して作成できるディレクトリmkdir
  • l:次のコマンドを使用して生成できるシンボリックリンクln -s
  • p:次のコマンドを使用して生成できる名前付きパイプmkfifo
  • s:Socket(次のコマンドを使用して作成できます)nc -U
  • D:ドア、Solaris / openindianaの一部のサーバープロセスによって生成されます。

特権

chmod 0777変更などをchmod組み合わせるのではなく、1回の実行ですべての権限を設定するために使用されます。u+4つの数値のそれぞれは、権限セットを表す8進値です。

  • suidそしてsgid「粘着性」(下記参照)
  • ユーザー権利
  • グループ権限
  • 「その他」権限

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

  • 4で「読む」
  • 「書く」は2
  • 「実行」は1です。

最初の数字の場合:

  • suid例 4、このビットが設定されたバイナリは所有者ユーザー (通常はroot) で実行されます。
  • sgid2です。このビットセットを持つバイナリは所有者グループとして実行されます(これはゲームで高いスコアを共有するために使用されますが、ゲームの脆弱性と組み合わせるとセキュリティ上のリスクがあることがよくあります)、このビットセットで実行されます。ディレクトリはデフォルトでディレクトリの所有者グループに属します(共有フォルダを作成するときに便利です)。
  • 固定性(または削除制限)は1です。このビットが設定されているディレクトリ内のファイルは、その所有者、ディレクトリ所有者、またはroot/tmp一般的な例については参考資料を参照)のみ削除できます。

バラよりchmodマンページもっと学ぶ。ここでは、ファイル(SELinux、ファイルACL ...)に対するユーザー権限を変更できる他のセキュリティ機能を無視しています。

特殊ビットは、ファイルタイプ(通常のファイルまたはディレクトリ)と基本システムによって異なります。 (これはマニュアルページに記載されていますchmod。)これをテストするために使用したシステム(ファイルシステムcoreutils8.23 ext4、Linuxカーネル3.16.7-ckt2を実行)での動作は次のとおりです。ファイルの場合、特別なビットは明示的に設定されていない限り常にクリアされるため、chmod 0777同じですchmod 777。両方のコマンドは特殊ビットをクリアし、すべての人にファイルに対するフルアクセス権を与えます。ディレクトリの場合、特殊ビットは4桁の形式を使用して完全に消去されないため、実際にはchmod 0777同じですchmod 777が、一部の特殊ビットがそのまま維持されるため、誤解を招くことがあります。 (この回答の以前のバージョンではこれらの間違いがありました。)ディレクトリの特殊ビットをクリアするには、を使用するか、明示的に負の値を指定する必要がありますu-sg-sこれにより、o-tディレクトリchmod -7000内のすべての特殊ビットがクリアされます。

ls -l出力では、 "sticky"suidsgid項目の位置に表示されますxsuidofsまたはSfor the user x, sgidforsまたはSfor the groupxおよび "sticky" for tor Tfor someone else x。小文字は特殊ビットと実行可能ビットの両方が設定されたことを示し、大文字は特殊ビットのみが設定されたことを示します。

様々な形態のchmod

上記の動作により、合計4桁の数字を使用するのは混乱する可能性がありchmodます(少なくとも私にとっては混乱していました)。これは、特殊ビットと特権ビットを設定したい場合に便利です。それ以外の場合、ファイルを操作する場合はビットがクリアされ、ディレクトリを操作している場合はビットが保持されます。したがって、少なくとも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他のすべてのファイルに適用されます。

おすすめ記事