分析Linux的组和用户

1.前言

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

2.一些观点

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

USER-->PROCESS-->KENEL

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

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

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

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

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

管理员即root用户。

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

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

一般用户可以登录系统。

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

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

[[email protected] ~]# ls -l /etc/passwd
-rw-r--r-- 1 root root 2426 May 16 10:34 /etc/passwd
[[email protected] ~]#

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

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

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文件内容。

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

组信息,组密码信息。

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

看下面的例子:

[[email protected] ~]# su - zhangfengzhe8
[[email protected] ~]$ touch abc.txt
[[email protected] ~]$ ls -l abc.txt
-rw-rw-r-- 1 zhangfengzhe8 zhangfengzhe8 0 May 16 11:44 abc.txt
[[email protected] ~]$ newgrp mygroup
Password:
[[email protected] ~]$ touch abc2.txt
[[email protected] ~]$ ls -l abc2.txt
-rw-r--r-- 1 zhangfengzhe8 mygroup 0 May 16 11:45 abc2.txt
[[email protected] ~]$

实际上,我们可以临时切换用户的基本组到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

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

分析Linux的组和用户

时间: 2024-10-09 19:54:09

分析Linux的组和用户的相关文章

Linux中组 与 用户的管理

在linux中建立组的指令是 groupadd 组名 相应的,删除组的指令: groupdel 组名 查看自己用户的组: groups 用户管理: useradd -s/bin/bash -g 组名 用户名 -s表示用户登陆后打开的终端, 这里是/bin/bash,如果想禁止登陆,可设置为/sbin/nologin -M 不建立用户的主文件夹,用户登陆会跑到 / 去.可手工建立,如果是禁止登陆,建议加这个参数 既然有useradd指令,当然有对应的userdel... users是用来查看当前有

linux查询组与用户getent

getent group zabbix getent passwd zabbix getent group zabbix > /dev/null || groupadd -r zabbixgetent passwd zabbix > /dev/null ||  useradd -r -g zabbix  -s /sbin/nologin  -c "Zabbix Monitoring System" zabbix getent命令可以用来察看系统的数据库中的相关记录,例如:

Linux创建修改删除用户和组

Linux 创建修改删除用户和组 介绍 在日常的维护过程中创建用户操作用的相对会多一些,但是在这个过程中涉及到的知识点就不单单就是useradd了,接下来就来详细了解账号管理的相关信息. 用户信息 先从用户信息开始分析,可以通过查询/etc/password文件,每一行代表一个用户信息 root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin m

在Linux中怎么把用户添加到组中

(1)添加用户test,初始密码123456,该用户的主目录为/home/share,用户的基本组为root,用户的shell为/bin/tcsh,要求将该用户加到mail和new组中.请问该怎么做啊???useradd -m -d /home/share -g root -s /bin/tcsh test 建立test用户 passwd test 系统会提示你为test输入密码 你输入123456 回车即可 usermod -G mail test 加入mail组 usermod -G new

Linux内核分析+子安全系统selinux+Linux的用户组和用户

一.Linux内核分析/etc/grub.conf文件 1.passwd命令 Linux以安全性和稳定性在世界上自居,在Linux发明之初就在安全领域做了很多手段,其中最简单就是提供了密码的登录和密码修改的功能,在Linux系统当中无论什么用户都必须具有密码才能登录Linux操作系统. 命令格式: passwd [用户名] 命令作用:更新或者设置用户登录的密码 2.黑客攻防:Linux单用户模式破解root密码 原因在大部分的人安装Linux的时候,很多人没有设置装载引导的密码,所以就导致黑客可

linux基本练习:用户和组管理的相关练习

linux用户和组管理命令的相关练习: 1.创建一个用户mandriva,其ID号为2002,基本组为distro(组ID为3003), 附件组为linux: #groupadd -g 3003 distro #groupadd linux #useradd -u 2002 -g 3003 -G linux mandriva 2.创建一个用户fedora,其全名为Fedora Community,默认shell为tcsh; #useradd -c "Fedora Community"

Linux学习笔记:用户和组的管理

用户和组的管理 Linux系统是一个多用户操作系统.任何一个受使用系统资源的用户.都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统.用户账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问,另一方面也可以帮助用户组织文件.并为用户提供安全性保护:实现用户账号管理主要有用户账号添加.删除与修改.以及用户口令的管理和用户组的管理等工作. 下面我们列出Linux系统里用户和组的定义以及进行用户和组的管理操作时所用到的一些命令: Cisco开发的AAA认证体系

Linux   用户,组和用户权限的使用

echo -e "Hello,I am 'whoami',the system version is here,please helcheck ist  thanks! \n'lsb_release'"| mail -s 'help'root cmd1 |cmd 2 cma1 2>&1 | cmd2 cmd1 | & cmd2 tr 转换和删除字符 tr'a-z' 'A-Z' abc ABC echo abc |tr 'a-z' 'A-Z' | tr 'A-Z'

linux组、用户操作相关

Linux删除用户组和用户时常用的一些命令和参数.1.从组中删除用户编辑/etc/group 找到GROUP1那一行,删除 A或者用命令gpasswd -d A GROUP2.建用户:adduser phpq //新建phpq用户passwd phpq //给phpq用户设置密码 3.建工作组groupadd test //新建test工作组 4.新建用户同时增加工作组useradd -g test phpq //新建phpq用户并增加到test工作组 注::-g 所属组 -d 家目录 -s 所