分析Linux的组和用户

简介:

1.前言

这一周,学习了LINUX的用户和组管理,接触到了很多新的东西,脑袋里面的知识有点乱,准备写一篇博客,理一理思路。


2.一些观点

第一,无论是WINDOWS的GUI,还是LINUX的COMMAND LINE,用户的请求最终将这样实现:

USER-->PROCESS-->KENEL

也就是说,进程将代理用户的请求,和操作系统打交道。每一个进程应该带有一个用户标示。


第二,我们知道,一旦启动操作系统,即便我们不登陆,很显然有些进程(或者说服务)也会在后台运行的。那么这些进程的用户标示是什么呢?

如果是root,那这些进程将拥有一切权利,一旦被恶意代码劫持,系统将出现安全问题。

既然不能是root用户,那么应该是什么用户呢?


第三,LINUX的用户,可以分为管理员和普通用户。

管理员即root用户。

普通用户又可以分为系统用户和一般用户。

系统用户一般不用登陆系统,也就是说第二点中的那些后台进程应该以系统用户的身份进行启动。

一般用户可以登录系统。


3.用户是如何进行登录密码校验的?

第一,/etc/passwd,顾名思义,好像用户的密码存放在这里。

1
2
3
[root@localhost ~] # ls -l /etc/passwd
-rw-r--r-- 1 root root 2426 May 16 10:34  /etc/passwd
[root@localhost ~] #

第二,观察/etc/passwd的权限,发现不论什么用户都可以read。如果密码真的放在这里,安全吗?


第三,查看/etc/passwd的内容

1
2
3
4
zhangfengzhe:x:500:500:redhat: /home/zhangfengzhe : /bin/bash
test :x:502:502:: /home/test : /bin/bash
p1:x:503:503:: /home/p1 : /bin/bash
p2:x:504:503:: /home/p2 : /bin/bash

具体的各个字段的意思,用man指定章节的查看即可。

第二位是密码,大部分都是一个X,这其实表示的是一个密码占位符。

也就是说,/etc/passwd看不到密码。

那么密码在哪里呢?


第四,LINUX里面有一个影子口令的概念,去/etc/shadow看一下。


第五,redhat的密码加密方式是MD5。(message digest,信息摘要,5 stands for version)


第六,md5这种加密方式,即单向的加密,而且有一个特征,初始条件的微小改变,将导致结果的巨大变化。正因为这个蝴蝶效应(或者说雪崩效应),使得逆向破解SO HARD~


第七,看一看,/etc/shadow文件内容。

1
2
3
4
zhangfengzhe:$1$1LQD2zT0$7JhMdPOHiNlMHpVc /9tJd/ :16205:0:99999:7:::
test :!!:15396:0:99999:7:::
p1:$1$oti0SlMg$O6Dha9wv6zKl8Wlneb0uB0:15397:0:99999:7:::
p2:$1$JFfa13Xt$Y27d9W5LAQWn6d /WPXTVE0 :15397:0:99999:7:::



第八,思考下,如果user1用户看了这个shadow文件,发现USER2用户的密码串和他一样,是否认为他们的密码一致?

记住,农夫山泉有点甜,LINUX给密码加点盐。

事实上,LINUX在给密码进行加密的时候,会先生成一个杂质(术语叫salt,盐的意思),然后再进行salt+your passwd进行MD5加密。

这个杂质是随机的。


第九,when the user login LINUX,the kernel will get your password and salt,then have the md5sum to compare it in /etc/shadow.

if they are equal,you can login success.

上面就是用户登录进行密码校验的过程。


4.一些文件

和用户,组相关的文件主要有:/etc/passwd,/etc/shadow,/etc/group,/etc/gpasswd。


/etc/passwd:

主要关注用户相关信息。

usename,user id,groupid,home,shell

注意groupid是用户的基本组ID(默认组)。

shell里面特别注意/sbin/nologin,表示用户将无法登录(一般都是系统用户)

USERID事实上也有分类,0代表root,1-499表示系统用户,500到6W表示一般用户。


/etc/shadow:

主要关注密码相关信息。

如果密码位,是!!或者*,那么此用户被锁定,无法登录。如果密码为空,根据LINUX的登录规则:禁止空密码登录,也将无法登录系统。

【根据上面的理论,也就是说,我们可以手动让一个用户无法登录系统。实际上命令终将反映到文件的变化上来】

密码的一些时间,比如修改,最短使用期限,最长使用期限,警告,过期宽限,失效时间。


/etc/group和/etc/gpasswd

组信息,组密码信息。

疑问?组不是用户,不会进行登录,那为什么需要密码呢?

看下面的例子:

1
2
3
4
5
6
7
8
9
10
[root@localhost ~] # su - zhangfengzhe8
[zhangfengzhe8@localhost ~]$  touch  abc.txt
[zhangfengzhe8@localhost ~]$  ls  -l abc.txt
-rw-rw-r-- 1 zhangfengzhe8 zhangfengzhe8 0 May 16 11:44 abc.txt
[zhangfengzhe8@localhost ~]$ newgrp mygroup
Password:
[zhangfengzhe8@localhost ~]$  touch  abc2.txt
[zhangfengzhe8@localhost ~]$  ls  -l abc2.txt
-rw-r--r-- 1 zhangfengzhe8 mygroup 0 May 16 11:45 abc2.txt
[zhangfengzhe8@localhost ~]$

实际上,我们可以临时切换用户的基本组到G1,那么如果这个用户不属于G1组,附加组也不在G1里面,那么需要密码。


5.一些命令

useradd

useradd equals adduser。

常用-u,-g,-G,-d,-s

userdel 注意-r,是否删除home
usermod

和useradd选项差不多,需要注意的是,重新修改用户的附加组,是追加,还是覆盖?用-r选项。


id

finger

id username

finger username

查看用户信息
..... 看我以后的博客吧...

本文转自zfz_linux_boy 51CTO博客,原文链接:http://blog.51cto.com/zhangfengzhe/1412810,如需转载请自行联系原作者



相关文章
|
6月前
|
安全 Linux iOS开发
Binary Ninja 5.1.8104 (macOS, Linux, Windows) - 反编译器、反汇编器、调试器和二进制分析平台
Binary Ninja 5.1.8104 (macOS, Linux, Windows) - 反编译器、反汇编器、调试器和二进制分析平台
622 53
Binary Ninja 5.1.8104 (macOS, Linux, Windows) - 反编译器、反汇编器、调试器和二进制分析平台
|
6月前
|
Linux API iOS开发
Binary Ninja 4.2.6455 (macOS, Linux, Windows) - 反编译器、反汇编器、调试器和二进制分析平台
Binary Ninja 4.2.6455 (macOS, Linux, Windows) - 反编译器、反汇编器、调试器和二进制分析平台
476 14
Binary Ninja 4.2.6455 (macOS, Linux, Windows) - 反编译器、反汇编器、调试器和二进制分析平台
|
7月前
|
数据管理 Linux iOS开发
Splunk Enterprise 9.4.5 (macOS, Linux, Windows) - 机器数据管理和分析
Splunk Enterprise 9.4.5 (macOS, Linux, Windows) - 机器数据管理和分析
223 0
|
Unix Linux iOS开发
Splunk Enterprise 10.0.0 (macOS, Linux, Windows) - 搜索、分析和可视化,数据全面洞察平台
Splunk Enterprise 10.0.0 (macOS, Linux, Windows) - 搜索、分析和可视化,数据全面洞察平台
237 0
|
监控 Linux
Linux基础:文件和目录类命令分析。
总的来说,这些基础命令,像是Linux中藏匿的小矮人,每一次我们使用他们,他们就把我们的指令准确的传递给Linux,让我们的指令变为现实。所以,现在就开始你的Linux之旅,挥动你的命令之剑,探索这个充满神秘而又奇妙的世界吧!
226 19
|
缓存 网络协议 Linux
PCIe 以太网芯片 RTL8125B 的 spec 和 Linux driver 分析备忘
本文详细介绍了 Realtek RTL8125B PCIe 以太网芯片的规格以及在 Linux 中的驱动安装和配置方法。通过深入分析驱动源码,可以更好地理解其工作原理和优化方法。在实际应用中,合理配置和优化驱动程序可以显著提升网络性能和稳定性。希望本文能帮助您更好地使用和管理 RTL8125B,以满足各种网络应用需求。
1710 33
|
数据管理 Linux iOS开发
Splunk Enterprise 9.4.1 (macOS, Linux, Windows) 发布 - 机器数据管理和分析
Splunk Enterprise 9.4.1 (macOS, Linux, Windows) 发布 - 机器数据管理和分析
338 0
Splunk Enterprise 9.4.1 (macOS, Linux, Windows) 发布 - 机器数据管理和分析
|
存储 运维 监控
Linux--深入理与解linux文件系统与日志文件分析
深入理解 Linux 文件系统和日志文件分析,对于系统管理员和运维工程师来说至关重要。文件系统管理涉及到文件的组织、存储和检索,而日志文件则记录了系统和应用的运行状态,是排查故障和维护系统的重要依据。通过掌握文件系统和日志文件的管理和分析技能,可以有效提升系统的稳定性和安全性。
398 7
|
监控 安全 Linux
启用Linux防火墙日志记录和分析功能
为iptables启用日志记录对于监控进出流量至关重要
546 1
|
缓存 算法 Linux
Linux内核中的调度策略优化分析####
本文深入探讨了Linux操作系统内核中调度策略的工作原理,分析了不同调度算法(如CFS、实时调度)在多核处理器环境下的性能表现,并提出了针对高并发场景下调度策略的优化建议。通过对比测试数据,展示了调度策略调整对于系统响应时间及吞吐量的影响,为系统管理员和开发者提供了性能调优的参考方向。 ####
下一篇
开通oss服务