web-dev-qa-db-ja.com

GIDの意味?

GIDは実際にはどういう意味ですか?

私はそれをグーグル化しました、そしてこれは linux.about.com が言ったことです:

プロセスのグループ識別番号。有効なグループ番号は、/etc/group、および/etc/passwdファイルのGIDフィールドに記載されています。プロセスが開始されると、そのGIDはその親プロセスのGIDに設定されます。

  • しかし、それはどういう意味ですか?

私のフォルダに対する権限は現在0755にあります

所有者のUIDを設定すると4755になることを理解しました

グループのGIDを設定すると、2755になります

他の人にスティッキービットを設定すると、1755になります

  • これらの権限を設定することは重要ですか?
14
Kevdog777

UNIXのようなシステムのすべてのプロセスは、すべてのファイルと同様に、所有者(実際のユーザー、またはdaemonbinmanなどのシステム「疑似ユーザー」)とグループ所有者を持っています。ユーザーのファイルのグループ所有者は通常、そのユーザーのプライマリグループであり、同様に、開始するプロセスは通常、ユーザーIDとプライマリグループIDによって所有されます。

ただし、特定のコマンドを実行するには昇格された特権が必要な場合がありますが、完全な管理権限を与えることは望ましくありません。たとえば、passwdコマンドは、システムのシャドウパスワードファイルにアクセスして、パスワードを更新できるようにする必要があります。明らかに、すべてのユーザーにroot権限を与えたくないので、ユーザーがパスワードをリセットできるようにします-これは間違いなく混乱につながります!代わりに、特定のタスクを実行するためにユーザーに昇格された特権を一時的に付与する別の方法が必要です。それがSETUIDおよびSETGIDビットの目的です。これは、マークされたコマンドの実行中に、ユーザーの特権を一時的に上げるようにカーネルに指示する方法です。 SETUIDバイナリは実行可能ファイルの所有者の権限(通常はroot)で実行され、SETGIDバイナリは実行可能ファイルのグループ所有者のグループ権限で実行されます。 passwdに属し、SETUIDであるrootコマンドの場合、通常のユーザーがroot権限で実行することにより、制御された予測可能な方法でパスワードファイルの内容に直接影響を与えることができます。 UNIXライクなシステムには、他にも多数のSETUIDコマンド(chshscreenpingsuなど)があり、すべて正常に動作するには管理者特権が必要です。カーネルがプロセスのGIDを一時的に変更してログファイルなどにアクセスできるようにするSETGIDプログラムもいくつかあります。sendmailはそのようなユーティリティです。

sticky bitの目的は少し異なります。その最も一般的な用途は、ファイルを作成したユーザーアカウントのみがそのファイルを削除できるようにすることです。 /tmpディレクトリについて考えてみましょう。それは非常に自由な許可を持っているので、誰でもそこでファイルを作成することができます。これは適切であり、ユーザーのプロセスが一時ファイルを作成できるようにします(screensshなど、状態情報を/tmpに保持します)。ユーザーの一時ファイルを保護するために、/tmpにはスティッキービットが設定されているので、自分だけがファイルを削除でき、自分だけがファイルを削除できます。もちろん、rootは何でもできますが、sysadminが混乱しないことを期待する必要があります。

通常のファイル(つまり、非実行可能ファイル)の場合、SETUID/SETGIDビットを設定しても意味がありません。一部のシステムのディレクトリのSETGIDは、そのディレクトリに作成される新しいファイルのデフォルトのグループ所有者を制御します。

27
D_Bye

私はあなたがファイルの「SGID」ビットを意味すると思います、それはそのGIDと同じではありません。

これが私のコンピューター上の典型的なファイルです(ls -lの出力)。

-rw-r----- 1 bristol    users 16 2012-07-23 11:36 file.txt
abbbcccddd <-- See explanation below.

最初の10個のシンボルを見ると、

(a)-:これは単純な古いファイルです(ディレクトリ、シンボリックリンク、パイプなどとは対照的です...)。

(b)rw-:所有者はこのファイルを読み書きできますが、実行はできません。後で見ることができるように、所有者は「ブリストル」です。

(c)r--:このファイルが属するグループのメンバー(この例では「ユーザー」)は、所有者以外はこのファイルを読み取ることはできますが、書き込むことも実行することもできません。

(d)---:他のユーザーはこのファイルにまったくアクセスできません(もちろんルートを除く)。

GIDフィールドは、このファイルが属するグループ(この場合は「ユーザー」)を示すフィールドです。

あなたの説明に基づいて、おそらくあなたが意図したフィールドはSGIDビットであり、これは私が思いつくよりも良い説明です:

http://www.codecoffee.com/tipsforlinux/articles/028.html

短いバージョンは次のとおりです。実行可能ファイルにSGIDビットが設定されている場合、グループに属していないがこのファイルを実行できる人は、プログラムの実行中に一時的にこのグループの権限を取得します。

たとえば、印刷スプーラディレクトリのファイルを読み書きできるグループ "spool"がある場合、だれでもこのディレクトリを台無しにしたくないが、ファイルを印刷できるようにしたい場合は、一部の印刷プログラムまたはスクリプトにはグループ "spool"があり、SGIDビットが設定されているため、だれかがこのプログラムを起動すると、プログラムを実行しているユーザーがフルアクセス権を取得しなくても、プログラムはスプーラーディレクトリに書き込むことができます。

3
Bristol

GIDは、ご存じのとおり、グループのID番号です。これは、OSが何か(プロセス、ファイルなど)に関連付けられた(ユーザー)グループを表現する便利な方法です。潜在的に長い文字列識別子の代わりに、固定サイズの数値として表すことができます。

4桁の8進数字(たとえば、0755)のファイル許可値では、3番目の数字はファイルに対するグループの許可を指定します。 1桁目を省略した場合、グループの権限を指定するのは2桁目です。この点ではファイルとディレクトリは同じように扱われますが、ディレクトリの場合、各アクセス権ビットの正確な意味は直感的ではないことに注意してください。

2つの概念は関連していますが、目的は大きく異なります。

あなたの質問については「それらの許可を設定することはさらに重要ですか?」;それらは常にsomethingに設定されますが、ほとんどの場合、最初の数字は0(「特別なものなし」)であるため、簡潔にするために省略される傾向があります。他の値を指定する必要があるかどうかは、問題のファイルまたはディレクトリの使用パターンに完全に依存します。

3
a CVn