用户和组管理

关于作者

周李杰,最后一批90后,现居湖北武汉

孤独患者,懒癌中期,无脑幻想者。但却人畜无害,无需远离。

兴趣众多,然无一精通。正努力成为一个有趣的人。

1
2
> print("👆以上是不完整的我") //请我吃大餐将会了解更多
>

用户和组管理

[TOC]

何为用户何为组?

用户和组的概念

例如:小明和他的家人

小明就是用户,他的家就是这个组,他的家人就是这个组里面的组员

*用户存在的目的是为了实现资源的分派。 *

小明在家里有知识,可以教给小明的爸爸妈妈,小明的妈妈会做饭,可以做的饭给小明和小明爸爸吃,小明的爸爸有钱,可以给小明和小明妈妈花。

用户分类

Linux用户分为管理员和普通用户两种:

用户类别 用户ID
管理员 0
普通用户 1-65535

其中普通用户又分为系统用户和登录用户两种:

用户类别 用户ID
系通用户 1-999(为 守护类进程获取系统资源而完成权限指派的用户 )
登陆用户 1000-60000(为了完成交互式登录使用的用户)

Linux安全上下文

运行中的程序:进程

以进程发起者的身份运行

进程所能够访问的所有资源的权限取决于进程的发起者的身份

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# 首先我们打开两个终端
# 在第一个终端里输入
[root@MR ~]# cd /tmp
[root@MR tmp]# ls
shadow
[root@MR tmp]# touch 123
[root@MR tmp]# ls -l
总用量 4
-rw-r--r--. 1 root root 0 3月 27 07:37 123
----------. 1 root root 608 3月 8 15:48 shadow
# 在这里我们可以看到root是可读可写的权限
# 在第二个终端里输入
[root@MR ~]# su - zhou
上一次登录:三 3月 27 04:27:47 CST 2019pts/1 上
[zhou@MR ~]$ cd /tmp
[zhou@MR tmp]$ ls -l
总用量 4
-rw-r--r--. 1 root root 0 3月 27 07:37 123
----------. 1 root root 608 3月 8 15:48 shadow
[zhou@MR tmp]$ vim 123
~
"123" [只读] 0L, 0C 0,0-1 全部
# 然后我们在第一个终端里输入
[root@MR tmp]# ps aux | grep vim
zhou 4946 0.1 0.2 151916 5004 pts/0 S+ 07:40 0:00 vim 123
root 4948 0.0 0.0 112656 992 pts/2 R+ 07:40 0:00 grep --color=auto vim
# 在这里我们可以看到 vim 123 是由zhou用户发起的进程
# 但是我们子啊第二步骤里面可以看到这个文件只是一个只读文件

Linux通过安全上下文的概念完成用户权限的指派。

先判断用户是否是某文件的属主

再判断用户是否属于某个组

最后定其为其他用户

Linux用户组类别

用户组类别 特征
私有组 创建用户时,如果没有为其指定所属的组, 系统会自动为其创建一个与用户名相同的组
基本组 用户的默认组
附加组(额外组) 默认组以外的其它组

Linux 用户和组相关的配置文件

各配置文件的说明

配置文件 作用
/etc/passwd 用户及其属性信息(名称、uid、基本组id等等)
/etc/group 组及其属性信息
/etc/shadow 用户密码及其相关属性
/etc/gshadow 组密码及其相关属性。在用户执行基本组切换时使用
1
2
3
4
5
6
[root@MR tmp]# tail -n5 /etc/passwd
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
zhou:x:1000:1000::/home/zhou:/bin/bash
wangqing:x:1001:1003:wu liang tian zun:/opt/123:/bin/csh
openstack:x:1002:1005::/home/openstack:/bin/bash
1
2
3
4
5
6
[root@MR tmp]# tail -n5 /etc/group
taoist:x:1001:wangqing
tianzun:x:1002:wangqing
wangqing:x:1003:
123:x:1004:
openstack:x:1005:
配置文件 /etc/passwd /etc/group
第一字段 用户名 组名
第二字段 密码占位符号 组名
第三字段 UID 组密码
第四字段 GID GID
第五字段 用户的描述信息 以当前组为附加组的用户列表(分隔符为逗号)
第六字段 用户家目录
第七字段 用户的登录shell
1
2
3
4
5
6
[root@MR tmp]# tail -n5 /etc/shadow
postfix:!!:17961::::::
sshd:!!:17961::::::
zhou:!!:17981:0:99999:7:::
wangqing:!!:17981:0:99999:3::17986:
openstack:!!:17981:0:99999:7:::
1
2
3
4
5
6
[root@MR tmp]# tail -n5 /etc/gshadow
taoist:!::wangqing
tianzun:!::
wangqing:!::
123:$6$f3I23/woA$DV6eA/Qc0KsZkbwOo1uqC3YRx30riDKd/ZOtrEulPnct2knx4gBakc8rFYwnCOXFKaG4H7Cdf1alzK/V6fpTl/::
openstack:!::
配置文件 /etc/shadow
第一字段 登录名
第二字段 加密后的密码
第三字段 最近一次更改密码的日期
第四字段 密码的最小使用期限
第五字段 密码的最大使用期限
第六字段 密码警告时间段
第七字段 密码禁用期
第八字段 帐号的过期日期
第九字段 保留字段

