目录
用户是用来操作系统中不同功能的身份
Linux系统中用户的分类
超级用户:
root uid=0
系统用户:不需要登录系统,服务于应用程序,维护系统的运行
普通用户:可以登录的用户
uid>=1000
(
Linux6
版本
uid>=500
)
添加用户
[root@mysql ~]# useradd user
给用户设置密码
[root@mysql ~]# passwd user
更改用户 user 的密码 。
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
明文设置密码
[root@mysql ~]# echo 123.com.CN | passwd --stdin user
更改用户 user 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@mysql ~]#
注意: 密码必须设置为复杂性
切换用户操作
[root@mysql ~]# su - user
[user@mysql ~]$
执行添加用户的命令之后,系统文件会发生什么变化那?
1、会在/etc/passwd添加一行2、会在/etc/group添加一行3、会在/etc/shadow添加一行4、会在/etc/gshadow添加一行5、会在/home目录下建立一个与用户同名的目录作为家目录,同时会从/etc/skel目录中复制出所有的隐藏文件到该目录6、修改权限
系统文件:
/etc/passwd : 保存用户信息的文件/etc/shadow : 保存用户密码相关信息的文件/etc/group : 保存组信息的文件/etc/gshadow :保存组密码相关信息的文件
/etc/passwd
[root@mysql ~]# head -1 /etc/passwd
root:x:0:0:root:/root:/bin/bash
用户名:密码占位符:UID:GID:描述信息:家目录:登录shell
/etc/shadow
[root@mysql ~]# tail -1 /etc/shadow
user:$6$iJT2hG4d$8KglPNCmRyY2YMjKCYZcmDuHejuV7GH5fZ9CQv11MQ2zZJMjHCtdB76m8zZoo43HKMKdG1f3wENNG.a2nesVG0:19538:0:99999:7:::
1 )用户名2 )加密后的密码3 )上一次密码修改时间 ( 单位是天,是距离 1970 年 1 月 1 日 多少天 )4 )密码最小生存周期 单位:天 0 表示随时可以修改密码; 2 表示两天内不能修改5 )密码最大生存周期 单位:天,密码使用的最长时间6 )密码到期前几天开始警告7 )密码过期之后到账户失效之前的时间限制 密码过期之后还可以用几天8 )账户过期时间9 )保留列
/etc/group
[root@mysql ~]# head -1 /etc/group
root:x:0:
组名:密码占位符:GID:用户列表
/etc/gshadow
[root@mysql ~]# cat /etc/gshadow
root:::
组名: 加密后的密码:组管理员:组成员
//useradd 命令常用选项
-u 指定用户的uid-g 指定用户的gid-G 指定附属组,可以有多个, 但是这些附属组必须是系统内已经存在的-c 指定描述-d 指定家目录-M 不建立家目录-s 指定shell-e 指定用户过期时间, 日期-f 指定用户过期时间, 天数
//usermod 修改用户相关信息常用选项
与
useradd
参数差不多,一个是在创建用户时设定,一个是用户创建好
-u -g -G -d -s
-L
锁定用户
-U
解除锁定
-l
改名
-a
添加用户到组,结合
-G
使用
对用户的常用操作:
新增、删除、修改、查看、设置密码
查看用户 id
[root@mysql ~]# id user
uid=1001(user) gid=1001(user) 组=1001(user)
]# whoami //查看当前用户是谁root]# id lp //查看指定用户的信息uid=4(lp) gid=7(lp) groups=7(lp)uid:用户标识gid:组标识,用户的主组groups:用户所属组信息
添加用户 useradd
]# useradd niulang反例:]# su - niulang // switch user切换用户]$ useradd zhinv-bash: /usr/sbin/useradd: Permission denied 权限被拒绝,普通用户是无法添加用户的]$ exitlogout]# id niulanguid=500(niulang) gid=500(niulang) groups=500(niulang)添加用户时,如果不指定用户的组,那么默认会创建一个与用户名同名的组作为用户的主要组。
添加用户时指定选项 man useradd
-c :注释性的描述信息-d :指定用户的家目录默认情况下:root 的家目录是 /root普通用户的家目录是 /home-g :指定用户的主要组,前提:组是必须存在的-G :指定用户的附加组 ( 附属组 ) ,前提:组是必须存在的-s :指定用户的登录 shell-u :指定用户的 uid
[root@mysql ~]# head -1 /etc/passwd
root:x:0:0:root:/root:/bin/bash
[root@mysql ~]# echo $SHELL
/bin/bash
[root@mysql ~]#
用户名:密码:uid:gid:注释性描述:用户的家目录:用户的登录shell
要求区分的两种shell
/bin/bash :可登录 shell ,如果用户的 shell 是这个,那么该用户可以登录到系统中/sbin/nologin :非登录 shell ,如果用户的 shell 是这个,那么该用户是不允许登录到系统的
例子:
root@mysql ~]# useradd -M -s /sbin/nologin zhinv
[root@mysql ~]# id zhinv
uid=1002(zhinv) gid=1002(zhinv) 组=1002(zhinv)
[root@mysql ~]# less /etc/passwd | grep zhinv
zhinv:x:1002:1002::/home/zhinv:/sbin/nologin
[root@mysql ~]# zhinv:x:1003:1003::/home/zhinv:/sbin/nologin
删除用户 userdel
//删除的时候不会删除用户的家目录和邮箱
[root@mysql ~]# userdel wangmu
//能添加,但是会有提示消息
[root@mysql ~]# useradd wangmu
useradd:警告:此主目录已经存在。
不从 skel 目录里向其中复制任何文件。
正在创建信箱文件: 文件已存在
// -r
: 可以干净的删除一个用户
[root@mysql ~]# userdel -r wangmu
给用户设置密码
passwd:
超级用户:既可以修改自己的密码,又可以修改别人的密码,并且不需要提供当前密码普通用户:只能修改自己的密码,要求严格,并且需要提供当前密码
// 默认修改当前用户的密码
]# passwdChanging password for user root.New password:BAD PASSWORD: it is based on a dictionary wordBAD PASSWORD: is too simpleRetype new password:passwd: all authentication tokens updated successfully.
修改指定用户的密码
]# passwd niulangChanging password for user niulang.New password:BAD PASSWORD: it is too shortBAD PASSWORD: is too simpleRetype new password:passwd: all authentication tokens updated successfully.
普通用户修改自己的密码,需要当前密码,而且长度最少6位,而且不能是字典单词
]$ passwdChanging password for user niulang.Changing password for niulang.(current) UNIX password:New password:BAD PASSWORD: it is based on a dictionary wordNew password:Retype new password:passwd: all authentication tokens updated successfully.
修改用户:常用
//modify
:修改
usermod
:
-G :修改用户的附属组,不管用户原来的附属组如何,直接覆盖-g :修改用户的主要组-a :一般和 -G 联合使用,追加附属组-u :修改用户的 uid-d :修改用户的家目录-s :修改用户的 shell
[root@mysql ~]# useradd -G zhinv niulang
[root@mysql ~]# id niulang
uid=1003(niulang) gid=1003(niulang) 组=1003(niulang),1002(zhinv)
[root@mysql ~]# useradd xique
[root@mysql ~]# id xique
uid=1004(xique) gid=1004(xique) 组=1004(xique)
[root@mysql ~]# usermod -G xique niulang
[root@mysql ~]# id niulang
uid=1003(niulang) gid=1003(niulang) 组=1003(niulang),1004(xique)
[root@mysql ~]#
组 group
用户和组的关系:组中可以没有用户、也可以有一个或者多个用户。用户只有一个主要组,可以同时属于多个组,但是除了主组以外的其他组称为附属组。
组的分类:
从用户的角度分的,分为:主组: primary group 、 initial group 、 first group ,用户的默认组,也就是 gid 所标识的组附属组: secondary group 、 supplementary group
添加组 groupad
[root@mysql ~]# groupadd g1
[root@mysql ~]# groupadd -g 2023 g2
[root@mysql ~]# less /etc/group
[root@mysql ~]# tail -2 /etc/group
g1:x:1005:
g2:x:2023:
[root@mysql ~]#
组名:密码:gid:组里成员
修改组: groupmod
[root@mysql ~]# groupmod -g 2020 g2
[root@mysql ~]# tail -1 /etc/group
g2:x:2020:
[root@mysql ~]# groupmod -g 1080 -n group2 g2
[root@mysql ~]# tail -1 /etc/group
group2:x:1080:
[root@mysql ~]#
删除组:groupdel
PS: Centos6,以及Centos7.6之前所有的版本都适用于这个规则Centos7.7,是可以删除主要组
]# groupdel group1]# grep group1 /etc/group //没有任何输出,表示文件中没有含有group1关键字的行
组管理 gpasswd
管理 /etc/group 和 /etc/gshadow 文件的,每一个组可以有管理员,成员和密码给组加密码:可以让知道组密码的人,临时的切换到该组中,能够使用该组的资源。
指定组的管理员列表
[root@mysql ~]# groupadd groups
[root@mysql ~]# useradd u1
[root@mysql ~]# gpasswd -A u1 groups
向组中添加成员
[root@mysql ~]# su - u1
Attempting to create directory /home/u1/perl5
[u1@mysql ~]$ tail /etc/group
lisi:x:1000:lisi
mysql:x:980:
user:x:1001:
zhinv:x:1002:
niulang:x:1003:
xique:x:1004:niulang
g1:x:1005:
group2:x:1080:
groups:x:1081:
u1:x:1082:
给组设置密码
[u1@mysql ~]$ gpasswd groups
正在修改 groups 组的密码
新密码:
请重新输入新密码:
[u1@mysql ~]$
切换组
[root@mysql ~]# su - niulang
Attempting to create directory /home/niulang/perl5
[niulang@mysql ~]$ id
uid=1003(niulang) gid=1003(niulang) 组=1003(niulang),1004(xique)
[niulang@mysql ~]$ newgrp groups
密码:
[niulang@mysql ~]$ id
uid=1003(niulang) gid=1081(groups) 组=1081(groups),1003(niulang),1004(xique)
[niulang@mysql ~]$
将用户从组中删除
gpasswd -d sha groupsRemoving user sha from group groups
常用命令
常用命令
|
命令含义
|
useradd username
|
添加用户(创建的时候可以指定
u
、
g
、
c
等
选项)
|
id username
|
查看当前用户的
ID
|
whoami
|
查看当前用户的名字
|
passwd username
|
设置用户密码(普通用户只能通过
passwd
修改自己本身密码)
|
userdel username
|
删除一个用户(
-r
选项会连同创建的家目录
一同删除)
|
groupadd groupname
|
创建组
|
groupdel groupname
|
删除组
(
用户的主要组不可以删除)
|
usermod -[u,g,G
等
]
username
|
修改用户信息
|
groupmod groupname
|
修改组的信息
|
gpasswd -A username
groupname
|
为组添加一个管理员
|
gpasswd -a usrname
groupname
|
用组管理员为组添加一个用户成员
|
gpasswd -d username
group
|
删除一个组成员
|
gpasswd groupname
|
为组设定一个密码
|