您的位置:首页 > 运维架构 > Linux

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

2016-02-20 22:44 676 查看
11

内核是真正意义上的操作系统
库有动态库也有静态库,Linux的动态库是.so后缀的,也称为共享库库是不能够独立运行的,只能被调用Window的动态库是.dll后缀的
我们平时所谓的安装操作系统是装在硬盘上的
我们对于系统而言,最基本的程序就是shell,不然我们无法和系统交互,打开一个命令行窗口,就打开了一个shell进程
硬件之上的是内核,内核之上是进程
如果进程中他需要调用库,那首先启动这个程序,他的进程会把这个调用的库装入内存,而如果是共享库,其他进程调用的话就直接在内存调用这个库,共享库会存在内存之中

计算机资源
定义了资源的访问能力,就是权限权限用户,容器,关联权限:用户组,方便地指派权限只要这个用户放在这个容器里面,他就有相关的权限,这个容器也就是用户组的概念。所以在Linux下定义了三组用户的权限
属主:属组:其他用户
组是个逻辑概念,他只是指派权限,是不能登录的,但是组有密码进程也是有属组和属主的,谁发起了这个进程,就以怎么样的权限执行,而执行目标刚好有同样的属主和属组,那就可以被运行
我们默认让文件不应该执行权限,但是默认目录要有执行权限,如下所示:



[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号去理解各个不同的用户)
管理员:UID:0 root
普通用户:1-65535 2的16次方
系统用户: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/各个冒号分开的字段分别是什么意思呢?如下



了解shadow的格式,如下
[root@qqq ~]# cat /etc/shadow
root:$6$aWsK0ipzG5TicKXA$dO2MbGyCW09p19zGDhFj.JZJBnmFszIV4Dehg00LOIFyuy15kNcn1IeGjUhRqnGrXHyDkwi3DjgMpGATHbhVe.:16760:0:99999:7:::
bin:*:15980:0:99999:7:::




单向加密:能加密,不能解密。单向加密也叫指纹加密。非可逆的。
主要用于数据的完整性校验,是否被篡改了,是不可逆的,单方向进行的。单向加密秘钥的特性1、雪崩效应(对文档的微小改变,然后特征码会完全不一样),蝴蝶效应:
如下查看
md5sum计算和核对MD5消息摘要命令



2、定常输出:怎么修改,长度都是不会变化的
下面两个是单向加密的(md5和sha)
MD5:Message Digest,128位定长输出SHA1:Secure Hash Algorithm,160位定长输出SHA256和SHA512mage:$6$1.8JioNh4V7dk1EZ$dngBEkzsSNQsttLzyQVHDq/jH5zFSqVSwJecIGFAZEb9A0VsOR/3E/3yQJ4mdxjwjVUVYNUqsQemtnPwZbsmf/:16636:0:99999:7:::
6是SHA512 红色是杂质,也就是盐,他的作用是万一密码一样,那么有可能加密的秘钥是一样的,所以给密码加点杂质,也就是盐,而且这个是随机生成的东西,所以即使密码一样,加了盐,就会不一样了。
锁定一个用户的密码,直接可以在用户名后面的叹号后加*号,操作如下
[root@qqq ~]# tail -1 /etc/shadow
qqq:$6$lskKMYwA$dLBMCIrvx2Rl8bBfMIf8LyNcxKUw/h.h4CWCAATnJxwQL6e5DUBUcwnktBTEi4MmqtD6hvr5h6urfFqWgcuqE.:16851::::::
改成
qqq:*:$6$lskKMYwA$dLBMCIrvx2Rl8bBfMIf8LyNcxKUw/h.h4CWCAATnJxwQL6e5DUBUcwnktBTEi4MmqtD6hvr5h6urfFqWgcuqE.:16851::::::
这个用户就不能登录了,当然root用户是可以登录他的

上面可以看到第一段是用户名称,第二段是加密的密码(其中有盐+单向加密的秘钥),下面是shadow文件的第三段16851:最后一个密码更改日期,表示自1970年1月1日以来的天数。
第四段:密码最短使用期限
第五段:密码最长使用期限
第六段:密码离过期还有多少天就给用户警告了
第七段:自从1970年开始,到多少天禁用了
第八段:保留字段(没有意义)
0:密码的最小年龄是用户必须等待的天数,她将被允许更改密码
表示的是密码最短使用时间,如果是1,表示改了密码没有一天还不给你改密码
99999:最大的密码年龄是用户必须更改密码的天数。账户过期时间
7:离过期之前的警告时间

命令替换



[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

明天开始介绍用户的一些命令
重要的以下的几个命令



管道和重定向    <    >    <<    >>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息