以上配置文件均可用vim 进行改动

加密方法

  • 对称加密:加密和解密使用同一个密钥
  • 公钥加密:每个密码都成对出现,一个为私钥(secret key),一个为公钥(public key)
  • 单向加密:也叫散列加密,提取数据特征码,能加密不能解密,常用于做数据完整性校验

单向加密的特点:

  • 雪崩效应(初始条件的微小改变,将会引起结果的巨大改变)

  • 定长输出

    ​ 1.MD5:128位定长输出

    ​ 2.SHA1:160位定长输出

    ​ 3.SHA224:224位定长输出

    ​ 4.SHA256:256位定长输出

    ​ 5.SHA384:384位定长输出

    ​ 6.SHA512:512位定长输出

一般我们只用MD5进行加密

Linux用户密码加密方式

Linux密码是使用的单向加密方式进行加密

意思是每个密码都不一样,在加密前给用户设置的密码加上一点杂质,再对这个杂质+用户密码一起使用单向加密。由于单向加密的雪崩效应,就算两人设置的密码是一样的,但因为杂质的不同,最终的结果也会截然不同

密码复杂性策略:

  • 使用数字、大写字母、小写字母及特殊字符中至少3种
  • 足够长
  • 使用随机密码,不要使用有意义的单词或数字
  • 定期更换,不要使用最近曾经使用过的密码

用户和组相关的命令

用户管理

用户创建命令useradd

-u 指定uid

1
2
3
4
[root@MR tmp]# cd
[root@MR ~]# useradd -u 8888 yue
[root@MR ~]# id yue
uid=8888(yue) gid=8888(yue) 组=8888(yue)

-g 指定gid

1
2
3
4
5
6
7
8
9
[root@MR home]# tail -n5 /etc/group
taoist:x:1001:wangqing
tianzun:x:1002:wangqing
wangqing:x:1003:
123:x:1004:
openstack:x:1005:
[root@MR home]# useradd -g tianzun yue
[root@MR home]# id yue
uid=1003(yue) gid=1002(tianzun) 组=1002(tianzun)

-G 指定附加组,组与组之间用逗号隔开,记住附加组必须存在

1
2
3
4
5
6
7
8
9
[root@MR home]# tail -n5 /etc/group
taoist:x:1001:wangqing
tianzun:x:1002:wangqing
wangqing:x:1003:
123:x:1004:
openstack:x:1005:
[root@MR home]# useradd -G tianzun,taoist yue
[root@MR home]# id yue
uid=1003(yue) gid=1006(yue) 组=1006(yue),1001(taoist),1002(tianzun)

-c 添加注释信息

1
2
3
4
5
6
7
[root@MR home]# useradd -c"hahahahahaha" yue
[root@MR home]# tail -n5 /etc/passwd
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
zhou:x:1000:1000::/home/zhou:/bin/bash
wangqing:x:1001:1003:wu liang tian zun:/opt/123:/bin/csh
openstack:x:1002:1005::/home/openstack:/bin/bash
yue:x:1003:1006:hahahahahaha:/home/yue:/bin/bash

-d 指定用户的家目录

1
2
3
4
5
6
7
[root@MR home]# cd /tmp
[root@MR tmp]# ls
123 shadow
[root@MR tmp]# mkdir abc
[root@MR tmp]# useradd -d /tmp/abc yue
useradd:警告:此主目录已经存在。
不从 skel 目录里向其中复制任何文件。

