7.1 useradd:创建用户

1 使用useradd 常规添加用户工作原理流程

    在使用useradd命令时,若不加任何参数选项,后面直接跟所添加的用户名,那么系统首先会读取/etc/login.defs(用户定义文件)和/etc/default/useradd(用户默认配置文件)文件中所定义的参数和规则,然后根据所设置的规则添加用户,同时还会向/etc/passwd(用户文件)和/etc/group(组文件)文件内添加新用户和新用户组记录,向/etc/shadow(用户密码文件)和/etc/gshadow(组密码文件)文件里添加新用户和组对应的密码信息的相关记录。同时系统还会根据/etc/default/useradd文件所配置的信息建立用户的家目录,并将/etc/skel中的所有文件(包括隐藏的环境配置文件)都复制到新用户的家目录中。
 

2 useradd不加选项-D的参数选项及说明

-c comment         新用户password文件中的说明栏(冒号分隔后的第五列)
-d home_dir        新用户每次登入时所使用的家目录
-e expire date     用户终止日期。日期的指定格式为YYYY-MM-DD
-f inactive_days   用户过期几日后永久停权。当值为0时用户立即被停权,而当值为-1时则关闭此功能,预设值为-1
-g initial_group   指定用户对应的用户组。用户组名必须为系统现已存在的名称
-G group,[...]     定义此用户为多个不同组的成员。每个用户组使用逗号(,)分隔。用户组名同-g选项的限制。默认值为用户的起始用户组
-m                 用户目录如不存在则自动建立
-M                 不建立用户家目录,优先于/etc/login.defs文件设定。创建虚拟用户时一般不需要建立家目录,部署应用服务时则需要创建虚拟用户
-n                 默认情况下用户的用户组与用户的名称是相同的。如果命令添加了-n参数,就不会生成与用户同名的用户组了
-r                 此参数是用来建立系统用户的。系统用户的UID会比定义在系统档上/etc/login.defs的UID_MIN要小。注意此用法下useradd所建立的用户不会建立用户家目录,也不会在乎记录在/etc/login.defs.中的定义值。如果需要用户家目录必须额外指定-m参数来建立系统用户。这是Red Hat额外增设的选项
-s shell          用户登入后使用的Shell名称。默认值为不填写,这样系统会帮助指定预设的登入Shell(根据/etc/default/useradd预设的值)
-u uid            用户的ID值。这个值必须是唯一的,除非用-o选项。数字不可为负值

3 useradd 加 -D 选项参数说明:改变新建用户的预设值

当执行useradd带-D参数时,可以更改新建用户的默认配置值(/etc/default/useradd)或者由命令行编辑文件更改预设值。可简单理解该参数(-D)就是用于修改/etc/default/useradd配置文件的内容的,若这个文件的内容被修改,则添加新用户不加参数时默认值就会从该/etc/default/useradd中读取。
 
useradd命令的-D参数选项说明。
-b default_home            定义用户家目录的基本目录,当用户家目录不存在时,此目录将作为家目录生效
-e default_expire_date     用户账号停止日期,格式为YYYY-MM-DD,同useradd的-e参教
-f default_inactive        用户过期几日后停权。同useradd的-f参数
-g defaul_group            新用户起始用户组名或ID。用户组名必须为现已存在的名称。用户组ID也必须为现已存在的用户组。同useradd的-g参数
-s default_shell           用户登入后使用的Shell名称。修改后新加入的用户都将使用此Shell类型,同useradd -s参数
 

不加任何参数添加用户的例子

[root@cs6 ~]# useradd ett
[root@cs6 ~]# ls -ld /home/ett/
drwx------. 2 ett ett 4096 5月 12 01:15 /home/ett/
●提示:创定用户的同时还会创建一个与用户名相同的用户组。
在这个例子中,我们添加了一个名为ett的系统用户,当查看/home/目录时,会发现系统自动建立了一个ett的目录,其就是用户登入后的起始目录,即家目录。
下面再来查看/etc/passwd文件中有关新用户ett的记录:
 
[root@cs6 ~]# grep -w ett /etc/passwd
ett:x:500:500::/home/ett:/bin/bash
从上文过滤出的ett用户记录来看,用户的UID和GID分别为500,并且ett的家目录为/home/ett,所对应的Shell是/bin/bash。
[root@cs6 ~]# grep -w ett /etc/shadow
ett:!!:18027:0:99999:7::: #<==虽然没有创建密码,但是密码文件还是会增加一行相关信息。
[root@cs6 ~]# grep -w ett /etc/group
ett:x:500: #<==创建用户时,默认会创建与用户同名的用户组,并体现在用户组配置文件中。
[root@cs6 ~]# grep -w ett /etc/gshadow
ett:!:: #<==组密码文件中也会有一行相关记录。

    这里我们还可以查看/etc/default/useradd和/etc/login.defs两个文件的规则,看一下ett用户的增加是否符合这两个配置文件预设的值。最后还可以查看/home/ett目录下的文件,是否与/etc/skel目录中的一样。

