在 Linux 中 useradd 是个很基本的命令,可是使用起来却很不直观。以致于在 Ubuntu 中竟然添加了一个 adduser 命令来简化添加用户的操做。本文主要描述笔者在学习使用 useradd 命令时的一些测试结果。 |
说明:本文中的全部试验都是在 Ubuntu14.04 上完成。linux
功能shell
在Linux中 useradd 命令用来建立或更新用户信息。bash
useradd 命令属于比较难用的命令 (low level utility for adding users),因此 Debian 系的发行版中建议管理员使用 adduser 命令。其实 adduser 命令只是一个调用了 useradd 命令的脚本文件。ide
本文将详细分析群组和家目录相关的选项。而且以实例的方式介绍经常使用的 useradd 命令写法。学习
语法和基本选项测试
注意:本文并非一个完整的文档,因此仅列出部分经常使用的选项进行说明。spa
useradd [option] username
[option]:
-d< 登入目录> 指定用户登入时的目录。
-g< 群组> 初始群组。
-G< 群组> 非初始群组。
-m 自动建立用户的家目录。
-M 不要建立用户的家目录。
-N 不要建立以用户名称为名的群组。
-s 指定用户登入后所使用的shell。orm
细说用户组
ci
首先咱们要搞清楚,什么是初始群组?简单来讲在 /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
注意过个组名使用逗号分隔,不能有空格。