『学了就忘』Linux用户管理 — 51、用户管理相关命令
1、添加用户(useradd命令)
(1)useradd命令
[root@localhost ~]# useradd [选项] 用户名
一般我们不加任何选项,都使用默认值创建用户即可。(推荐不使用任何选项)
下边可以了解一下常用选项。
选项:
-u
:550。指定用户的UID。
普通用户默认从500开始往后排,依次递增,这个选项是给用户指定一个UID。但从这之后再创建新的用户的UID,默认从551开始,依次递增。之前会产生一些没有用到的UID。(一般不会用此选项)。-g
:组名。指定初始组,不推荐手工指定。默认就好。
命令:useradd -g 组名 用户名
-G
:组名。指定附加组,把用户加入组,使用附加组。
命令:useradd -G 组名 用户名
-c
:说明。添加说明。(说明中如果有空格,需要把整个说明用双引号括起来。)-d
:加目录。手工指定家目录,目录不需要事先建立。(默认创建的位置就很好)-s
:shell/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=500
和UID_MAX=60000
:
这两行代表创建用户时,最小UID和最大的UID的范围。我们2.6.x
内核开始,Linux用户的UID最大可以支持2^32
这么多,但是真正使用时最大范围是60000就足够使用了,不够了在开。
还要注意,如果我手工指定了一个用户的UID是550,那么下一个创建的用户的UID就会从551开始,哪怕500-549
之间的UID没有使用(小于500的UID是给伪用户预留的)。GID_MIN=500
和GID_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
命令。