Linux 系统管理 : useradd 命令详解

useradd命令用于Linux中创建的新的系统用户。useradd可用来建立用户帐号。帐号建好之后,再用passwd设定帐号的密码.而可用userdel删除帐号。使用useradd指令所建立的帐号,实际上是保存在/etc/passwd文本文件中。

在Slackware中,adduser指令是个script程序,利用交谈的方式取得输入的用户帐号资料,然后再交由真正建立帐号的useradd命令建立新用户,如此可方便管理员建立用户帐号。在Red Hat Linux中,adduser命令则是useradd命令的符号连接,两者实际上是同一个指令。

语法

useradd(选项)(参数)

选项

-c<备注>:加上备注文字。备注文字会保存在passwd的备注栏位中;
-d<登入目录>:指定用户登入时的启始目录;
-D:变更预设值;
-e<有效期限>:指定帐号的有效期限;
-f<缓冲天数>:指定在密码过期后多少天即关闭该帐号;
-g<群组>:指定用户所属的群组;
-G<群组>:指定用户所属的附加群组;
-m:自动建立用户的登入目录;
-M:不要自动建立用户的登入目录;
-n:取消建立以用户名称为名的群组;
-r:建立系统帐号;
-s<shell>:指定用户登入后所使用的shell;
-u<uid>:指定用户id。

参数

用户名:要创建的用户名。

实例

新建用户加入组:

useradd –g sales jack –G company,employees    //-g:加入主要组、-G:加入次要组

建立一个新用户账户,并设置ID:

useradd caojh -u 544

需要说明的是,设定ID值时尽量要大于500,以免冲突。因为Linux安装后会建立一些特殊用户,一般0到499之间的值留给bin、mail这样的系统账号

详解:

 

细说用户组

首先我们要搞清楚,什么是初始群组?简单来说在 /etc/passwd 文件中,每行的第四个字段指定的就是用户的初始群组。用户登录后立即就拥有了初始群组中的权限。

下面我们通过不同的命令来查看群组选项的用法:

$ sudo useradd tester1

没有使用任何群组相关的参数,默认在创建用户 tester1 的同时会创建一个同名的群组。用户 tester1 的初始群组就是这个新建的群组。

$ sudo useradd tester2 -N

这次我们使用了 -N 选项,即不要生成与用户同名的群组。查看下 /etc/passwd 文件,发现 tester2 用户的初始群组ID是100。这个100是哪来的?有ID为100的群组吗?其实100作为 -N 的默认值是写在配置文件中的。不管有没有ID为100的群组,都是这个值。当然我们也可以通过修改配置文件来改变这个默认值!

$ sudo useradd tester3 -g sudo

sudo 是一个非常有权势的群组,我决定把 tester3 加入到这个群组。好,现在去查看一下 /etc/passwd 和 /etc/group 文件,看看有没有新的群组被创建? tester3 的初始群组又是谁?这次没有创建与 tester3 同名的群组。用户 tester3 的初始群组变成了 sudo。

$ sudo useradd tester4 -G sudo

和上一条命令相比我们只是把小写的g替换成了大写的G。但结果可相差太多了,请您一定要好好的检查 /etc/passwd 和 /etc/group 文件。因为这次不仅创建了群组 tester4,它还是用户 tester4 的初始群组。和tester1 的唯一不同是 tester4 被加入了 sudo 群组。

在实际的使用中,tester3 和 tester4 的场景都是比较常见的,需要根据实际情况进行区分。

细说家目录

Useradd 命令对用户家目录的处理让人困惑,下面我们将通过实验来了解家目录相关的不同选项的使用方法:

$ sudo useradd tester1

让我们重新看看创建用户 tester1 这条命令。它不会为用户 tester1 创建名为 tester1 的目录作为家目录,但是我们打开 /etc/passwd 文件,发现 tester1 的记录中居然包含了家目录 /home/tester1。

tester1:x:1005:1005::/home/tester1:

这让人不可思议,但这条命令确实是这么实现的。

$ sudo useradd -m tester5

若要在创建用户的同时创建用户的家目录,必须指定 -m 选项。

$ sudo useradd -d /home/abc tester6

我们希望自己指定家目录,此时不生成目录 abc

$ sudo useradd -d /home/abcd -m tester7

此时生成目录 abcd,并且目录下默认存在文件

常见用例

Case 1: 创建一个带有家目录并且可以登录 bash 的用户

$ sudo useradd -m -s /bin/bash tester1

Case 2: 指定创建用户家目录的路径

$ sudo useradd -m -d /home/xxx tester2

/home/xxx目录会被创建。

Case 3: 创建一个没有家目录且不能登录的用户

$ sudo useradd -s /sbin/nologin tester3

Case 4: 创建时把用户加入不同的用户组

$ sudo useradd -m -G xxx,sudo tester4

注意过个组名使用逗号分隔,不能有空格。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HarkerYX

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值