linux 详解useradd 命令基本用法
linux详解useradd命令基本用法
概要:
在Linux中useradd是个很基本的命令,但是使用起来却很不直观。以至于在Ubuntu中居然添加了一个adduser命令来简化添加用户的操作。本文主要描述笔者在学习使用useradd命令时的一些测试结果。
说明:本文中的所有试验都是在Ubuntu14.04上完成。
功能
在Linux中useradd命令用来创建或更新用户信息。
useradd命令属于比较难用的命令(lowlevelutilityforaddingusers),所以Debian系的发行版中建议管理员使用adduser命令。其实adduser命令只是一个调用了useradd命令的脚本文件。
本文将详细分析群组和家目录相关的选项。并且以实例的方式介绍常用的useradd命令写法。
语法和基本选项
注意:本文并不是一个完整的文档,所以仅列出部分常用的选项进行说明。
useradd[option]username [option]: -d<登入目录>指定用户登入时的目录。 -g<群组>初始群组。 -G<群组>非初始群组。 -m自动创建用户的家目录。 -M不要创建用户的家目录。 -N不要创建以用户名称为名的群组。 -s指定用户登入后所使用的shell。
细说用户组
首先我们要搞清楚,什么是初始群组?简单来说在/etc/passwd文件中,每行的第四个字段指定的就是用户的初始群组。用户登录后立即就拥有了初始群组中的权限。
下面我们通过不同的命令来查看群组选项的用法:
$sudouseraddtester1
没有使用任何群组相关的参数,默认在创建用户tester1的同时会创建一个同名的群组。用户tester1的初始群组就是这个新建的群组。
$sudouseraddtester2-N
这次我们使用了-N选项,即不要生成与用户同名的群组。查看下/etc/passwd文件,发现tester2用户的初始群组ID是100。这个100是哪来的?有ID为100的群组吗?其实100作为-N的默认值是写在配置文件中的。不管有没有ID为100的群组,都是这个值。当然我们也可以通过修改配置文件来改变这个默认值!
$sudouseraddtester3-gsudo
sudo是一个非常有权势的群组,我决定把tester3加入到这个群组。好,现在去查看一下/etc/passwd和/etc/group文件,看看有没有新的群组被创建?tester3的初始群组又是谁?这次没有创建与tester3同名的群组。用户tester3的初始群组变成了sudo。
$sudouseraddtester4-Gsudo
和上一条命令相比我们只是把小写的g替换成了大写的G。但结果可相差太多了,请您一定要好好的检查/etc/passwd和/etc/group文件。因为这次不仅创建了群组tester4,它还是用户tester4的初始群组。和tester1的唯一不同是tester4被加入了sudo群组。
在实际的使用中,tester3和tester4的场景都是比较常见的,需要根据实际情况进行区分。
细说家目录
Useradd命令对用户家目录的处理让人困惑,下面我们将通过实验来了解家目录相关的不同选项的使用方法:
$sudouseraddtester1
让我们重新看看创建用户tester1这条命令。它不会为用户tester1创建名为tester1的目录作为家目录,但是我们打开/etc/passwd文件,发现tester1的记录中居然包含了家目录/home/tester1。
tester1:x:1005:1005::/home/tester1:
这让人不可思议,但这条命令确实是这么实现的。
$sudouseradd-mtester5
若要在创建用户的同时创建用户的家目录,必须指定-m选项。
$sudouseradd-d/home/abctester6
我们希望自己指定家目录,此时不生成目录abc
$sudouseradd-d/home/abcd-mtester7
此时生成目录abcd,并且目录下默认存在文件
常见用例
Case1:创建一个带有家目录并且可以登录bash的用户
$sudouseradd-m-s/bin/bashtester1
Case2:指定创建用户家目录的路径
$sudouseradd-m-d/home/xxxtester2
/home/xxx目录会被创建。
Case3:创建一个没有家目录且不能登录的用户
$sudouseradd-s/sbin/nologintester3
Case4:创建时把用户加入不同的用户组
$sudouseradd-m-Gxxx,sudotester4
注意过个组名使用逗号分隔,不能有空格。
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!