useradd的-g、-u参数,执行useradd[参数]username 添加用户

[root@cs6 ~]# groupadd -g 801 sa
[root@cs6 ~]# useradd -g sa -u 901 lewen
[root@cs6 ~]# id lewen
uid=901(lewen) gid=801(sa) 组=801(sa)

useradd的-M、-s参数的例子

[root@cs6 ~]# useradd -M -s /sbin/nologin kevin
[root@cs6 ~]# ls -ld /home/kevin
ls: 无法访问/home/kevin: 没有那个文件或目录
[root@cs6 ~]# grep -w kevin /etc/passwd
kevin:x:902:902::/home/kevin:/sbin/nologin

useradd的-c、-u、-G、-s、-d、-m、-e、-f等多个参数组合的综合例子。

[root@cs6 ~]# useradd -u 806 -s /bin/sh -c SysUser -G root,sa -e "2019/07/12" -f 2 -d /tmp/inca inca
[root@cs6 ~]# id inca
uid=806(inca) gid=806(inca) groups=806(inca),0(root),801(sa)
[root@cs6 ~]# tail -1 /etc/passwd
inca:x:806:806:SysUser:/tmp/inca:/bin/sh /etc/passwd文件行中inca的用户信息说明
inca |x |:806 |:1002 |:SysUser |:/tmp/inca|:/bin/sh
账号名称|:账号密码|:账号UID|:账号组GID|:用户说明|:用户家目录|:shell解释器 [root@cs6 ~]# chage -l inca
Last password change : May 11, 2019
Password expires : never
Password inactive : never
Account expires : Jul 12, 2019
Minimum number of days between password change : 0
Maximum number of days between password change : 99999
Number of days of warning before password expires : 7
[root@cs6 ~]# tail -1 /etc/shadow
inca:!!:18027:0:99999:7:2:18089: #<==带底纹的数字2即用户过期停权的结果(一f参数)
 
更改字符变量
[root@cs6 ~]# cat /etc/sysconfig/i18n
LANG="zh_CN.UTF-8"
[root@cs6 ~]# sed -i 's/zh_CN/en_US/g' /etc/sysconfig/i18n
[root@cs6 ~]# cat /etc/sysconfig/i18n
LANG="en_US.UTF-8"
[root@cs6 ~]# source /etc/sysconfig/i18n

useradd -D参数的使用说明及案例实践

[root@cs6 ~]# cat /etc/default/useradd
# useradd defaults file
GROUP=100 #<==依赖于/etc/login.defs 的 USERGROUPS_ENAB参数,如果为no,则此处控制。
HOME=/home #<==把用户的家目录建在/home中。
INACTIVE=-1 #<==是否启用用户过期停权,-1表示不启用。
EXPIRE= #<==用户终止日期,不设置表示不启用。
SHELL=/bin/bash #<==新用户默认所用的Shel1类型。
SKEL=/etc/skel #<==配置新用户家目录的默认文件存放路径。前文提到的/etc/skel,就是在这里配置生效的,即当我们用useradd添加用户时,用户家目录下的文件,都是从这里配置的目录中复制过去的。
CREATE_MAIL_SPOOL=yes #<==创建mail文件。 [root@cs6 ~]# egrep -v '^$|#' /etc/login.defs
MAIL_DIR /var/spool/mail
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_MIN_LEN 5
PASS_WARN_AGE 7
UID_MIN 500
UID_MAX 60000
GID_MIN 500
GID_MAX 60000
CREATE_HOME yes
UMASK 077
USERGROUPS_ENAB yes
ENCRYPT_METHOD SHA512
 
修改实践:

[root@cs6 ~]# cp /etc/default/useradd{,.bark}
[root@cs6 ~]# useradd -D -s /bin/sh
[root@cs6 ~]# diff /etc/default/useradd{,.bark}
6c6
< SHELL=/bin/sh
---
> SHELL=/bin/bash
[root@cs6 ~]# useradd -D -e "2019/7/12"
[root@cs6 ~]# diff /etc/default/useradd{,.bark}
5,6c5,6
< EXPIRE=2019/7/12
< SHELL=/bin/sh
---
> EXPIRE=
> SHELL=/bin/bash
[root@cs6 ~]#
[root@cs6 ~]# useradd zuma
[root@cs6 ~]# tail -1 /etc/passwd
zuma:x:903:903::/home/zuma:/bin/sh
[root@cs6 ~]# chage -l zuma
Last password change : May 11, 2019
Password expires : never
Password inactive : never
Account expires : Jul 12, 2019
Minimum number of days between password change : 0
Maximum number of days between password change : 99999
Number of days of warning before password expires : 7 [root@cs6 ~]# \cp /etc/default/useradd{.bark,} #<==练习完后还原系统默认的配置文件。
useradd -D的功能完全可以使用vim /etc/default/useradd编辑修改后来替代

