1、添加用户(useradd命令)

(1)useradd命令

[root@localhost ~]# useradd [选项] 用户名

一般我们不加任何选项,都使用默认值创建用户即可。(推荐不使用任何选项)

下边可以了解一下常用选项。

选项:

  • -u:550。指定用户的UID。

    普通用户默认从500开始往后排,依次递增,这个选项是给用户指定一个UID。但从这之后再创建新的用户的UID,默认从551开始,依次递增。之前会产生一些没有用到的UID。(一般不会用此选项)。
  • -g:组名。指定初始组,不推荐手工指定。默认就好。

    命令:useradd -g 组名 用户名
  • -G:组名。指定附加组,把用户加入组,使用附加组。

    命令:useradd -G 组名 用户名
  • -c:说明。添加说明。(说明中如果有空格,需要把整个说明用双引号括起来。)
  • -d:加目录。手工指定家目录,目录不需要事先建立。(默认创建的位置就很好)
  • -sshell/bin/bash。(这个就是/etc/passwd 文件中每一行最后的一列)

注意

  • 执行完用户添加命令useradd 选项 用户名之后,一定要设置这个用户设置密码。
  • 添加完用户不设置密码,在/etc/passwd 文件中,信息是正常的,但是在/etc/shadow文件中,密码的位置是!!,表示无法登陆。
  • 设置密码命令为passwd 用户名,然后输入两次密码即可。

(2)useradd默认值

使用useradd命令添加用户时,参考的默认值文件主要有两个,分别是/etc/default/useradd文件和

/etc/login.defs文件。

1)/etc/default/useradd文件

[root@localhost ~]# vi /etc/default/useradd

命令结果如下图所示:

下面挨个解释下:

  • GROUP=100

    这个选项是建立用户的默认组,也就是说添加每个用户时,用户的初始组就是GID为100的这个用户组。但是这个机制没有采用,目前我们采用的机制私有用户组机制,也就是初始组默认和用户名同名。(这选项等于没起作用)
  • HOME=/home

    这个选项是用户的家目录的默认位置,所以所有的新建用户的家目录默认都在/home/下。
  • INACTIVE=-1

    这个选项就是密码过期后的宽限天数,也就是/etc/shadow文件的第七个字段。

    单位是天数,比如10代表密码过期后10天后失效;如果是0,代表密码过期后立即失效;如果是-1,则代表密码永远不会失效。这里默认值是-1,所以所有新建立的用户密码都不会失效。

    (对修改完之后,创建的新用户生效。)
  • EXPIRE=

    这个选项是密码失效时间,也就是/etc/shadow文件的第八个字段。

    也就说用户到达这个日期后就会直接失效。当然这里也是使用时间戳来表示日期的。默认值是空,所以所有新建用户没有失效时间,永久有效。
  • SHELL=/bin/bash

    这个选项是用户的默认shell的。/bin/bash是Linux的标志shell,所以所有新建立的用户默认都具备shell赋予的权限。
  • SKEL=/etc/skel

    这个选项就是定义用户的模板目录的位置,/etc/skel/目录中的文件都会复制到新建用户的家目录当中。
  • CREATE_MAIL_SPOOL=yes

    这个选项定义是否给新建用户建立邮箱,默认是创建,也就是说所有的新建用户系统都会新建一个邮箱,放在/var/spoo1/mail/下和用户名相同。

2)/etc/login.defs文件

下面是文件内容:

# 这个文件有些注释,把注释删除掉,文件内容就变成下面这个样子了
[root@localhost ~]# vi /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

