Linux 认证授权及用户定义及组的类别 | 学习笔记

简介: 快速学习Linux 认证授权及用户定义及组的类别

开发者学堂课程【Linux企业运维实战 - 入门及常用命令Linux 认证授权及用户定义及组的类别】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/550/detail/7608


Linux 认证授权及用户定义及组的类别


内容介绍:

一、本章内容介绍

二、介绍安全 3A

三、用户 user

四、组 group

五、安全上下文

六、组的类别

七、用户和组的配置文件


注意:

管道左侧的命令一定是标准输出,有些命令是没有标准输出的,不是所有命令都有标准输出的。但是没有标准输出的命令放在管道左侧是没有意义的。

管道右边的命令一定需要有标准输入功能,虽然学了很多命令,但是标准输入的的命令不是特别多,比如 cat、tr、mail、bc等需要标准输入。

Echo $user | echo 这个命令是没有意义的,写法逻辑上就是混乱的。Echo 命令执行是不需要标准输入的,这个写法就是不对的。要记得管道右边的命令一定是要包含有标准输入功能的,不然就是没有意义。

使用 openssl rand –base64 命令可以生成随机字符,随机字符可以指定多少位,而且是随机的。

例如 openssl rand –base64 12 可以生成12位的随机字符,含有大写字母、小写字母和数字,有时候会带一些别的符号。

以现在要处理一下,把除了字母和数字的其他字符删掉,把大写字母转换为小写字母,变成小写字母和数字组成的随机字符串,将来作为文件名。所以使用命令 openssl rand bass64 10 丨tr –dc ‘[:alnum:]’就光留下了子母和数字。

因为 c 是补集,就把其他的字符都给删掉了。

再使用 openssl rand –bass64 10 丨tr –dc ‘[:alnum:]’ 丨tr ‘[:upper:]’ ‘[:lower:]’ 将大写字母转换为小写,再加上 touch 就可以作为文件名。补上 .log 就可以加后缀。

“用户、组和权限”,在工作中是很基础的一章。

我们在 linux 当中每个人使用不用的系统账号,只有每个人使用不同的账号那么将来在系统中才会分配不同的权限。

在 linux 当中假如有三个人 a、b、c,那么需要区分三个人,就必须针对这三个人对应创建不同的用户。

如果共用一个账号,那么系统就分不清三个人到底谁是谁,所以在linux里面区分不同的人就要使用不同的账号。

张三用张三的账号,李四用李四的账号,只有不同的人运用不同的账号才能判断不同的身份,进而分配不同的权限。

 

一、本章内容介绍

◆解释Linux的安全模型

◆解释用户帐号和组群帐号的目的

◆用户和组管理命令

◆理解并设置文件权限

◆默认权限

◆特殊权限

◆ACL

主要介绍的就是第一,用户账号的管理,第二,组的管理,第三有了用户和组的管理命令之后,该设置他的默认权限和特殊权限,以及功能非常强大的ACL权限,这些是这一章的重点。

 

二、介绍安全 3A

针对 linux 里面不同的用户创建不同的用户账号用以区分。生活中的资源为了安全都会有3A认证,3A并不是 linux 特有的,在工作中或者是一些网络设备中也有3A机制,3A代表着以下三个单词。

◆资源分派 :

Authentication :认证

Authorization :授权

Accouting|Audition :审计

首先讲解的是在我们平时生活中接触非常多的资源,这些资源有可能是文件,也可能是工作中的网络资源或是其他的一些资源。

生活中的资源为了安全都会有3A认证,网络设备也有3A机制。认证时验明身份,知道身份才可以授予不同的权限,再 windows 中即为判断不同的密码,在手机上可能就是指纹或者人脸识别一类的。

认证的目的只是判断身份,最终的功能需要授权,不同的人授予不同的权限,授权完成之后可以不同的操作了,但是为了安全考虑需要监控,也就是审计。

 

三、用户 user

◆令牌 token,identity

◆Linux用户: Username/UID

◆管理员: root,0

◆普通用户: 1-65535

系统用户: 1-499, 1-999 ( CentOS7 )

对守护进程获取资源进行权限分配

登录用户: 500+, 1000+ ( CentOS7 )

交互式登录


在linux里面要判断用户的不同身份实际上是基于令牌机制的。令牌的因为单词为 token。

在linux里面,只要你登录就会给你一个令牌,将来你访问以下软件就要出示这个令牌去判断你的身份。

系统登录成功 login 以后,系统会返回一个令牌 token,登录靠用户名 username 和成对的密码 password 判明合法身份。

当然在 linux 里面应该有存放密码的数据库,因为系统中不仅有一个用户,有很多用户,每个用户登录时都需要在数据库里进行验证。当用户登录成功,系统会给他一个令牌,将来去访问资源时,就会出示令牌,把令牌提交给资源 file,资源根据令牌来决定你是否有权限访问。

