web-dev-qa-db-ja.com

複数のUNIXユーザーが1つのUIDを共有することの副作用は何ですか?

sys-apps/shadow パッケージのGNU/Linuxシステムには、以前見落としていたオプションをサポートするuseraddコマンドが付属しています:--non-unique。大学から家に帰るときの便宜のために、私は元のユーザー名(自宅でのカジュアルな名前)のエイリアスを次のように作成しました。

useradd --non-unique -u 1001 \
     --no-create-home --home-dir /home/casualname \
     -g 1001 -G `id casualname -G | tr ' ' ,` universityUsername

これにより、〜/ .ssh/configエイリアスを作成したり、sshに-lオプションを指定したりせずに、ログインuniversityUsernameを使用してキャンパスからログインできます。ログイン後、whoamiは私がカジュアルネームであることを報告します。これは、casualnameが/ etc/passwdファイルの先頭近くに表示されるためです。

そのようなエイリアスはどれほど広くサポートされているのでしょうか。また、それらを使用することに欠点があるのではないでしょうか。また、ユーザーが/ etc/passwd内のエントリを並べ替えることができないシステムで、優先ユーザーエイリアスを代理ユーザーエイリアス($ USERが設定されているもの)として選択する方法はありますか?

同じUIDを持つ複数のユーザーを持つことはできません。それらが同じUIDを持っている場合、それらは同じユーザーです。

あなたが持っているのは、同じユーザーのユーザーデータベースに複数のエントリがあります。これは、私が見たすべてのUNIXバリアントで可能です。ユーザー名によって、使用されるエントリが決まり、ログイン時にどのパスワード、ホームディレクトリ、およびシェルが適用されるかが決まります。最初のエントリは、ユーザーデータベースへのIDベースのルックアップが返すものを決定します。一部のアプリケーションは(おそらく$USERを使用して)名前でユーザーデータベースを検索し、その他のアプリケーションはUIDで検索します。彼らがUIDを使用する場合、彼らは最初のエントリを取得し、あなたはそれについて何もすることができません。

これはかわいいセットアップですが、これらのかわいいがほとんど役に立たないものの1つです。それは珍しいことです。仲間の管理者がいる場合、彼らはそれを感謝しません。多くのアプリケーションは、このケースをカバーすることを気にせず、最適に動作しない可能性があります(たとえば、一部の機能については$LOGNAMEに依存し、ログインしたユーザー名に応じて異なるデータを使用することになります)。また、エラーが発生しやすくなります。2番目のエントリを作成するにはrootアクセスを使用する必要があり、passwdまたはshadowの両方のエントリを編集することを忘れないでください(たとえば、パスワードを変更する必要があります。通常のpasswd呼び出しとは異なり、ルートアクセス)。非常に正当な理由がある場合にのみ、これを行う必要があります。

SSHに同じユーザー名を使用することだけが必要な場合は、他のすべてのユーザーが行う方法は.ssh/configのエイリアスです。それが彼らの目的です。セットアップが簡単で、より多くの特権を必要とせず、異常で混乱を招く可能性のある構成をセットアップしません。

同じユーザーの複数のエントリの便利な使用法の1つは、問題が発生した場合のレスキューユーザーです。たとえば、シェルが静的にリンクされたバイナリであるtoorアカウント(従来の名前)。これはシステムの修復にのみ使用します。