今日、私のcentosシステムに「乗客」Webサーバーをインストールするときに奇妙な問題が発生しました。
サーバーは、現在ユーザーグループを使用しようとしても、自分が作成するディレクトリにGIDを設定できません。エラーは次のとおりです。
"/tmp/passenger.spawn.XXXX6rOcmE/envdump" ディレクトリの UID を 1005 に、GID を 100 に変更できません: 操作は許可されません (errno=1)
いくつかの調査では、次のコマンドに示すように、名前は同じですが、GIDが異なる2つのグループがあるという問題があることがわかりました。
$ getent group | grep users
users:x:100:
users:*:1001:asdf,sdafsdf,zzzz
2つのグループのうちの1つの名前を変更した後、問題は解決されました。
だから私の質問は:仕様に従って同じ名前を持つ同じシステムに2つのグループを持つことが有効ですか?
その理由は、それがうまくいけばこのイベントを処理できないため、乗客にバグレポートを送信する予定です。
ベストアンサー1
規範を忘れて、実際に何が起こるのか考えてみてください。注意すべき主な点はファイルシステム権限です。いいえグループ名を含み、整数グループのみを含みます。ID。 (下層システムコールはchown()
gid_t
、パラメータリストに表示されます。 )
したがって、chgrp
またはchown
ディレクトリグループを変更するために使用されるすべてのツールは、ユーザーが指定した名前で正しいグループIDを見つける必要があります。 2つの名前が同じである場合、どちらが同じ名前を持っているかわかりません。のグループの場合、/etc/group
常に最初のグループを取得する可能性が高いです。ユーザーとグループを保存する他の方法では、同じ名前を2回保存できないことがあります。たとえば、その名前が LDAP DN または他の同様の主キーに使用される場合です。
最初の行が機能すると仮定すると、名前付きグループはusers
GID 100として識別され、関連ユーザーはasdf
グループ1001のメンバーになりますが、グループ100のメンバーになってchgrp
失敗します。