GIDの意味?


14

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

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

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

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

現在、私のフォルダに対する権限は次のとおりです。 0755

所有者のUIDを設定すると、 4755

そして、グループのGIDを設定すると、 2755

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

  • これらのアクセス許可を設定することも重要ですか?

回答:


27

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

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

sticky bitわずかに異なる目的を果たします。その最も一般的な使用法は、ファイルを作成したユーザーアカウントのみがファイルを削除できるようにすることです。/tmpディレクトリについて考えてください。非常に寛容な権限があり、誰でもファイルを作成できます。これは良好で、ユーザーのプロセスが(一時ファイルを作成することができますscreensshなど、キープ状態情報で/tmp)。ユーザーの一時ファイルを保護するために、/tmpスティッキービットが設定されているため、自分だけがファイルを削除でき、あなただけが削除できます。もちろん、rootは何でもできますが、システム管理者が混乱しないことを期待する必要があります!

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


2
あ、すごい、ありがとう。したがって、スティッキービットは個人(ユーザー)の許可のようなものですか?その答えは十分に表現され、理解可能でした。
Kevdog777

1
ありがとうございました!スティッキービットは、リベラルな権限を持つディレクトリ内のファイルを少し保護します。所有者が誰であっても、すべてのファイルに同じレベルの保護が提供されるため、特定のユーザーに固有のものではありません。これは、誰でもファイルを作成できるようにし、所有者だけがファイルを破棄できるようにする方法です。
-D_Bye

+ 1、D_bye、ディレクトリに設定されたsetgidビットの例を共有してください。ありがとう
アンキット

1
@Ankit Solaris(およびほぼ間違いなく他-私は* BSDとSolarisのみを使用します)で、ディレクトリにsetgidビットが設定されている場合、そのディレクトリの下に作成された新しいファイルは、ディレクトリ自体と同じグループ所有者になります。作成プロセス(実行しているユーザー)のプライマリグループを継承しません。
D_Bye

3

ファイルの「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-:所有者はこのファイルを読み書きできますが、実行することはできません。行の後半でわかるように、所有者は「bristol」です。

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

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

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

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

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

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

たとえば、印刷スプーラーディレクトリでファイルを読み書きできるグループ「スプール」がある場合、誰もこのディレクトリを台無しにしたくないが、ファイルを印刷できるようにしたい場合は、一部の印刷プログラムまたはスクリプトには「スプール」グループがあり、SGIDビットを設定します。このプログラムを起動すると、プログラムはスプーラーディレクトリに書き込むことができます。


それは良いことです、ありがとうございます。私は許可の部分、(abbbcccdddの部分)を理解しています-しかし、それはあなたです:)
Kevdog777

tmpフォルダーに対するアクセス許可がであるのを見ましたdrwxrwxrwt .... 2 sys .... sys .... 1024 Jul 24 15:17 tmp何がabbbcccddt(文字「t」は)意味ですか?-「d = directory」、「rwx = read、write、execute」であることを理解しています。しかし、私は最後に「t」を見たことがない。tmpフォルダーに対する特別な許可ですか?
Kevdog777

小さいtは「実行可能(x)およびスティッキービットセット」です。これが/ tmpで通常行われる理由の説明については、上記を参照してください。
ブリストル

3

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

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

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.