7.1 useradd:创建用户的更多相关文章

  1. useradd 创建用户

    useradd 创建用户 1.命令功能 useradd 创建一个新用户或者更改默认新用户信息. 2.语法格式 useradd  option  username useradd  -D  option ...

  2. Linux不使用useradd创建用户

    手动创建用户的全过程:需要管理员权限. 1.在/etc/group中添加用户所属组的相关信息.如果用户还有辅助组则在对应组中加入该用户作为成员. 2.在/etc/passwd和/etc/shadow中 ...

  3. 6、Linux基础--文件类型、属性信息、创建用户与用户组

    笔记 1.晨考 1.解析映射文件 /etc/hosts 2.磁盘挂载文件 /etc/fstab 3.设置开机自启动脚本的步骤 1.修改/etc/rc.local 2.设置可执行权限 chmod +x ...

  4. useradd adduser linux创建用户、设置密码、修改用户、删除用户

    创建用户.设置密码.修改用户.删除用户: useradd testuser 创建用户testuser passwd testuser 给已创建的用户testuser设置密码 说明:新创建的用户会在/h ...

  5. 一起来学习linux创建用户useradd命令

    linux创建用户useradd命令 原文地址:linux创建用户useradd命令 http://www.xfcodes.com/linuxcmd/user/24308.htm 一,adduser与 ...

  6. linux环境中通过useradd命令,创建用户的时候指定用户的base-dir

    需求说明: 今天一个同事,问了一个这样的问题,在linux环境中,创建用户的时候,默认的是在/home目录下创建一个与用户名相同的家目录, 如何能够将这个/home更换成一个其他的,比如/opt/ap ...

  7. linux 用户管理命令useradd、passwd、who、whoami、id、w及创建用户默认值文件

    useradd /usr/sbin/useradd执行权限:rootuseradd [选项] 用户名-u UID:手工指定用户的UID号-d 家目录:手工指定用户的家目录-c 用户说明:手工指定用户的 ...

  8. linux用户管理(1)----创建用户(adduser和useradd)和删除用户(userdel)

    一.常用命令: (1)创建用户命令两条: adduser useradd (2)用户删除命令: userdel 二.两个用户创建命令之间的区别 adduser: 会自动为创建的用户指定主目录.系统sh ...

  9. linux使用useradd创建的用户没有目录的解决办法

    转载请注明来源https://www.cnblogs.com/sogeisetsu/p/11401562.html或https://blog.csdn.net/suyues/article/detai ...

  10. 创建用户(adduser和useradd)和删除用户(userdel)及

    一  用户创建命令: # adduser  用户名 # useradd  用户名 1) useradd 与 adduser 的区别 在CentOs系统中: useradd与adduser是没有区别的, ...

随机推荐

  1. 看过这篇剖析,你还不懂 Go sync.Map 吗?

    hi, 大家好,我是 haohongfan. 本篇文章会从使用方式和原码角度剖析 sync.Map.不过不管是日常开发还是开源项目中,好像 sync.Map 并没有得到很好的利用,大家还是习惯使用 M ...

  2. Spring(一)简介和配置

    知识补充: 那么什么是xmlns呢?xmlns其实是XML Namespace的缩写,可译为"XML命名空间",但个人觉得,翻译后的名字反而不好理解,所以我们就叫它为XML Nam ...

  3. Day07_38_集合中的remove()方法

    集合中的remove()方法 remove() 移除集合中的一个指定对象 代码实例 package com.shige.Collection; import java.util.ArrayList; ...

  4. C#中普通缓存的使用

    缓存的概念及优缺点在这里就不多做介绍,当然缓存包含多种有普通缓存.客户端缓存.DNS缓存.反向代理缓存以及分布式缓存等等.今天主要聊一聊C#通过编码来实现普通的缓存.话不多说直接上代码. 一.首先,新 ...

  5. Portswigger web security academy:OAth authentication vulnerable

    Portswigger web security academy:OAth authentication vulnerable 目录 Portswigger web security academy: ...

  6. IDEA安装插件时搜索不到,一直在转圈刷新,无法安装

    方法一:更换一个网络(我自己没有测试过) 参考链接:https://blog.csdn.net/m0_37856386/article/details/110389028 方法二:打开settings ...

  7. Docker配置阿里云镜像加速器及开启远程连接

    适用于CentOS-7版本 mkdir /etc/docker vim /etc/docker/deamon.json 添加以下内容配置镜像 { "registry-mirrors" ...

  8. Ubuntu20.04安装和配置JDK

    首先在官网下载Linux系统的jdk到本地 创建/java目录 sudo mkdir /java 这是直接创建在根目录下的. 3. 将下载的jdk压缩包移动到java文件夹 sudo mv 你的安装包 ...

  9. java之try catch finally

    try{ }catch(Exception e){ }finally{ } java异常处理在编程中很常见,将可能抛出异常的语句放在try{}中,若有异常抛出,则try{}中抛出异常语句之后的语句不再 ...

  10. 前端用网址生成二维码(jquery)

    1.加载jquery.qrcode.min.js 2.html部分: 3.js部分:url为生成二维码的网址 附: jquery.qrcode.min.js下载 链接:https://pan.baid ...