博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
分析Linux的组和用户
阅读量:7251 次
发布时间:2019-06-29

本文共 3010 字,大约阅读时间需要 10 分钟。

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,如需转载请自行联系原作者

你可能感兴趣的文章
SSH-Struts第二弹:一个Form提交两个Action
查看>>
词法分析
查看>>
Linux命令(二)
查看>>
Web登录验证之 Shiro
查看>>
LeeCode-Sort Colors
查看>>
Snort2.9.2.3 Installation on CentOS 6.2
查看>>
我的友情链接
查看>>
给软件工程师的自学建议
查看>>
Linux下SVN的备份方式
查看>>
hadoop 3.0.0 alpha1 分布式搭建
查看>>
刘宇凡:从吃饭中的道理领悟SEO
查看>>
1.1办公软件概述
查看>>
python中http的一些编码转换
查看>>
5.继续看W3C的 bootstrap
查看>>
PHP中include和require
查看>>
第一次标题
查看>>
H3C ospf router id 重复真的不能建立邻居吗?
查看>>
【symfoware OPEN】数据库基本操作
查看>>
iphone:截屏
查看>>
Mac 下 VirtualBox ubuntu 共享空间
查看>>