0220自学Linux_逻辑理解用户进程权限相关+理解文件内各字段(passwd,shadow,group)

11

内核是真正意义上的操作系统

库有动态库也有静态库,Linux的动态库是.so后缀的,也称为共享库

库是不能够独立运行的,只能被调用

Window的动态库是.dll后缀的

我们平时所谓的安装操作系统是装在硬盘上的

我们对于系统而言,最基本的程序就是shell,不然我们无法和系统交互,打开一个命令行窗口,就打开了一个shell进程

硬件之上的是内核,内核之上是进程

如果进程中他需要调用库,那首先启动这个程序,他的进程会把这个调用的库装入内存

而如果是共享库,其他进程调用的话就直接在内存调用这个库,共享库会存在内存之中

 

计算机资源

定义了资源的访问能力,就是权限

权限

用户,容器,关联权限:用户组,方便地指派权限

只要这个用户放在这个容器里面,他就有相关的权限,这个容器也就是用户组的概念。

所以在Linux下定义了三组用户的权限

属主:属组:其他用户

组是个逻辑概念,他只是指派权限,是不能登录的,但是组有密码

进程也是有属组和属主的,谁发起了这个进程,就以怎么样的权限执行,而执行目标刚好有同样的属主和属组,那就可以被运行

我们默认让文件不应该执行权限,但是默认目录要有执行权限,如下所示:

0220自学Linux_逻辑理解用户进程权限相关+理解文件内各字段(passwd,shadow,group)_第1张图片 

[mage@www tmp]$ cd mulu/   (进都进不去,说明这个mulu在允许mage这个用户进入的组里面肯定是没有x执行权限的)

-bash: cd: mulu/: Permission denied

 

安全上下文(security contesxt):

ls -lZ

[root@1qewr ~]# ls -lZ anaconda-ks.cfg 

-rw-------. root root system_u:object_r:admin_home_t:s0 anaconda-ks.cfg

rwx 对应的8进制是 421   所以rwxrw-r-x就是765

后面再给权限的时候用到chmod

用户:UID

组:GID所以每一个用户都是有一个UID的,这个是内部的数据库一一对应

解析:名称解析:www.sohu.com-->ip

我们怎么知道用户名对应的id号,其实就是根据数据库,而Linux登录账号的用户密码的数据库就是我们熟知的/etc/passwd/etc/shadow,/etc/group

所以这里面利用的就是/etc/passwd/的数据来登录的

而组呢就是利用了/etc/group下的数据来进行解析的

便于用户管理,不可能把密码放在passwd,其实他是放在了shadow的,也就是影子文件

影子口令:/etc/shadow

组:/etc/gshadow组也是有密码的,虽然它是不需要登录的

 

