跟着老万学linux运维(3)——账户安全

简介: 跟着老万学linux运维(3)——账户安全

Linux是典型的多用户多任务操作系统,因此对于linux来说,同一台计算机资源可以提供给多个人使用是件很普通的事情,但是问题来了,多个人同时使用一台计算机,会不会相互影响和干扰,如果其中有人不小心,做了破坏性的动作,其他人是不是也要玩完?还有如果每个人都有一些隐私的文档保存在这台计算机上,那这些文档会不会被其他人浏览或获取?作为一个安全的操作系统,Linux是如何解决这些问题的呢?作为root用户,具有超级权限,那到底有哪些权限呢?


如何理解用户权限呢


你可以将一台计算机想象为一家酒店,那么这家酒店的root用户是谁呢?毫无疑问,当然是酒店的老板,老板手下的员工可以认为是管理员,而入住者可以认为是普通用户,当你在前台付费登记,定好了自己的房间后,前台会给你指定房间的钥匙或房卡,而这两样就相当于你的账户密码,有了钥匙和房卡,你就可以打开房门,使用该房间提供的所有物品或者服务,当然你使用的东西只能局限于该房间内,你的房卡和钥匙当然不能打开其他房间的房门,除非你是老板。


这是个形象的比喻,也是个缩影,我们周围所有存在的资源都是有限的,没有人能够无限制的使用,因此我们生活和工作的世界里,都存在着大大小小的规则来限制你行动范围和自由,你对资源的使用也需要付出一定的代价来获取。计算机资源也是一样的,对于多人共享的情况下,账户的管理和设计也要符合这种最基本的规则。


权限,从字面意思来理解,权,就是你的权利,规定你能做什么,限,就是限制,规定了你不能做什么,在一定范围内行使你的权利。Linux账户可以根据权限大小的不同,分为超级用户(root),管理员,普通用户。不同用户根据对系统资源的需求,会有不同的权限。那这些权限是谁赋予的呢?这要看超级用户(root)掌握在谁手里,那他就是这些账户的分配者,包括管理员,都需要root用户来分配,在这里管理员账户和普通账户其实没有特别不同,只是一般管理员帐户的权限可能会更多。


Linux的账户权限有很多种,最基本的就是对文件系统的访问权限,即文件或文件夹权限。sudo权限,可以赋予特定账户能够执行root账户的一些命令。ssh权限,控制用户是否可以通过ssh远程登录。


账户及组的概念


linux系统对账号与组的管理是通过ID号来实现的,我们在登录系统时,输入用户名与对应的密码,操作系统会将用户名转化为ID号后再判断该账号是否存在,并对比密码是否匹配。

Linux中,用户ID号被称为UID,组ID被称为GID。其中UID为0,代表超级管理员,也就是root,1~499之间的ID号系统会预留下来。


关于账户管理,有两个概念必须理解,用户(User)和用户组(Group)。


用户(User):一台计算机允许程序或人登录并在一定权限范围之内运行任务的账户配置信息。


用户组(Group):Linux允许把一类用户(多个)划分到一个组里,这一组的用户拥有相同的操作权限,当然一个用户也可以只对应一个组,同时也支持将一个账户添加到多个组里。


创建账号及组


1.useradd

描述:创建新账号

选项:

-c 设置账号描述信息,一般为账号全名,不常用

-d 设置账号家目录,默认为/home/用户名 ,不常用

-e 设置账号的失效时间,格式为YYYY-MM-DD

-g 设置账号的基本组,默认会创建同名的组

-G 设置账号的附加组,多个附加组中间用逗号隔开

-M 不创建账号家目录,一般与-s结合使用

-s 设置账户的登录shell,默认位bash

-u 指定账户UID

-p 创建账号时指定密码

useradd   laowan     #创建普通账户laowan以及对应的组
 useradd -s  /sbin/nologin -M  esuser   #创建无法登录系统且没有家目录的用户esuser
 #创建普通账户,名称为admin,全名为administrator,账户家目录为/home/admin,账户失效日期为2020-12-12,账户基本组为root,附加组为bin,adm,admin
 useradd -c administrator -d /home/admin -e 2020-12-12 -g root -G bin,adm,admin


2.groupadd

描述:创建用户组

选项:

-g 设置组ID号

groupadd   laowan   #创建laowan组

3.id