当然还会有这样一个问题,令牌是登录的时候获取到的,如果说这个用户登录是 token1,但是这个资源授权是对 token2授权的,那么在系统中就算补上 token2,但是用户已经登录了,除非你重新登录去获取 token2,不然 token2 是获取不到的。

所以我们知道了想要获取最新的令牌必须要重新登录。

image.png

 linux 里面,系统判定你的身份是根据 UID 来区分的,用户账号的范围可以达到六万多甚至更多,非零为普通用户,为零为管理员。系统用户是给系统用的,即软件等,账号1-499为 Cent0S6,1-999为 CentOS7。登录用户是供人所使用的。

比如 nginx 服务,nginx  是给系统用的,要创建账号才是给人用的。

在 windows 里面,查看用户用 user 查看:

image.png

知道了当前的两个用户账号,一个是 administrator,一个是 guest,但是我也可以创建用户,比如说创建 test 这样一个用户,密码 123。这样就创建了一个账号,再查看就会有三个账号了。

image.png

当然在 windows 里也可以创建组,组为 local,查看到系统中带的组列表。

image.png

组和用户之间的关系就是,组是用户的集合。我们可以把用户添加到组里面去,在不太复杂的情况下不添加进组也是可以的,比如单个的人我们可以单个的授权。但是如果有好几个人想要授予同样的权限,把用户添加进组的好处就是不需要一个一个的授权很多次,创建一个组就一个对组授权,把这个组的成员都授予上权限,简化授权的操作。如果人数不多,也可以不添加进组。

 

三、组 group

◆Linux组: Groupname/GID

◆管理员组: root, 0

◆普通组:

系统组: 1-499, 1-999 ( CENTOS7 )

普通组: 500+, 1000+ ( CENTOS7 )

 

在 Windows 里,组为 localgroup,组是用户的集合,可以把用户账号加到组里面成为成员。

好处是方便管理,可以简化授权的操作,减少授权次数,不用一个一个授权,可以统一授权。组在 linux 里面也有组 ID,而且和 Windows 里有区别,在 linux 里面用户名和组名允许同名,但是在 windows 里面用户名和组名是不允许同名的。

Windows 和 linux 有一些概念是想通的,但是还是会有些细微的差别。

默认情况下每建一个账号会同步建一个组,称为私有组,比如我们建立了 wang 账号,那么系统就会自动创建一个组为 wang,wang 账号会自动添加进私有组 wang 里面。

建一百个账号就会建立一百个组。在 Windows 里不会自动创建组,而是都储存在 users 里面。


四、安全上下文

◆Linux 安全上下文

运行中的程序:进程(process)

以进程发起者的身份运行:

root: /bin/cat

mage: /bin/cat


进程所能够访问资源的权限取决于进程的运行者的身份

在无论 linux 还是 windows里面。当我们去访问资源时,到底能不能访问资源是由用户决定的还是由访问的程序决定的呢?

假设有一个用户叫 user1,用 cat 命令访问我们磁盘上的一个文件 log,同一个用户通过 nano 去访问同一个文件 log,那么到底可不可以访问文件 log 跟使用命令 cat 还是使用 nano 有没有关联呢?

答案是没有关联,访问权限由用户决定,这个由用户来决定访问资源的方式就叫做上下文。

文件的访问是由用户决定的而不是用程序决定的。比如张三和李四都用 cat 去访问可能得到的权限是不一样的。

 

五、组的类别

◆Linux 组的类别

用户的主要组(primary group)

用户必须属于一个且只有一个主组

组名同用户名,且仅包含一个用户,私有组

用户的附加组(supplementary group)

一个用户可以属于零个或多个辅助组

 

一个组可以包含多个用户,对一个组授权,里面的多个用户都将获得权限,比如 g1 组里有 wang 账号和 mage 账号,一旦对 g1 组授权,那么里面的 wang 账号 和 mage 账号也将获得同样的权限;同样一个用户也可以加到多个组里,wang 账号可以加到 g1组、g2 组和 g3 组三个组里面,但是 g1、g2和 g3 获取的权限是不一样的,那么 wang 账号可能会获取到什么权限呢?

答案是用户将获得多个所加组的累加权限。组和用户之间的关系是多对多的关系,组可以包括多个账号,一个账号也可以加到多个组里面去。

组细分为两种,主要组和附加组,主要组的特点是一个账号必须属于一个组,它不能不属于任何组,比如属于某个组,这个组就是主要组,其他的组就是附加组。就像到了单位以后你必须属于一个岗位,你有一个主要身份,其他身份可有可无,所以附加组也可有可无,主组有且只有一个。

在 linux 里面默认情况下当你创建一个账号时会默认创建一个同名主组,当然这个主组也不一定非要用它的同名组,也可以用本身就有的组作为新建长好的主组。

image.png

主组的用处就是你创建的文件就放入你的主组里面。

 

六、用户和组的配置文件

◆Linux 用户和组的主要配置文件:

/etc/passwd :用户及其属性信息(名称、UID、主组 ID等)

/etc/group :组及其属性信息

/etc/shadow :用户密码及其相关属性

/etc/ gshadow :组密码及其相关属性

 

前面讲到系统判明账号的时候不是根据用户名,是根据你的 uid 判明账号的身份,那么这个 UID包括该账号的对应关系以及这个账号是否要设置口令之类的,这些东西的存放就存放在上述四个相关配置文件里。

其中前两个 passwd 和 group 使用用户以及组的口令信息的。后面两个 shadow 和 gshadow 是放密码和相关属性的。

Etc 跟组相关的文件主要是 passwd 和shadow 文件,passwd 文件是文本文件可以修改,但格式不能随便写。可以用 man 来查看。

 image.png

一个账号有七个信息,分别是 name、password、uid、gid、gecos、directory 和 shell。系统判明的身份不是根据用户名,而是根据 uid,Id 为零就是管理员,非零为普通用户。

主组的 id 为 gid,是必须有的。

Gecos 为描述信息,可以人为的添加,可以用 chfn 添加描述信息,比如名字,办公室,电话等等。

image.png

加完之后就可以看见已添加。

不过这样看不清楚,可以挂光盘使用别的方式查看。专门用来查看用户信息的叫 finger,但是要提前挂上光盘。

Centos 6 有一个功能为自动挂光盘,使用命令 rpm ivh /misc/cd/packages/finger- 安装。装完之后在执行命令 finger wang 就可以查看信息。

image.png

默认账号一登陆就进入家目录,当然也可以人为使用 nano 修改。在默认的家目录里会存在配置文件,但自建的就没有。创建 wang 账号之后,在 home 文件里有一个配置文件。

image.png

而自建的文件里肯定是空的。

而在这些文件里面就定义了一些东西,例如我们说的 bash 变量,包括 psy 就都在里面。

image.png

所以修改家目录不是光修改文件夹,而是把配置文件也要添加进去。

现在有这样一个情况,我就想把 wang 账号 放在 data 目录下,如果说这个账号在我们在我们创建的时候就放在 data 目录下,那么 home 文件下根本就不存在这些配置文件。

所以在我们创建账号的时候,系统会自动的复制它的配置文件到它的家目录中去,就在 /etc/skel 这个目录下。

如果想自建家目录,就要把 /etc/skel 复制过去,使用 cp r /etc/skel .[^.]* /data/wang 命令复制到 data 中去,前提是有权限访问。

相关文章
|
6月前
|
运维 监控 安全
在Linux系统中,认证日志
Linux系统中的认证日志对于安全监控和故障排查至关重要,常见的日志文件包括:`/var/log/auth.log`(Debian、Ubuntu)、`/var/log/secure`(RPM发行版)、`/var/log/lastlog`、`/var/log/faillog`、`/var/log/wtmp`和`/var/run/utmp`。这些文件记录登录尝试、失败、当前用户等信息。日志管理可通过文本编辑器、日志查看工具或`rsyslog`、`syslog-ng`等工具进行。注意日志位置可能因发行版和配置差异而变化,应确保日志文件的安全访问,并定期轮转归档以保护敏感信息和节省空间。
104 3
|
6月前
|
网络协议 Java Linux
Linux学习笔记
Linux学习笔记
107 0
|
2月前
|
Shell Linux
Linux shell编程学习笔记30:打造彩色的选项菜单
Linux shell编程学习笔记30:打造彩色的选项菜单
|
20天前
|
并行计算 Ubuntu Linux
Ubuntu学习笔记(三):Linux下操作指令大全
Ubuntu学习笔记,介绍了Linux操作系统中常用的命令和操作,如文件管理、系统信息查看、软件安装等。
38 3
|
2月前
|
Shell Linux
Linux shell编程学习笔记82:w命令——一览无余
Linux shell编程学习笔记82:w命令——一览无余
|
3月前
|
安全 Linux 网络安全
在Linux中,什么是双因素认证(2FA)?
在Linux中,什么是双因素认证(2FA)?
|
6月前
|
存储 算法 Shell
【Shell 命令集合 设备管理 】Linux 显示当前系统中定义的键盘映射表 dumpkeys命令 使用指南
【Shell 命令集合 设备管理 】Linux 显示当前系统中定义的键盘映射表 dumpkeys命令 使用指南
65 0
|
3月前
|
存储 Cloud Native Linux
CentOS“平替”方案问题之Fedora Linux的定义如何解决
CentOS“平替”方案问题之Fedora Linux的定义如何解决
34 0
|
3月前
|
存储 运维 Shell
运维.Linux.bash学习笔记.数组及其使用
运维.Linux.bash学习笔记.数组及其使用
32 0
|
4月前
|
Shell Linux
RSIC-V“一芯”学习笔记(二)——Linux入门教程
RSIC-V“一芯”学习笔记(二)——Linux入门教程