用户类别:(从ID号去理解各个不同的用户

管理员:UID0        root

普通用户:1-65535        216次方

系统用户:1-499

一般用户:500-65536   但是在Redhat7.0上是从1000开始

[mage@www tmp]$ id mage

uid=1000(mage) gid=1000(mage) groups=1000(mage),10(wheel)

[mage@www tmp]$ id togogo01

uid=1001(togogo01) gid=1001(togogo) groups=1001(togogo)

系统用户:任何进程都以某个用户执行

如果一个进程以管理员的身份去运行,那如果有人攻击获得了这个进程的执行权限,那就有了这个进程的所有权限

因此很多后台需要运行的,但是不需要和用户关联的进程,他也应该是以一个普通身份的方式运行,所以这一类用户专门用来运行后台进程的用户我们叫做系统用户,当然我们后面用的非常多,比如web服务器,nginx都要用到这一类用户:所以这一类用户是限制其不允许登录的。

只是用于某一类进程,不需要用户交互的,所以不需要登录,从安全上去考虑

 

用户组:

管理员组:

普通组:1.系统组1-499   2.一般组500-65536

用户组类别:

私有组:创建用户时,如果没有为其定所属的组,系统会自动为其创建一个与用户名同名的组

用户的私有组不一定是基本组

基本组:

额外组:默认组以外的其他组

进程也有属组和属主

 

假如一个进程以: tom tom运行(比如我们的ls这个程序,执行ls a.txt,那么因为ls的属组和属主都是root,所以它是以其他用户的权限去执行ls这个进程,固然,这个进程的属组和属主都是tom

访问这个对象: rwxrw-r-- jerry tom a.txt

请问:进程访问a.txt的时候是以哪一个权限来访问

这道题的答案,是以属组的权限来执行的

 

[www@qqq tmp]$ ll -d /bin/ls 

-rwxr-xr-x 1 root root 109208 Nov 10 17:43 /bin/ls

/bin/ls是一个可执行文件。执行ls就是会用这个文件形成一个ls进程

www是以其他用户组的权限来执行这个ls

而当www执行了之后,这个ls进程的属主就是www,而不是root,当形成了进程之后,就和这个文件/bin/ls无关,只和发起者的有关

这里涉及到了安全上下文的知识,要深入理解

 

12

cat /etc/passwd是以:分开的文件

whatis passwd 可以看到passwd有几个章节的man文件,有对应各个章节的介绍

如下的章节5就是收passwd的文件格式的

[mage@www bin]$ whatis passwd

passwd (1)           - update user's authentication tokens

sslpasswd (1ssl)     - compute password hashes

passwd (5)           - password file

所以通过man 来查看各个::之间的属性是什么?这里是通过man 5 passwd

 

添加一个用户,第一是passwd会加一行,然后是在shadow还有group都会加

/etc/passwd   格式如下图所示::作为分隔符

name:登录名

passwd密码

UID GID:基本组ID

 

/etc/passwd/各个冒号分开的字段分别是什么意思呢?如下

0220自学Linux_逻辑理解用户进程权限相关+理解文件内各字段(passwd,shadow,group)_第2张图片 

 

了解shadow的格式,如下

[root@qqq ~]# cat /etc/shadow

root:$6$aWsK0ipzG5TicKXA$dO2MbGyCW09p19zGDhFj.JZJBnmFszIV4Dehg00LOIFyuy15kNcn1IeGjUhRqnGrXHyDkwi3DjgMpGATHbhVe.:16760:0:99999:7:::

bin:*:15980:0:99999:7:::


wKiom1bIer6AJjAOAABzezpXrss891.png 

单向加密:能加密,不能解密。单向加密也叫指纹加密。非可逆的。

主要用于数据的完整性校验,是否被篡改了,是不可逆的,单方向进行的。

单向加密秘钥的特性1、雪崩效应(对文档的微小改变,然后特征码会完全不一样),蝴蝶效应:

如下查看

md5sum计算和核对MD5消息摘要命令

 0220自学Linux_逻辑理解用户进程权限相关+理解文件内各字段(passwd,shadow,group)_第3张图片

2、定常输出:怎么修改,长度都是不会变化的

下面两个是单向加密的(md5sha

MD5Message Digest128位定长输出

SHA1Secure Hash Algorithm160位定长输出

SHA256SHA512

mage:$6$1.8JioNh4V7dk1EZ$dngBEkzsSNQsttLzyQVHDq/jH5zFSqVSwJecIGFAZEb9A0VsOR/3E/3yQJ4mdxjwjVUVYNUqsQemtnPwZbsmf/:16636:0:99999:7:::

6SHA512    红色是杂质,也就是盐,他的作用是万一密码一样,那么有可能加密的秘钥是一样的,所以给密码加点杂质,也就是盐,而且这个是随机生成的东西,所以即使密码一样,加了盐,就会不一样了。

锁定一个用户的密码,直接可以在用户名后面的叹号后加*号,操作如下

[root@qqq ~]# tail -1 /etc/shadow

qqq:$6$lskKMYwA$dLBMCIrvx2Rl8bBfMIf8LyNcxKUw/h.h4CWCAATnJxwQL6e5DUBUcwnktBTEi4MmqtD6hvr5h6urfFqWgcuqE.:16851::::::

改成

qqq:*:$6$lskKMYwA$dLBMCIrvx2Rl8bBfMIf8LyNcxKUw/h.h4CWCAATnJxwQL6e5DUBUcwnktBTEi4MmqtD6hvr5h6urfFqWgcuqE.:16851::::::

这个用户就不能登录了,当然root用户是可以登录他的

 

上面可以看到第一段是用户名称,第二段是加密的密码(其中有盐+单向加密的秘钥),下面是shadow文件的第三段

16851:最后一个密码更改日期,表示自197011日以来的天数。

第四段:密码最短使用期限

第五段:密码最长使用期限

第六段:密码离过期还有多少天就给用户警告了

第七段:自从1970年开始,到多少天禁用了

第八段:保留字段(没有意义)

0:密码的最小年龄是用户必须等待的天数,她将被允许更改密码

表示的是密码最短使用时间,如果是1,表示改了密码没有一天还不给你改密码

99999:最大的密码年龄是用户必须更改密码的天数。账户过期时间

7:离过期之前的警告时间

 

命令替换

 

wKioL1bIeynglT_HAABuH82tvrw370.png

[root@www ~]# useradd tom

[root@www ~]# tail -1 /etc/passwd

tom:x:1002:1002::/home/tom:/bin/bash

[root@www ~]# passwd tom

 [root@www ~]# tail -1 /etc/group

tom:x:1002:

[root@www ~]# tail -1 /etc/shadow

tom:$6$2NyJIPoD$jvNhZ6YBeqOlWN9GpIAyZAlk/9gWvaexY5zJk8JgruYh2bl3cxXvivzhYG.bXAc/VW7h6PKZyA7EBCAkCF7hh.:16641:0:99999:7:::

 

其实这些数据也可以自己手动增加,也可以生成一个用户

默认这些用户的属性在那里呢,在/etc/default

[root@qqq ~]# cd /etc/default/

[root@qqq default]# ll

-rw-r--r-- 1 root root 1756 Feb 17 02:15 nss

-rw------- 1 root root  119 Mar 27  2015 useradd

[root@qqq default]# cat useradd 

# useradd defaults file

GROUP=100

HOME=/home 

INACTIVE=-1    非活动期限;-1就是不做限定

EXPIRE=过期期限

SHELL=/bin/bash创建用户默认的shell

SKEL=/etc/skel

CREATE_MAIL_SPOOL=yes

 

/etc/group内部各个字段的介绍

[root@www default]# cat /etc/group

root:x:0:

bin:x:1:

daemon:x:2:

三个冒号,四个字段

组名:密码:组ID:以这个组为附加组的用户列表

手动添加一个组用groupadd +GROUPNAME 实现

groupadd redhat

 

明天开始介绍用户的一些命令

重要的以下的几个命令

0220自学Linux_逻辑理解用户进程权限相关+理解文件内各字段(passwd,shadow,group)_第4张图片 

管道和重定向     <    >    <<    >>


本文出自 “malinux学习” 博客,谢绝转载!

你可能感兴趣的:(linux,操作系统,计算机,程序,用户组)