我们一行一行解释下文件内容:

  • MAIL_DIR=/var/spool/mail

    这行指定了新建用户的默认邮箱位置。比如user1用户的邮箱是就是/var/spool/ma il/user1
  • PASS_MAX_DAYS=99999

    这行指定的是密码的有效期,也就是/etc/shadow文件的第五字段。代表多少天之后必须修改密码,默认值是99999。
  • PASS_MIN_DAYS=0

    这行指定的是两次密码的修改间隔时间,也就是/etc/shadow文件的第四字段。代表第一次修改密码之后,几天后才能再次修改密码。默认值是0。
  • PASS_MIN_LEN=5

    这行代表密码的最小长度,默认不小于5位。但是我们现在用户登录时验证已经被PAM模块取代(更先进一些),所以这个选项并不生效。
  • PASS_WARN_AGE=7

    这行代表密码修改到期前的警告天数,也就是/etc/shadow文件的第六字段。代表密码到底有效期前多少天开始进行警告提醒,默认值是7天。
  • UID_MIN=500UID_MAX=60000

    这两行代表创建用户时,最小UID和最大的UID的范围。我们2.6.x内核开始,Linux用户的UID最大可以支持2^32这么多,但是真正使用时最大范围是60000就足够使用了,不够了在开。

    还要注意,如果我手工指定了一个用户的UID是550,那么下一个创建的用户的UID就会从551开始,哪怕500-549之间的UID没有使用(小于500的UID是给伪用户预留的)。
  • GID_MIN=500GID_MAX 60000

    这两行指定了GID的最小值和最大值之间的范围。
  • CREATE_HOME=yes

    这行指定建立用户时是否自动建立用户的家目录,默认是建立。
  • UMASK=077

    077这行指定的是建立的用户家目录的默认权限,因为umask值是077,所以新建的用户家目录的权限是700(算完之后就是700,注意这个家目录的umask值是本文件中单独定义的,和普通文件的umask值互相独立,该选项无需改动,这样就很好)。
  • USERGROUPS_ENAB=yes

    这行指定的是使用命令userdel删除用户时,是否删除用户的初始组,默认是删除。
  • ENCRYPT_METHOD=SHA512

    这行指定Linux用户的密码使用SHA512散列模式加密,这是新的密码加密模式,原先的Linux只能用DES或MD5方式加密。

3)总结

以上命令基本上不用改动,记住文件的作用,了解就好。

2、设定密码(passwd命令)

(1)命令格式

[root@localhost ~]# passwd [选项] 用户名

选项:

  • -l:暂时锁定用户。该选项仅root用户可用。

    其实就是在/etc/shadow文件中的密码位置,最前边加入了两个!。(手工修改也行,同样的效果)
  • -u:解锁用户。该选项仅root用户可用。

    /etc/shadow文件中的密码位置,取消最前边的两个!
  • --stdin:可以将通过管道符输出的数据作为用户的密码。

    也就是说,可以用输出的字符串作为密码。

    主要在批量添加用户时使用。

示例:

# passwd直接回车代表修改当前用户的密码
[root@localhost ~]# passwd # 注意:普通用户修改自己的密码,密码要符合规范,如果不符合规范修改不了。

(2)可以使用字符串作为密码

# 更改用户user1的密码。
[root@localhost ~]# echo "123" | passwd --stdin user1 # 说明:
# echo "123" 输出123字符串,通过管道符交给passwd,
# 由--stdin选项来支持把passwd收到的密码,设置给user1用户。

注意:--stdin选项来设置密码,不用再输入现有密码和两次新密码的交互了,非常适合批量添加用户时使用。

(3)实练

当我批量创建完用户之后,密码一般都是统一的一个默认值,我需要用户登陆时,第一时间就要修改密码,需要怎么做?

可以通过命令,把密码修改日期归零(/etc/shadow文件第3字段),这样用户一登陆就要修改密码。

提示:因为修改密码的时候为0,证明该用户从1970年到现在一次密码都没有修改过,Linux系统会认为这是不对的,需要你马上进行修改密码。

例如:

[root@localhost ~]# chage -d 0 user1

再次登陆,一上来就会要求你修改密码。

如下图所示:

先输入旧密码,在输入新密码,新密码要求符合规范。然后会登出,需要你重新登陆。

linux设置密码规则

  • 1.使用数字,小写字母,大写字母,特殊符号中的三种。
  • 2.密码长度足够长,大于7位。

3、用户信息修改(usermod命令)

usermod命令是修改已经添加的用户的信息的。

(1)命令格式

命令如下:

[root@localhost ~]# usermod [选项] 用户名