描述:显示账户及组信息

id  root    #查看root账户及组信息

修改账号及组信息


passwd:

描述:修改密码

选项:

-l 锁定账号,仅root可使用此选项

–stdin 从文件或管道读取密码

-u 解锁账户

-d 快速清空账户密码

passwd   laowan           #指定修改laowan账户的密码


2.usermod

描述:修改账号信息

用法:usermod [选项] 账号名称

选项:

-d 修改账户家目录

-e 修改账户失效日期

-g 修改账户所属基本组

-G 修改账户所属附加组

-s 修改账户登录Shell

-u 修改账户UID

usermod   -d    /home/tomcat     tom   #修改tom的家目


删除账户及组


1.userdel

描述:删除账号信息

用法:userdel [选项] 账号名称

选项:

-r 删除账户及相关文件

userdel   tom   #删除账户tom,但该账户的文件不删除
userdel  -r  tom   #删除账户tom,并删除相应的家目录


2.groupdel

描述:删除组账户

groupdel   tom   #删除组tom


账户与组文件解析


系统账户信息及密码信息保存在哪里?

如果你想通过某种方式知道系统中所有的用户及group信息时,最简单的方式就是查看用户管理相关的数据文件,一般这些文件对所有用户都是可读的,这些文件包括/etc/passwd, /etc/shadow, /etc/group等。


1.账号信息文件

账户信息被保存在/etc/passwd文件中,通过命令cat /etc/passwd查看文件内容如下:


[root@localhost ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
rabbitmq:x:998:996:RabbitMQ messaging server:/var/lib/rabbitmq:/sbin/nologin
esuser:x:1000:1000::/home/esuser:/bin/bash
ntp:x:38:38::/etc/ntp:/sbin/nologin
wanli:x:1001:1001::/home/wanli:/bin/bash



说明:

文件以冒号为分隔符,第一列为账户名称,第二列为密码占位符(x表示该账户需要密码才能登录,为空时,账户无须密码即可登录),第三列为账户UID,第四列为GID,第五列为账户附加基本信息,一般存储账户名全称,联系方式等信息,第六列为账户家目录位置,第七列为账户登录Shell,/bin/bash为可登录系统Shell,/sbin/nologin表示账户无法登录系统。


2.账户密码文件

账户密码信息被保存在/etc/shadow文件中,通过命令cat /etc/shadow查看文件内容如下:

[root@localhost ~]# cat /etc/shadow
root:$6$Ch6FDqZoQLlsM.M4$XfMMYsIJROVn2Qhw/LzunBMg4b8CvHzeczYcoLLfJdcDKCOMugqGggN0O1cDgKUGv8iwbJVs4FqH6FXrADDvV.::0:99999:7:::
bin:*:17632:0:99999:7:::
daemon:*:17632:0:99999:7:::
adm:*:17632:0:99999:7:::
lp:*:17632:0:99999:7:::
sync:*:17632:0:99999:7:::
shutdown:*:17632:0:99999:7:::
halt:*:17632:0:99999:7:::
mail:*:17632:0:99999:7:::
operator:*:17632:0:99999:7:::
games:*:17632:0:99999:7:::
ftp:*:17632:0:99999:7:::
nobody:*:17632:0:99999:7:::
systemd-network:!!:17785::::::
dbus:!!:17785::::::
polkitd:!!:17785::::::
sshd:!!:17785::::::
postfix:!!:17785::::::
rabbitmq:!!:17903::::::
esuser:$6$.zrK2MoI$xh5CTt4T.d9OUmkTmXjwQV.wZj9VxjL0w5ciZb9NtIJ5VxHtRc1CQQk5lyyIGy6YN3oHjPf2ASaN4iZJJ2Tcv.:17903:0:99999:7:::
ntp:!!:17917::::::
wanli:$6$Ojs2fPjR$QPqaemI4uhOjW.lFIS4iSdyJQELisHKQ7nQ/IdeXHdzDThRTLWYZvVNwRkssLR64SUqrEoXklg.m.JrcwTHbe1:17939:0:99999:7:::



说明:

文件以冒号为分隔符,第一列为账户名称,第二列为密码(账户未设置密码时为!!,设置密码后加密显示,CentOS7默认采用SHA-512算法),第三列为上次修改密码的时间距离1970年01月01日多少天,第四列为密码最短有效天数,0表示无限制;第五列为密码最长有效天数(默认位99999天,可以理解为永不过期),第六列为密码过期后的宽限天数(密码过期后,预留几天给账号修改密码,此时已无法使用旧密码登录),第八列为账户失效日期(从1970年01月01日起多少天后账户失效),第九列暂时保留未使用。


3.组账户信息文件

组账户信息被保存在/etc/group文件中,通过命令cat /etc/group查看文件内容如下:

[root@localhost ~]# cat /etc/group
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
adm:x:4:
tty:x:5:
disk:x:6:



说明:

文件以冒号为分隔符,第一列为组账户名称,第二列为密码占位符,第三列为GID,第四列为组成员信息(注意,这里仅显示附加成员,基本成员不显示)


4.组账户密码文件

组账户密码信息被保存在/etc/gshadow文件中,通过命令cat /etc/gshadow查看内容如下:

[root@localhost ~]# cat /etc/group
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
adm:x:4:
tty:x:5:


说明:

文件以冒号为分隔符,第一列为组账户名称,第二列为组密码,第三列为组管理员,第四列为组成员信息


相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
目录
相关文章
|
2月前
|
安全 Linux 数据安全/隐私保护
Vanilla OS:下一代安全 Linux 发行版
【10月更文挑战第30天】
68 0
Vanilla OS:下一代安全 Linux 发行版
|
18天前
|
存储 缓存 监控
Linux缓存管理:如何安全地清理系统缓存
在Linux系统中,内存管理至关重要。本文详细介绍了如何安全地清理系统缓存,特别是通过使用`/proc/sys/vm/drop_caches`接口。内容包括清理缓存的原因、步骤、注意事项和最佳实践,帮助你在必要时优化系统性能。
151 78
|
3月前
|
运维 监控 安全
安全运维:入侵检测与防御实战指南
安全运维:入侵检测与防御实战指南 【10月更文挑战第9天】
149 3
|
12天前
|
Prometheus 运维 监控
Prometheus+Grafana+NodeExporter:构建出色的Linux监控解决方案,让你的运维更轻松
本文介绍如何使用 Prometheus + Grafana + Node Exporter 搭建 Linux 主机监控系统。Prometheus 负责收集和存储指标数据,Grafana 用于可视化展示,Node Exporter 则采集主机的性能数据。通过 Docker 容器化部署,简化安装配置过程。完成安装后,配置 Prometheus 抓取节点数据,并在 Grafana 中添加数据源及导入仪表盘模板,实现对 Linux 主机的全面监控。整个过程简单易行,帮助运维人员轻松掌握系统状态。
97 3
|
11天前
|
人工智能 运维 自然语言处理
今晚围观—>安全运维工程师现场直播用通义灵码发现和修复代码漏洞
12 月 18 日晚 19:30 分,阿里云中小企业直播间「AI 编码助手一年养成记:从“打酱油”到企业开发“真正助手”」见。
|
2月前
|
运维 监控 网络协议
运维工程师日常工作中最常用的20个Linux命令,涵盖文件操作、目录管理、权限设置、系统监控等方面
本文介绍了运维工程师日常工作中最常用的20个Linux命令,涵盖文件操作、目录管理、权限设置、系统监控等方面,旨在帮助读者提高工作效率。从基本的文件查看与编辑,到高级的网络配置与安全管理,这些命令是运维工作中的必备工具。
162 3
|
3月前
|
运维 监控 网络协议
|
2月前
|
运维 监控 安全
盘点Linux服务器运维管理面板
随着云计算和大数据技术的迅猛发展,Linux服务器在运维管理中扮演着越来越重要的角色。传统的Linux服务器管理方式已经无法满足现代企业的需求,因此,高效、安全、易用的运维管理面板应运而生。
|
2月前
|
缓存 运维 监控
【运维必备知识】Linux系统平均负载与top、uptime命令详解
系统平均负载是衡量Linux服务器性能的关键指标之一。通过使用 `top`和 `uptime`命令,可以实时监控系统的负载情况,帮助运维人员及时发现并解决潜在问题。理解这些工具的输出和意义是确保系统稳定运行的基础。希望本文对Linux系统平均负载及相关命令的详细解析能帮助您更好地进行系统运维和性能优化。
68 3
|
3月前
|
存储 运维 搜索推荐