useradd 具有相同 uid 和 gid 的组的用户

useradd 具有相同 uid 和 gid 的组的用户

我想添加一个名为“nexus”的用户,其uid为1234567(示例数字),gid为1234567。

我正在运行以下命令:

sudo useradd -r -U -u 1234567 -g 1234567 -m -c "nexus role account" -d /sonatype-work -s /bin/false nexus

但我收到了错误:

useradd: group '1234567' does not exist

如果我这么做:

sudo useradd -r -U -u 1234567 -m -c "nexus role account" -d /sonatype-work -s /bin/false nexus

然后当我检查时id -u nexus它显示正确uid(1234567)但是当我检查时id -g nexus设置gid999

如果我这样做sudo adduser --uid 1234567 nexus,那么用户和组 ID 将被设置为相同。

我可以做同样的事情吗?useradd或者我必须使用它adduser才能实现我的目标吗?

顺便说一下,我一直在关注这个教程:

http://www.tecmint.com/add-users-in-linux/

PS:如果必须使用,adduser那么我可以在没有人工干预的情况下做到这一点吗?即:通过脚本自动创建用户?

编辑:

这是sudo adduser --uid 1234567 nexus

Adding user `nexus' ...
Adding new group `nexus' (1234567) ...
Adding new user `nexus' (1234567) with group `nexus' ...
The home directory `/home/nexus' already exists.  Not copying from `/etc/skel'.
adduser: Warning: The home directory `/home/nexus' does not belong to the user you are currently creating.
Enter new UNIX password: 
Retype new UNIX password: 
No password supplied
Enter new UNIX password: 
Retype new UNIX password: 
No password supplied
Enter new UNIX password: 
Retype new UNIX password: 
No password supplied
passwd: Authentication token manipulation error
passwd: password unchanged
Try again? [y/N] n
Changing the user information for nexus
Enter the new value, or press ENTER for the default
    Full Name []: Nexus
    Room Number []: 
    Work Phone []: 
    Home Phone []: 
    Other []: 
Is the information correct? [Y/n] y

答案1

感谢 Tom Yan,我最终通过创建一个同名的组并将用户添加到该组解决了我的问题。所以我做了以下操作:

sudo groupadd -r -g 1234567 nexus \
  && sudo useradd -r -u 1234567 -g 1234567 -m -c "nexus role account" -d /sonatype-work -s /bin/false nexus

答案2

坦白说,我认为这是一个错误(功能)。文档表明您可以使用“-U”选项同时创建用户和组。直观地讲,您会认为在这种情况下,它会从“-g”标志中获取值并相应地创建组。

[root@centos4]# useradd -U -u 200 -g 200 -m -d /home/ansible -s /usr/bin/bash ansible
useradd: group '200' does not exist

上面的例子类似于您的 useradd 命令。但是,如果我简单地删除“-g 200”参数,它就会立即起作用。尽管不幸的是,gid 似乎是用标准方法分配的。

[root@centos4]# useradd -U -u 200 -m -d /home/ansible -s /usr/bin/bash ansible
[root@centos4]# egrep ansible /etc/passwd
ansible:x:200:1000::/home/ansible:/usr/bin/bash
[root@centos4]# egrep ansible /etc/group
ansible:x:1000:

您的问题的答案是,如果您想同时添加用户和组,则必须删除 -g 选项。它不像您和我希望的那样优雅,但总比没有好。

希望有帮助。保重。

相关内容