7.1 useradd:创建用户

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参数

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

[[email protected] ~]# useradd ett
[[email protected] ~]# ls -ld /home/ett/
drwx------. 2 ett ett 4096 5月  12 01:15 /home/ett/

●提示:创定用户的同时还会创建一个与用户名相同的用户组。

在这个例子中,我们添加了一个名为ett的系统用户,当查看/home/目录时,会发现系统自动建立了一个ett的目录,其就是用户登入后的起始目录,即家目录。

下面再来查看/etc/passwd文件中有关新用户ett的记录:

[[email protected] ~]# grep -w ett /etc/passwd
ett:x:500:500::/home/ett:/bin/bash
从上文过滤出的ett用户记录来看,用户的UID和GID分别为500,并且ett的家目录为/home/ett,所对应的Shell是/bin/bash。
[[email protected] ~]# grep -w ett /etc/shadow
ett:!!:18027:0:99999:7:::            #<==虽然没有创建密码,但是密码文件还是会增加一行相关信息。
[[email protected] ~]# grep -w ett /etc/group
ett:x:500:                #<==创建用户时,默认会创建与用户同名的用户组,并体现在用户组配置文件中。
[[email protected] ~]# grep -w ett /etc/gshadow
ett:!::                    #<==组密码文件中也会有一行相关记录。

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

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

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

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

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

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

[[email protected] ~]# useradd -u 806 -s /bin/sh -c SysUser -G root,sa -e "2019/07/12" -f 2 -d /tmp/inca inca
[[email protected] ~]# id inca
uid=806(inca) gid=806(inca) groups=806(inca),0(root),801(sa)
[[email protected] ~]# 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解释器

[[email protected] ~]# 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
[[email protected] ~]# tail -1 /etc/shadow
inca:!!:18027:0:99999:7:2:18089:    #<==带底纹的数字2即用户过期停权的结果(一f参数)

更改字符变量

[[email protected] ~]# cat /etc/sysconfig/i18n
LANG="zh_CN.UTF-8"
[[email protected] ~]# sed -i ‘s/zh_CN/en_US/g‘ /etc/sysconfig/i18n
[[email protected] ~]# cat /etc/sysconfig/i18n
LANG="en_US.UTF-8"
[[email protected] ~]# source /etc/sysconfig/i18n

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

[[email protected] ~]# 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文件。

[[email protected] ~]# 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

修改实践:

[[email protected] ~]# cp /etc/default/useradd{,.bark}
[[email protected] ~]# useradd -D -s /bin/sh
[[email protected] ~]# diff /etc/default/useradd{,.bark}
6c6
< SHELL=/bin/sh
---
> SHELL=/bin/bash
[[email protected] ~]# useradd -D -e "2019/7/12"
[[email protected] ~]# diff /etc/default/useradd{,.bark}
5,6c5,6
< EXPIRE=2019/7/12
< SHELL=/bin/sh
---
> EXPIRE=
> SHELL=/bin/bash
[[email protected] ~]#
[[email protected] ~]# useradd zuma
[[email protected] ~]# tail -1 /etc/passwd
zuma:x:903:903::/home/zuma:/bin/sh
[[email protected] ~]# 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

[[email protected] ~]# \cp /etc/default/useradd{.bark,}     #<==练习完后还原系统默认的配置文件。
useradd -D的功能完全可以使用vim /etc/default/useradd编辑修改后来替代
 

原文地址:https://www.cnblogs.com/fadewalk/p/10856094.html

时间: 2024-10-02 11:40:52

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

创建用户时出现如下错误[[email&#160;protected] ~]# useradd alix useradd: user &#39;alix&#39; already exists

原因 之前存在ID 名字相同的用户,用userdel删除后 家目录和邮件没有删除 解决方法: 1.删除之前存的目录和邮件 [[email protected] ~]# rm -rf alix [[email protected] ~]# rm -f/var/spool/mail/alix 2.现在重新创建 useradd alix 创建用户时出现如下错误[[email protected] ~]# useradd alix useradd: user 'alix' already exists

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

linux创建用户useradd命令 原文地址:linux创建用户useradd命令 http://www.xfcodes.com/linuxcmd/user/24308.htm 一,adduser与useradd命令二者的关系 复制代码代码示例: [[email protected] opt]# type adduser  adduser is /usr/sbin/adduser  [[email protected] opt]# type useradd  useradd is /usr/s

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

需求说明: 今天一个同事,问了一个这样的问题,在linux环境中,创建用户的时候,默认的是在/home目录下创建一个与用户名相同的家目录, 如何能够将这个/home更换成一个其他的,比如/opt/app下,研究了下,在此记录下 操作过程: 1.通过查看useradd命令的帮助文档,知道创建用户base_dir的配置在/etc/default/useradd文件中 [[email protected] ~]# cat /etc/default/useradd # useradd defaults

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

使用 sudo useradd newuser 后 /home里并没有 newuser的目录. 查询得知,可以用 useradd -m newuser,但是-m这个命令只有在你创建用户的时候才有用. 如果已经创建了用户且没有目录的话,useradd -m newuser是不会为用户创建目录的,也就是说必须删掉这个用户再重新useradd -m newuser才可以. 但是!使用adduser的话直接adduser username也会有目录,不用像useradd那样用-m了.但是adduser一

企业实战脚本案例2:批量创建用户并设置初始密码

批量创建用户并设置初始密码 目录: 1.脚本功能介绍 2.脚本制作技术需求 2.1 useradd命令 2.2 id命令 2.3 passwd命令 2.4 随机密码 2.5 while循环+case+select 3.脚本编写案例 一.脚本功能介绍 在企业中生产或运维中,经常会遇到VPN服务器.企业网盘.企业邮箱.云桌面私有账号等等一系列的服务器.当批量新员工入职时,经常需要批量账号分配给新员工,若此类账号存储在数据库时,管理员可根据公司账号命名规范通过专有图形化系统进行录入账号,若账号存储在系

18.创建用户之su命令切换用户

前戏 ????累了,也得写一番 正文 需求 有一个软件为了安全,该软件在运行时不推荐使用ROOT账户运行.所以我们会有个初始化shell脚本,来创建用户和初始化文件 ????????分析: ????????1.判断用户是否存在(譬如叫god),没有则创建 2.创建后设置密码为123 3.把一些程序文件拷贝过去,并且除了root外,只能god用户运行(最好是root也不能方便的运行) 二.具体脚本 USER_COUNT=`cat /etc/passwd | grep '^god:' -c` USE

Linux创建用户(转)

这篇文章总结的太好了,让我没动力新写一篇了,啊哈哈哈哈. 源自:http://www.cnblogs.com/ylan2009/articles/2321177.html Linux 系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统.用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问:另一方面也可以帮助用户组织文件,并为用户提供安全性保护.每个用户账号都拥有一个惟一的用户名和各

Shell脚本批量创建用户并随机生成密码

要求:批量创建10个系统账号oldboy01-oldboy10,并设置生成密码(密码不同). 实现脚本: #!/bin/bash #Question3 for i in $(seq -w 10) do         useradd -s /bin/bash oldboy$i         echo "password$i" | md5sum | tee -a passwd.txt | passwd --stdin  oldboy$i done 脚本执行效果: [[email pro

URL检查 跳板机 创建用户 Nginx启动 随机密码的脚本

URL检查 #!/bin/bashpath=/home/scriptsMAIL_GROUP="[email protected] [email protected]"PHOTO_GROUP="13502693568 18023569846". /etc/init.d/functionscheck_count=0 url_list(http://www.baidu.comhttp://blog.51cto.comhttp://www.qq.com http://192