web-dev-qa-db-ja.com

同じUIDとGUIDを使用し、ホームディレクトリが異なる2人のユーザーを作成すると、17.10 Ubuntuが起動に失敗します。なぜですか?

異なる設定でログインできるようにしたいが、それでも同じ「ユーザー」でありたい。そこで、同じUID/GUIDを持ち、ホームディレクトリが異なる2人目のユーザーを追加しました。Ubuntuを起動すると、システムがハングします。 passwdおよびshadowファイルから2番目のユーザーを削除すると、システムは正常に起動します。

3
intel_chris

通常、/etc/passwdおよび/etc/shadowファイルを手動で編集することはお勧めできません。そのためのツールを備えたシステムを使用することをお勧めします。それに加えて、同じGUIDを別のユーザーと共有することもできますが、UIDはユーザーごとに一意である必要があります。そのため、必要なアプリケーションの起動を妨げるLinuxの起動、および/またはUIDが一意であることを期待しているアプリケーションの起動のいずれかが失敗する可能性が高くなります。

ディレクトリを共有する2人のユーザーのより良いアプローチは、グループ管理を使用してそれを行うことです。可能なガイドについては、ユーザー管理に関するドキュメントを参照するか、 Ask Ubunt を参照してください。


ただし、次のコマンドを発行するだけでユーザーを作成できます。

Sudo useradd -U -m -G <additional groups here> <user-name>

これにより、動作するシステムにユーザーが追加されます。 man 8 useradd (上記の行の説明は、最も一般的なオプションのみに短縮されています。完全な概要については、manページをご覧ください):

オプション

   The options which apply to the useradd command are:

   -c, --comment COMMENT
       Any text string. It is generally a short description of the login,
       and is currently used as the field for the user's full name.

   -g, --gid GROUP
       The group name or number of the user's initial login group. The
       group name must exist. A group number must refer to an already
       existing group.

       If not specified, the behavior of useradd will depend on the
       USERGROUPS_ENAB variable in /etc/login.defs. If this variable is
       set to yes (or -U/--user-group is specified on the command line), a
       group will be created for the user, with the same name as her
       loginname. If the variable is set to no (or -N/--no-user-group is
       specified on the command line), useradd will set the primary group
       of the new user to the value specified by the GROUP variable in
       /etc/default/useradd, or 100 by default.

   -G, --groups GROUP1[,GROUP2,...[,GROUPN]]]
       A list of supplementary groups which the user is also a member of.
       Each group is separated from the next by a comma, with no
       intervening whitespace. The groups are subject to the same
       restrictions as the group given with the -g option. The default is
       for the user to belong only to the initial group.

   -k, --skel SKEL_DIR
       The skeleton directory, which contains files and directories to be
       copied in the user's home directory, when the home directory is
       created by useradd.

       This option is only valid if the -m (or --create-home) option is
       specified.

       If this option is not set, the skeleton directory is defined by the
       SKEL variable in /etc/default/useradd or, by default, /etc/skel.

       If possible, the ACLs and extended attributes are copied.

   -m, --create-home
       Create the user's home directory if it does not exist. The files
       and directories contained in the skeleton directory (which can be
       defined with the -k option) will be copied to the home directory.

       By default, if this option is not specified and CREATE_HOME is not
       enabled, no home directories are created.

   -M
       Do no create the user's home directory, even if the system wide
       setting from /etc/login.defs (CREATE_HOME) is set to yes.

   -s, --Shell SHELL
       The name of the user's login Shell. The default is to leave this
       field blank, which causes the system to select the default login
       Shell specified by the Shell variable in /etc/default/useradd, or
       an empty string by default.

   -U, --user-group
       Create a group with the same name as the user, and add the user to
       this group.

       The default behavior (if the -g, -N, and -U options are not
       specified) is defined by the USERGROUPS_ENAB variable in
       /etc/login.defs.

したがって、-Uは、ユーザーUIDと一致するGUIDを持つユーザー名に類似した名前のユーザーグループを作成します。 -mは、/home/<user-name>にユーザーのホームディレクトリを作成し、-Gを使用すると、このユーザーが所属するグループを追加できます。後でグループを追加することもできます。 Ubuntuがメインユーザーに追加するグループは、admcdromSudodipplugdevlpadmin、およびsambashareです。 。後でグループを追加するには、次のコマンドを使用できます。

Sudo usermod -aG <group-or groups> <user-name>

最後に、ユーザーは次のように設定できるパスワードを持っている必要があります。

Sudo passwd <username>

これで、ターミナルでのユーザー作成プロセスが終了します。

上記で見たプロセスの一部を自動化するadduserという複合コマンドもあります。使用方法は man 8 adduser をご覧ください。

3
Videonauth