-s 指定shell,但这个shell必须在/etc/shells里面存在

1
2
3
4
5
6
7
[root@MR tmp]# useradd -s /sbin/nologin yue
[root@MR tmp]# tail -n5 /etc/passwd
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
zhou:x:1000:1000::/home/zhou:/bin/bash
wangqing:x:1001:1003:wu liang tian zun:/opt/123:/bin/csh
openstack:x:1002:1005::/home/openstack:/bin/bash
yue:x:1003:1006::/home/yue:/sbin/nologin

-M 创建用户时不给其创建家目录

1
2
3
[root@MR tmp]# useradd -M yue
[root@MR /]# ls /home
openstack wangqing zhou
用户删除命令userdel

-r 删除用户的同时删除其家目录(userdel默认不会删除其家目录)

1
2
3
4
5
6
[root@MR /]# useradd yue
[root@MR /]# ls /home
openstack wangqing yue zhou
[root@MR /]# userdel -r yue
[root@MR /]# ls /home
openstack wangqing zhou
查看用户账号的信息命令id
1
2
[root@MR /]# id zhou
uid=1000(zhou) gid=1000(zhou) 组=1000(zhou),0(root)
修改用户账号属性的命令usermod

-u 修改uid

1
2
3
4
5
[root@MR /]# id yue
uid=1003(yue) gid=1006(yue) 组=1006(yue)
[root@MR /]# usermod -u 8888 yue
[root@MR /]# id yue
uid=8888(yue) gid=1006(yue) 组=1006(yue)

-g 修改gid

1
2
3
4
5
6
[root@MR /]# id yue
uid=8888(yue) gid=1006(yue) 组=1006(yue)
[root@MR /]# groupadd -g 7777 hah
[root@MR /]# usermod -g 7777 yue
[root@MR /]# id yue
uid=8888(yue) gid=7777(hah) 组=7777(hah)

-a -G 不使用-a选项,会覆盖此前的附加组

1
2
3
4
5
[root@MR /]# id yue
uid=8888(yue) gid=7777(hah) 组=7777(hah)
[root@MR /]# usermod -a -G yue yue
[root@MR /]# id yue
uid=8888(yue) gid=7777(hah) 组=7777(hah),1006(yue)

-d -m 改变用户家目录的同时把原来家目录的文件移动到新的家目录中

切记-d在-m后面

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[root@MR /]# ls /home
openstack wangqing yue zhou
[root@MR /]# cd /home/yue
[root@MR yue]# touch 123
[root@MR yue]# ls
123
[root@MR yue]# cd /tmp
[root@MR tmp]# ls
abc shadow
[root@MR tmp]# mkdir qqq
[root@MR tmp]# ls
abc qqq shadow
[root@MR tmp]# usermod -md /tmp/qqq yue
usermod:目录 /tmp/qqq 不存在
[root@MR tmp]# tail -n5 /etc/passwd
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
zhou:x:1000:1000::/home/zhou:/bin/bash
wangqing:x:1001:1003:wu liang tian zun:/opt/123:/bin/csh
openstack:x:1002:1005::/home/openstack:/bin/bash
yue:x:1003:1006::/tmp/qqq:/bin/bash
切换用户命令su
切换用户的方式 特点
su USERNAME 非登录式切换,即不会读取目标用户的配置文件
su - USERNAME 登录式切换,即会读取目标用户的配置文件。完全切换
su - 不指定用户时默认切换至root用户

root su至其他用户不需要密码,非root用户su至其他用户时需要输入目标用户的密码

bash的配置文件:

配置文件类型 配置文件路径
全局配置 /etc/profile /etc/profile.d/*.sh /etc/bashrc
个人配置 ~/.bash_profile ~/.bashrc
配置文件类型 功能
profile类 为交互式登录的shell提供配置,用来设定环境变量、运行命令或脚本
bashrc类 为非交互式登录的shell提供配置,用来设定本地变量、定义命令别名

登录式shell如何读取配置文件

/etc/profile –> /etc/profile.d/*.sh –> ~/.bash_profile –> ~/.bashrc –> /etc/bashrc

非登录式shell如何读取配置文件

~/.bashrc –> /etc/bashrc –> /etc/profile.d/*.sh

密码管理

密码管理命令passwd

–stdin 从标准输入获取用户密码

1
2
3
4
[root@MR qqq]# useradd yue
[root@MR qqq]# echo "123456" | passwd --stdin yue
更改用户 yue 的密码 。
passwd:所有的身份验证令牌已经成功更新。
改变用户密码过期信息命令chage

-E 过期时间

1
2
3
4
5
6
7
8
[root@MR ~]# chage -E 2019-05-31 yue
[root@MR ~]# tail -n5 /etc/shadow
sshd:!!:17961::::::
zhou:!!:17981:0:99999:7:::
wangqing:!!:17981:0:99999:3::17986:
openstack:!!:17981:0:99999:7:::
yue:$6$BRQKiE3H$Ns7arFcpyOipUDWQ9CzJJlxvodMKEDN9iGfSYxo1V0PsW7OF5DU7cFpdCAi8EbyPv7KoVl1.PXnSUatlRU2jN/:17982:0:99999:7::18047:
# 此时间代表从1970年1月1日开始的多少天

-w 警告时间

1
2
3
4
5
6
7
8
# 默认提前7天警告
[root@MR ~]# chage -W 3 yue
[root@MR ~]# tail -n5 /etc/shadow
sshd:!!:17961::::::
zhou:!!:17981:0:99999:7:::
wangqing:!!:17981:0:99999:3::17986:
openstack:!!:17981:0:99999:7:::
yue:$6$BRQKiE3H$Ns7arFcpyOipUDWQ9CzJJlxvodMKEDN9iGfSYxo1V0PsW7OF5DU7cFpdCAi8EbyPv7KoVl1.PXnSUatlRU2jN/:17982:0:99999:3::18047:
密码生成工具openssl

version 查看程序版本号

1
2
[root@MR ~]# openssl version
OpenSSL 1.0.1e-fips 11 Feb 2013

dgst 提取特征码

1
2
3
4
[root@MR ~]# openssl dgst -md5 /home/yue
Read Error in /home/yue
139969262737312:error:0200B015:system library:fread:Is a directory:bss_file.c:24 5:
139969262737312:error:20082002:BIO routines:FILE_READ:system lib:bss_file.c:246:

passwd 生成密码

1
2
3
[root@MR ~]# openssl passwd -1 -salt hello
Password:
$1$hello$bs8EXZ2u6YMHz8lF7E05u0

rand 生成伪随机数

1
2
[root@MR ~]# openssl rand -base64 30
J7oxn34FkHcdxdTvmtsyf3VCUaZf/SU8I5jprwMS

组管理

创建组命令groupadd

-g 指定GID

1
2
3
4
5
6
7
[root@MR ~]# groupadd -g 6666 natasha
[root@MR ~]# tail -n5 /etc/group
123:x:1004:
openstack:x:1005:
hah:x:7777:
yue:x:7778:
natasha:x:6666:
修改组命令groupmod

-g 修改gid

1
2
3
4
5
6
7
[root@MR ~]# groupmod -g 4444 natasha
[root@MR ~]# tail -n5 /etc/group
123:x:1004:
openstack:x:1005:
hah:x:7777:
yue:x:7778:
natasha:x:4444:

-n 修改组名

1
2
3
4
5
6
7
[root@MR ~]# groupmod -n hahahaha natasha
[root@MR ~]# tail -n5 /etc/group
123:x:1004:
openstack:x:1005:
hah:x:7777:
yue:x:7778:
hahahaha:x:4444:
删除组命令groupdel
1
2
3
4
5
6
7
[root@MR ~]# groupdel hahahaha
[root@MR ~]# tail -n5 /etc/group
wangqing:x:1003:
123:x:1004:
openstack:x:1005:
hah:x:7777:
yue:x:7778:

给组设定密码命令gpasswd

1
2
3
4
[root@MR ~]# gpasswd hahahaha
正在修改 hahahaha 组的密码
新密码:
请重新输入新密码:

练习

1.创建用户wangqing,附加组为taoist和tianzun,默认shell为/bin/csh,注释信息为“wu liang tian zun”

groupadd taoist

groupadd tianzun

useradd -G taoist,tianzun -c”wu liang tian zun” -s /bin/csh wangqing

打赏
  • © 2019-2020 Li Jie
  • Powered by Hexo Theme Ayer
    • PV:
    • UV:

喜欢就打赏吧~

支付宝
微信