常に同じUIDとGIDのペアがありますか?


11

ファイル/ディレクトリの所有権をchmod.I を使用して変更する必要があります。所有者のユーザー名しか知りませんが、デフォルトのグループ名を同時に変更します。この段階ではグループ名が決まっていないので、ユーザー名と同じにしています

chown -R username:username path_to_dir

コマンドはさまざまなシステム/ユーザーに対して実行される可能性があるので、私の懸念は、Linuxには常にユーザー名(ユーザー):ユーザー名(グループ)のペアがあるか、ある時点でこのデフォルトのグループ名がエラーになる可能性があることです。

所属するユーザーからGIDを探し始めましたが

id username | tr '(=)' ':' | awk -F: '{print $3}

しかし、私は知りたい知識について。これまで/etc/passwd /etc/groups、「shutdown、halt、sync、opeartor」のような一部のユーザーを除いて、すべてのユーザーがグループにリストされている分析も行われていました。

編集1:id -gnユーザー名も良いオプションです


3
2番目の例では、探していましたid -g usernameか?
user1686 2014年

1
またはid -gn username、IDの代わりに名前を出力します。
クリスティアンCiupitu 2014年

Linuxには、「デバイスグループ」も多数あります。disk、mem、kmem、audio、videoなど-対応するユーザーがいません。
Baard Kopperud、2014年

回答:


20

groupname = usernameが存在するという保証はありません。

最も一般的なシナリオは、システム管理者がLinuxで使用するシステムでローカルに新しいユーザーを作成することで、グループの明示的な指定がないことです。つまり、グループはデフォルトでユーザー名と同じように作成され、ユーザーに割り当てられます。新しく作成されたグループのデフォルトのGID。

これは、別のシステム管理者がこの手順に従うという意味ではありません。NISやLDAPなどの他のネーミングサービスを混在させると、デフォルトに割り当てられたグループは、ユーザー名と同じグループ名を持つ新しいGIDとは異なる可能性があります。

したがって、username = groupnameという事実に依存するべきではありません


また、ローカル管理ポリシーだけでなく、さまざまなディストリビューションに含まれているツールにも依存する可能性があります。多くのサイトでは、提供されているツールで使用されるデフォルトをそのまま使用します。私が長年使ってきたディストリビューションのほとんどには、useraddデフォルトで同じ名前のグループを作成するスクリプトが付属していますが、すべてのスクリプトがそうであるわけではありません。前回(多くの場合、何年も前)に使用したとき、slackwareのユーザー作成スクリプトはデフォルトで、usersすべてのユーザーがメンバーになっている単一のグループを持っています。 docs.slackware.com/slackbook:usersは、これが依然として当てはまる可能性があることを示唆しています。
ジュール

11

ユーザープライベートグループのイディオムは、多くの場合、最近のLinuxシステムで使用され、* nixのは、実際には、各ユーザーに一意のプライマリグループを必要としない、そしてそれは、次のような一般的なプライマリグループを共有するために、いくつかのユーザーアカウントに対して十分に可能ですusersstaff

UPGイディオムが適用されている場合でも、特定のUPGの数値GIDが所有者のUIDと同じである必要はありませんが、ほとんどのアカウント作成ツールは、UIDとGIDを順番に割り当てようとします。利用可能です。ユーザーやグループを複数のシステム間で一貫させる必要がある場合(たとえば、既存のNFS共有に対応するため)、IDは簡単に脱調する可能性があります。


6

Rameshがデフォルトで示しているように、UIDとGIDは通常のユーザーと同じです。ただし、これが常に当てはまるわけではないため、システムに大混乱をもたらす可能性があるため、このような仮定をしないでください。ファイル/フォルダーのアクセス許可を間違ったグループに割り当てるのはやや面倒ですよね?

ですから、短い答え:いいえ、UIDは常にGIDと同じではありません。それでも、/etc/passwdデフォルトグループのUIDとGIDの両方が同じ行に含まれているので、それらを抽出するのはかなり簡単です。


「デフォルトでは、UIDとGIDは通常のユーザーと同じです」-実際、このステートメントは、「一部の一般的なLinuxディストリビューション」に追加した場合にのみ当てはまります。はい、Ubuntu他。これをこのように行いますが、私は一般的な「ユーザー」グループをデフォルトよりも検討します。
jstarek 2014年

はい、100%正確であることを目指している場合、あなたは正しいです。単一の例外を見逃さないためには、おそらくさらに12のさまざまな「if」を追加する必要があります。私のDebianベースのディストリビューション(LMDE、Crunchbang、純粋なDebian)はすべてこのように動作し、1つのCentOS 6.5も同様に動作します。私は、ユーザーの膨大な量を追加する必要がないため、私が使用する傾向があることを断っておくadduserのではなくをuseraddし、中にデフォルトが/etc/adduser.confするように設定されているUSERGROUPS=yes新しいユーザーごとにグループを作成します。これらのグループは、通常(常にではありませんが)、作成されたユーザーのUIDと同じGIDを持っています。
Erathiel、2014年

2

このリンクから、以下の情報がわかります。

ユーザーID(UID)は、Unixのようなオペレーティングシステムによって各ユーザーに割り当てられる一意の正の整数です。各ユーザーはそのUIDによってシステムに識別され、ユーザー名は通常、人間のインターフェースとしてのみ使用されます。

UIDは、対応するユーザー名およびその他のユーザー固有の情報とともに/etc/passwdファイルに保存されます。このファイルは、次のようにcatコマンドで読み取ることができます。

cat /etc/passwd

3番目のフィールドにはUIDが含まれ、4番目のフィールドにはグループID(GID)が含まれますこれはデフォルトで、すべての一般ユーザーのUIDと同じです。

編集

ただし、@ Karlsonが指摘しているように、デフォルトでUIDがGIDと等しいとは限りません。

このステートメントは、通常のグループが個別に追加されておらず、ユーザーの作成時にグループが明示的に指定されていない場合にのみ当てはまります。デフォルトでは、次に追加されるユーザーのgid = max(gid) + 1です。* NIXシステムが必要とするUIDとGIDの間に相関関係はありません。これらは、場合によっては偶然一致するだけです。

その他の参考文献

http://www.thegeekstuff.com/2009/06/useradd-adduser-newuser-how-to-create-linux-users


最後のステートメントは完全に偽です。UID = GIDは、新しいユーザーがローカルシステムで作成され、GIDが既存のグループに明示的に割り当てられていない場合のみです。
Karlson、2014年

いいえ、それは「デフォルトで」とはっきり言っているので、完全に誤りではありません。いくつかの明確化はここで大いに感謝されます。
Erathiel、2014年

1
@Erathielデフォルトでは、GIDはユーザーの作成時に割り当てられたGIDと同じです。ユーザーがローカルで作成さ-guseradd、プログラムのフラグにGIDを指定しない場合、グループが作成され、GIDシフトが発生していない限り、= UIDになります。ただし、作成方法は、あなたがこのケースになるという事実に頼ることはできません知られていない場合uid=123456(ME) gid=777(ABC) groups=777(ABC)
Karlson

一部のシステムでは、useraddはアカウントに同じ名前のグループも作成します。Linuxのフレーバーによって異なります。
ピート

@カールソン、私はそれが常に等しいだろうと述べたことはありません。デフォルトでは、すべての一般ユーザーのUIDと等しいことが明確に指定されています
Ramesh 2014年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.