选项:

  • -u:UID。修改用户的UID。
  • -d:家目录。修改用户的家目录。家目录必须写绝对路径。
  • -c:用户说明。修改用户的说明信息,就是/etc/passwd文件的第五个字段。
  • -g:组名。修改用户的初始组,就是/etc/passwd文件的第四个字段。
  • -G:组名。修改用户的附加组,其实就是把用户加入其他用户组。
  • -s :shell。修改用户的登录Shell,默认是/bin/bash
  • -e:日期。修改用户的失效日期,格式为YYY-MM-DD,也就是/etc/shadow文件的第八个字段。
  • -L:临时锁定用户(Lock)。
  • -U:解锁用户(Unlock)。

说明:

你仔细对比一下,usermod命令和useradd命令的选项基本一样。

  • useradd命令是在创建新用户的同时,指定属性。
  • usermod命令是修改系统中已存在用户的属性。

这些选项一般也不建议修改,常用的也就-G选项。

如下示例:

[root@localhost ~]# usermod -G user1(组) user2(用户)

(2)用户可以修改用户名吗?

当然可以,但是不建议修改用户名。

因为是修改了用户名,而初始组等与用户名对应的信息都没有修改,以后用起来及其痛苦。

建议删除旧用户,再建立新用户!

# 修改用户名
[root@localhost ~]# usermod -l 新名 旧名

4、删除用户(userdel命令)

[root@localhost ~]# userdel [-r] 用户名

选项:

  • -r:在删除用户的同时删除用户的家目录。(该选项一般为必选项)

5、切换用户身份(su命令)

su命令可以切换成不同的用户身份(包括切换成root用户)。

注意:超级用户切换成任何其他普通用户都不用密码。

命令格式如下:

[root@localhost ~]# su [选项] 用户名

选项:

  • -:选项只使用-代表连带用户的环境变量一起切换。
  • -c命令:仅执行一次命令,而不切换用户身份。

注意:-绝不能省略,它代表切换用户身份时,用户的环境变量也要切换成新用户的环境变量(用户身份完整切换)。

示例:

# su切换用户身份
[user1@localhost ~]$ su - user2
密码:
[user2@localhost user1]$ whoami
user2 # 退出身份切换
[user2@localhost user1]$ exit
exit
[user1@localhost ~]$ whoami
user1

提示:查看系统生效的变量用env命令。

