1.用户存在的意义:
用户概念在系统中是系统安全机制的一部分
2.组存在的意义
共享,开放权力
3.用户的查看
(1)whoami # 查看系统的当前用户
[[email protected] Desktop]# whoami
root
(2)id # 查看指定用户id信息
id -u # 查看用户的uid
id -g # 查看用户的gid
id -n # 显示名字而不显示id数字
[[email protected] Desktop]# id
uid=0(root) gid=0(root) groups=0(root)
[[email protected] Desktop]# id root
uid=0(root) gid=0(root) groups=0(root)
[[email protected] Desktop]# id student
uid=1000(student) gid=1000(student) groups=1000(student),10(wheel)
[[email protected] Desktop]# id -u
0
[[email protected] Desktop]# id -g
0
[[email protected] Desktop]# id -nu
root
[[email protected] Desktop]# id -ng
root
(3)用户切换
su - 用户名称 # ‘-’表示在用户身份切换时同时切换当前用户的环境
su 用户名称 # 仅仅切换用户身份
[[email protected] Desktop]# su student
[[email protected] Desktop]$ pwd #其实并没有切换到student用户
/root/Desktop
[[email protected] Desktop]$ exit
[[email protected] Desktop]# su - student
Last login: Tue Oct 2 09:33:22 EDT 2018 on pts/0
[[email protected] ~]$ pwd
/home/student
注1:su - 切换时,高级用户切换到低级用户,不需要输入密码,低级用户切换到高级用户需要密码,切换到其他普通用户也需要输入密码
[[email protected] Desktop]# su - student
Last login: Thu May 11 20:23:54 EDT 2017 on pts/0
[[email protected] ~]$ su - root
Password:
Last login: Sun Sep 30 22:01:45 EDT 2018 from 172.25.254.42 on pts/1
注2:每次su - 切换到其他用户操作之后必须退出,然后再切换到其他用户,如果不切换,就会报错
[[email protected] Desktop]# gedit file # root用户可以打开gedit文件
[[email protected] Desktop]# su - student
Last login: Sun Sep 30 23:02:51 EDT 2018 on pts/1
[[email protected] ~]$ su - root # 通过两层切换又切换到root用户
Password:
Last login: Sun Sep 30 23:07:19 EDT 2018 from 172.25.254.42 on pts/1
[[email protected] ~]# gedit file1 # 但是此时不能打开gedit文件,因为打开时,要层层上报,先要经过student用户,才能回到root用户,而student用户不能打开gedit文件,这就报错了
(gedit:31482): Gtk-WARNING **: cannot open display:
4.用户在系统中的存在方式
/etc/passwd # 用户信息文件
用户名称 : 密码 : uid : gid : 说明 : 家目录 : 默认shell
^
打开虚拟机时,列表的显示信息
/etc/group # 用户信息组文件
组名称 :组密码 :组id : 组成员
/etc/shadow # 认证信息文件
/etc/skel/.* # 默认开启shell的配置,用户的骨文件
/home/username # 用户的家目录
5.用户管理命令
(1)用户的删除(userdel)
userdel student # 删除用户但不删除用户的配置文件
userdel -r student # 删除用户并且删除用户的配置文件
[[email protected] Desktop]# useradd westos
[[email protected] Desktop]# userdel westos
[[email protected] Desktop]# useradd westos # 再次建立时就会报错,因为配置文件存在
useradd: warning: the home directory already exists.
Not copying any file from skel directory into it.
Creating mailbox file: File exists
解决方案:
[[email protected] Desktop]# userdel -r westos
(2)用户建立(useradd)
建立用户时,读取/etc/login.defs文件内容确定规则,默认uid和gid相等
useradd -u 8888 westos # 指定用户uid,默认从1000开始
useradd -g 8888 westos # 指定用户初始组id,8888用户组必须是存在的
useradd -G 8888 westos # 指定用户的附加组id,8888用户组必须是存在的
useradd -c "hello" westos # 指定用户的说明
useradd -d /home/westos westos # 指定用户的家目录
useradd -s /bin/bash westos # 指定用户的默认shell
[[email protected] ~]# watch -n 1 'tail -n 4 /etc/passwd /etc/group;ls -ld /home/' # 监控命令
Every 1.0s: tail -n 4 /etc/passwd /etc/group;ls il /home/ Sun Sep 30 23:53:00 2018
==> /etc/passwd <==
pulse:x:171:171:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
gnome-initial-setup:x:993:991::/run/gnome-initial-setup/:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
==> /etc/group <==
stapsys:x:157:
stapdev:x:158:
tcpdump:x:72:
slocate:x:21:
total 15
drwx------ 2 root root 12288 May 11 2017 lost+found
drwx------. 5 student student 1024 Oct 1 11:22 student
[[email protected] Desktop]# useradd westos
[[email protected] Desktop]# userdel -r westos
[[email protected] Desktop]# useradd -u 8888 westos
(3)用户组的建立(groupadd)
groupadd -g 8888 组名 # 建立用户组并指定用户组的id
groupdel 组名 # 删除用户组
[[email protected] Desktop]# userdel -r westos # 删除用户时,会连同用户所在的组一起删掉,除非组名不一样
[[email protected] Desktop]# groupadd -g 8888 westos
==> /etc/group <==
stapdev:x:158:
tcpdump:x:72:
slocate:x:21:
westos:x:8888:
[[email protected] Desktop]# useradd -g 8888 westos
[[email protected] Desktop]# userdel -r westos
[[email protected] Desktop]# groupadd -g 8888 westos
[[email protected] Desktop]# useradd -G 8888 linux
[[email protected] Desktop]# id linux
uid=1001(linux) gid=1001(linux) groups=1001(linux),8888(westos)
[[email protected] Desktop]# userdel -r linux
[[email protected] Desktop]# groupdel westos
[[email protected] Desktop]# useradd -c "wesros user" westos
[[email protected] Desktop]# cat /etc/shells # 系统中所有版本的shell
(4)更改信息
##更改用户组信息
groupmod -g 8888 westos # 更改组id
##更改用户信息
usermod -l 新名称 旧名称 # 更改用户的名称
usermod -u 8888 westos # 更改用户uid
usermod -g 8888 westos # 更改用户的初始组
usermod -G 8888 westos # 更改用户的附加组
usermod -aG 8888 westos # 添加用户的附加组,
usermod -G "" westos # 清空附加组的身份
usermod -d /home/la westos # 更改用户的家目录的指向
usermod -md /home/la westos # 更改用户家目录
usermod -s /bin.sh westos # 更改用户的shell
usermod -L westos # 冻结用户
usermod -U westos # 解冻用户
[[email protected] Desktop]# userdel -r westos
[[email protected] Desktop]# groupadd -g 6666 westos # 添加初始组id
[[email protected] Desktop]# groupmod -g 8888 westos # 修改初始组id
[[email protected] Desktop]# useradd linux
[[email protected] Desktop]# usermod -l redhat linux # 修改用户名为redhat
[[email protected] Desktop]# usermod -l linux redhat # 把名字改回来
[[email protected] Desktop]# usermod -u 8888 linux # 修改用户的uid
[[email protected] Desktop]# usermod -g 8888 linux # 修改linux的gid为8888,前提是8888这个组必须存在
[[email protected] Desktop]# usermod -G 8888 linux # 更改用户的附加组,-G只能改,即只能更改成一个用户有一个附加组
[[email protected] Desktop]# usermod -G 21 linux # 更改linux用户的附加组为gid为21的组
[[email protected] Desktop]# usermod -aG 8888 linux # 给用户添加附加组,此时,一个用户可以拥有多个附加组
[[email protected] Desktop]# usermod -d /home/westos linux # 修改用户的家目录的指向为/home/westos
[[email protected] Desktop]# usermod -d /home/linux linux # 先改回去,保证家目录指向与家目录相同
[[email protected] Desktop]# usermod -md /home/la linux # 家目录指向和家目录一起改
[[email protected] Desktop]# usermod -d /home/westos linux # 把家目录的指向又改为/home/westos
# 恢复环境
[[email protected] Desktop]# usermod -d /home/la linux
[[email protected] Desktop]# usermod -md /home/la linux
[[email protected] Desktop]# usermod -s /sbin/nologin linux
[[email protected] Desktop]# su - linux # /sbin/nologin是系统用户,外界不能登陆
This account is currently not available.
[[email protected] Desktop]# usermod -s /bin/bash linux # 恢复
[[email protected] Desktop]# usermod -L student # student用户的密码被冻结了
[[email protected] Desktop]# su - linux
Last login: Mon Oct 1 02:17:19 EDT 2018 on pts/0
[[email protected] ~]$ su - student # 切换student失败
Password:
su: Authentication failure
[[email protected] ~]$ exit
logout
[[email protected] Desktop]# usermod -U student # 解冻密码
[[email protected] Desktop]# su - linux
Last login: Mon Oct 1 02:33:07 EDT 2018 on pts/0
[[email protected] ~]$ su - student # 可以切换
Password:
Last login: Sun Sep 30 23:07:47 EDT 2018 on pts/1
Last failed login: Mon Oct 1 02:33:21 EDT 2018 on pts/0
There was 1 failed login attempt since the last successful login.
7.用户认证信息
(1)/etc/shadows #记录用户认证信息
[[email protected] Desktop]# tail -n 3 /etc/shadow
gnome-initial-setup:!!:16261::::::
tcpdump:!!:16261::::::
linux:!!:17805:0:99999:7:::
此文件一共有九列:
用户名称:用户密码:用户密码最后一次被更改的时间:用户密码最短有效期:用户密码最长有效期:密码警告期限:用户非活跃天数:用户到期日:用户自定义列,目前没有启用
^
如果是0,则登陆时必须先更改密码
[[email protected] Desktop]# watch -n 1 ' tail -n 4 /etc/shadow' # 监控
Every 1.0s: tail -n 4 /etc/shadow Tue Oct 2 11:51:46 2018 g
nome-initial-setup:!!:16261::::::
tcpdump:!!:16261::::::
apache:!!:17694::::::
linux:!!:17806:0:99999:7:::
[[email protected] Desktop]# useradd westos
[[email protected] Desktop]# passwd westos
[[email protected] Desktop]# usermod -L westos # 冻结密码,即给密码前加一个叹号
[[email protected] Desktop]# usermod -U westos # 解冻密码,即消除叹号
[[email protected] Desktop]# passwd -d westos # 删除密码
[[email protected] Desktop]# passwd -n 1 westos
[[email protected] Desktop]# passwd -n 0 westos # 恢复环境
[[email protected] Desktop]# vim /etc/shadow # 以文件形式改变westos用户的用户密码最后一次被更改的时间,当改为0时,每次登陆时都要改密码
41 westos::0:0:99999:7:::
(2)用户密码
passwd -S westos # 查看westos用户密码信息
passwd westos # 更改westos密码,超级用户才可以执行此条命令
passwd -d westos # 清空westos密码
passwd -e westos # 修改用户密码最后一次被更改的时间,会改变用户最后一次更改密码时间为0,此时用户在登陆时会被强制更改密码
chage -d 0 westos
passwd -n 1 westos # 改变用户密码最短有效期,westos用户在1天之内不能修改密码
chage -m 1 westos
passwd -w 2 westos # 改变用户密码最长有效期,密码过期前两天有警告输出
chage -W 2 westos
passwd -i 1 westos # 改变用户非活跃天数,密码过期后仍可登陆系统的天数
chage -I 1 westos
chage -E 2018-11-11 westos # 用户到期日,westos用户在2018-11-11日会被冻结
passwd -l westos # 冻结westos用户密码,即在用户密码前加入“!!”
passwd -u westos # 解冻密码
usermod -L westos # 冻结密码,在用户密码前加入‘!’
usermod -U westos # 解冻密码,但只在密码不为空时使用
#用户自定义列,目前没有启用
注意:
普通用户改密码时
1.必须知道当前永久原始密码
2.密码不能和帐号名称相似
3.密码不能是纯数字或纯字母
4.密码不能是有序的字母和数字的组合
区分passwd和usermod冻结和解冻密码
[[email protected] Desktop]# passwd -l westos # 冻结westos用户密码,即在密码前加两个叹号
Locking password for user westos.
passwd: Success
[[email protected] Desktop]# passwd -u westos # 解锁,一次性消掉两个叹号
Unlocking password for user westos.
passwd: Success
[[email protected] Desktop]# passwd -l westos
[[email protected] Desktop]# usermod -U westos # 解锁,但一次只能消除掉一个叹号
[[email protected] Desktop]# usermod -U westos # 必须解锁两次才能将锁解开
# passwd的其他用法
[[email protected] Desktop]# passwd -e westos # 以命令方式修改用户密码最后一次被更改的时间
Expiring password for user westos.
passwd: Success
[[email protected] Desktop]# passwd westos # 重设密码就可以恢复
8.用户授权
(1)权力下放文件为/etc/sudoers
此文件可以用vim直接编辑,但是不提供语法检测,
也可以用visudo编辑,提供语法检测
(2)下放方式用户 主机名=(得到的用户身份) 命令
tom localhost=(root) /usr/sbin/useradd # tom用户在localhost主机上以root用户身份执行useradd命令
tom localhost=(root) NOPASSWD: /usr/sbin/useradd # tom用户在localhost主机上以root用户身份免密执行useradd命令
(3)测试
[[email protected] Desktop]# visudo
99 ##Allow tom to run useradd # 这只是一行解释,不写也可以
100 tom localhost=(root) /usr/sbin/useradd
[[email protected] Desktop]# useradd tom
[[email protected] Desktop]# passwd tom
[[email protected] Desktop]# su - tom
[[email protected] ~]$ useradd lala # 还是不能建立用户,因为执行useradd命令时,根本没有调用/etc/sudoers文件
-bash: /usr/sbin/useradd: Permission denied
[[email protected] ~]$ sudo useradd lala # 用sudo命令调用文件,使之生效
[sudo] password for tom: # 需要输入tom用户的密码,才能执行命令
[[email protected] ~]$ id lala # 用户建立成功
uid=8892(lala) gid=8895(lala) groups=8895(lala)
# 免密
[[email protected] Desktop]# visudo # 注意语法
99 ##Allow tom to run useradd
100 tom localhost=(root) NOPASSWD: /usr/sbin/useradd
[[email protected] Desktop]# su - tom
Last login: Mon Oct 1 03:56:42 EDT 2018 on pts/2
[[email protected] ~]$ sudo useradd linux
[[email protected] ~]$ id linux
uid=8893(linux) gid=8893(linux) groups=8893(linux)