『学了就忘』Linux用户管理 — 51、用户管理相关命令的更多相关文章

  1. 『学了就忘』Linux系统管理 — 86、查看系统资源相关命令

    目录 1.vmstat命令 2.dmesg命令 3.free命令 4.查看CPU信息 5.查看本机登陆用户信息 (1)w命令 (2)who命令 6.uptime命令 7.查看系统与内核相关信息 1.v ...

  2. 『学了就忘』Linux文件系统管理 — 61、使用parted命令进行分区

    目录 1.parted命令介绍 2.parted交互模式 3.建立分区 (1)查看分区 (2)修改成GPT分区表 (3)建立分区 (4)建立文件系统(格式化) (5)调整分区大小 (6)删除分区 1. ...

  3. 『学了就忘』Linux文件系统管理 — 59、使用fdisk命令进行手工分区

    目录 1.手工分区前提 (1)要有一块新的硬盘 (2)在虚拟机中添加一块新硬盘 2.手工分区 (1)查看Linux系统所有硬盘及分区 (2)手工分区:详细步骤 (3)保存手工分区 3.硬盘格式化 4. ...

  4. 『学了就忘』Linux系统管理 — 81、进程管理介绍

    目录 1.进程与线程的概念 2.什么是进程管理 3.进程管理的作用 4.Linux进程的几种状态 5.进程与线程的关系 (1)线程与进程的关系 (2)总结 1.进程与线程的概念 来源百度百科: 进程( ...

  5. 『学了就忘』Linux系统管理 — 85、工作管理相关命令

    目录 1.工作管理简介 2.如何把命令放入后台 3.后台管理命令 (1)查看后台的工作 (2)将后台暂停的工作恢复到前台执行 (3)把后台暂停的工作恢复到后台执行 4.后台命令脱离登录终端运行 1.工 ...

  6. 『学了就忘』Linux用户管理 — 50、用户管理相关文件详细说明

    目录 1.用户信息文件 2./etc/shadow影子文件 3./etc/group 组信息文件 4.组密码文件 5.用户的家目录 6.用户邮箱目录 7.用户模板目录 总结: 提示:严格的用户权限划分 ...

  7. 『学了就忘』Linux启动引导与修复 — 72、Linux系统的修复模式(单用户模式)

    目录 1.单用户模式常见的错误修复 2.通过单用户模式修改系统密码 (1)进入grub启动引导程序中 (2)编辑相应的系统启动内容 (3)编辑grub配置文件内容 (4)启动系统 (5)修改root用 ...

  8. 『学了就忘』Linux基础命令 — 25、文件基本权限的管理

    目录 1.文件和目录的默认权限 2.umask默认权限 (1)查看系统的umask权限 (2)用八进制数值显示umask权限 (3)umask权限的计算方法 (4)注意:umask默认权限的计算绝不是 ...

  9. 『学了就忘』Linux基础 — 15、了解Linux系统的目录结构

    目录 1.一级目录说明 (1)一级目录列表 (2)/bin/和/sbin/目录说明 (3)/boot/目录说明 (4)/lib/和/lib64/目录说明 (5)/lost+found/目录说明 (6) ...

随机推荐

  1. 『Mivik的萌新赛 & Chino的比赛 2020』T2 题解 Galgame

    如果这是我最后一篇题解,请每年为我上坟. Galgame 题目传送门 Decription as_lky 搞到了很多 Galgame(真的很多!).一款 Galgame 可以被描述为很多场景(Scen ...

  2. SpringBoot使用注解进行分页

    分页使用可以说非常普遍了,有时候会需要非常灵活的方式去开启或关闭分页,尝试使用一下注解的方式来进行分页. 依赖安装 需要使用的依赖: Mybatis-Plus PageHelper SpringBoo ...

  3. python函数参数类型:位置参数、默认参数、动态参数、关键字参数

    1.位置参数:调用函数的时候传的参数,参数默认按顺序赋值,如果是指定那个参数赋值,不关注顺序.指定参数a=1,b=2 就在函数体内a=1,b=2 2.默认参数:在定义函数的时候,给某个参数设置默认值 ...

  4. Upload-labs通关指南(下) 11-20

    承接上篇,这次我们继续做下半部分. 有些题目有其他做法是针对于windows系统特性的,并不能在linux上奏效,因此不在考虑范围之内. Pass-11 制作图片马直接上传 copy a.jpg /a ...

  5. 【NXOpen.UF扩展】修改表达式

    public static class UFExpEx { /// <summary> /// 修改当前部件的表达式 /// </summary> /// <param ...

  6. NX CAM 区域轮廓铣的切削步长

    从NX3.0到NX9.0,默认都是5%.可是实际计算的精确度是不一样的.到NX8.0上发现计算速度特别慢,后来东找西找,设置这个参数可以解决.PS:请慎用!请后后面的官方解释. 官方的解释是: &qu ...

  7. C语言对"不定长"字符串数组的遍历

    一般来说,c语言的数组的初始化可以通过三种方式: {0},在声明时使用,如 int a[10]={0} 使用memset, memset(array,0,sizeof(array)) 用for循环赋值 ...

  8. [敏捷软工团队博客]Beta阶段项目展示

    团队成员简介和个人博客地址 头像 姓名 博客园名称 自我介绍 PM 测试 前端 后端 dzx 秃头院的大闸蟹 大闸蟹是1706菜市场里无菜可卖的底层水货.大闸蟹喜欢音乐(但可惜不会),喜欢lol(可惜 ...

  9. FastAPI 学习之路(五十五)操作Redis

    之前我们分享了操作关系型数据库,具体文章, FastAPI 学习之路(三十二)创建数据库 FastAPI 学习之路(三十三)操作数据库 FastAPI 学习之路(三十四)数据库多表操作 这次我们分享的 ...

  10. Noip模拟14 2021.7.13

    T1 队长快跑 本身dp就不强的小马看到这题并未反映过来是个dp(可能是跟题面太过于像那个黑题的队长快跑相似) 总之,基础dp也没搞出来,不过这题倒是启发了小马以后考试要往dp哪里想想 $dp_{i, ...