LINUX安全模型
1.用户身份验证:用户登录系统时必须提供用户名和密码。
2.资源分派:当用户登录成功时,系统会自动分配令牌 token,包括:用户标识和组成员等信息。
3.权限控制:使用用户和用户组来控制使用者访问文件和其他资源的权限。每一个文件都一定属于一个用户(一般该用户就是文件的创建者)并与一个用户组相关。每一个进程(处理程序)也都会属于一个用户和用户组相关联。可以通过在所有的文件和资源上设定权限来只允许该文件的所有者或者某个用户组的成员访问它们。
4.权限管理:Linux系统是一个典型的多用户系统,不同的用户处于不同的地位。为了保护系统的安全性,Linux系统对不同用户访问同一文件的权限做了不同的规定。对于一个 Linux 系统中的文件来说,它的权限一般可以分为三种:读的权限、写的权限和执行的权限,分别用 r、w 和 x 表示。不同的用户具有不同的读、写和执行的权限。
5.特殊权限:Linux文件系统上的特殊权限包括SUID和SGID。SUID作用于二进制可执行文件上,用户将继承此程序所有者的权限。SGID作用于二进制可执行文件上,用户将继承此程序所有组的权限。SGID也可以作于于目录上, 此目录中新建的文件的所属组将自动从此目录继承。
权限实例
权限相关的命令
chown
[12:45:11root@localhost ~]# ll
total 0
drwxr-xr-x 2 root root 6 Jan 7 10:14 mul
[12:45:41root@localhost ~]# chown luo.luo mul #更改文件的所属主和所属组
[12:46:07root@localhost ~]# ll
total 0
drwxr-xr-x 2 luo luo 6 Jan 7 10:14 mul
[12:47:18root@localhost ~]# ll
total 0
drwxr-xr-x 2 luo luo 6 Jan 7 10:14 mul
-rw-r--r-- 1 root root 0 Jan 7 12:47 ooo
[12:47:25root@localhost ~]# chown --reference=mul ooo #复制文件的属性到指定文件
[12:47:44root@localhost ~]# ll
total 0
drwxr-xr-x 2 luo luo 6 Jan 7 10:14 mul
-rw-r--r-- 1 luo luo 0 Jan 7 12:47 ooo
chgrp
[13:01:41root@localhost ~]# ll
total 0
drwxr-xr-x 2 luo luo 6 Jan 7 10:14 mul
-rw-r--r-- 1 root root 0 Jan 7 12:47 ooo
[13:01:44root@localhost ~]# chgrp luo ooo #更改文件的组属性
[13:02:20root@localhost ~]# ll
total 0
drwxr-xr-x 2 luo luo 6 Jan 7 10:14 mul
-rw-r--r-- 1 root luo 0 Jan 7 12:47 ooo
chmod
[13:05:19root@localhost ~]# ll
-rw-r--r-- 1 root luo 0 Jan 7 12:47 ooo
[13:05:21root@localhost ~]# chmod +x ooo #给文件增加执行权限
[13:05:39root@localhost ~]# ll
-rwxr-xr-x 1 root luo 0 Jan 7 12:47 ooo
[13:06:12root@localhost ~]# ll
---------- 1 root luo 0 Jan 7 12:47 ooo
[13:06:15root@localhost ~]# chmod o=r ooo #给其他人增加可读权限
[13:06:36root@localhost ~]# ll
-------r-- 1 root luo 0 Jan 7 12:47 ooo
#文件的权限可以用数字表示
权限的值是基于umask的值默认是0022
r 4
w 2
x 1
[13:08:44root@localhost ~]# ll
-------r-- 1 root luo 0 Jan 7 12:47 ooo
[13:08:46root@localhost ~]# chmod 777 ooo
[13:08:55root@localhost ~]# ll
-rwxrwxrwx 1 root luo 0 Jan 7 12:47 ooo
特殊权限
suid
#作用:让普通用户临时拥有该文件的属主的执行权限,suid权限只能应用在二进制可执行文件(命令)上,而且#suid权限只能设置在属主位置上。
#suid权限使用s表示,增加权限u+s,移除权限u-s;
#suid权限也可以使用数字形式表示,0表示去除suid权限,4表示添加suid权限,而且是在原权限的数字表达形式开头加0或4,如:0755移除suid权限,4755添加suid权限
[root@localhost ~]# chmod 4755 /usr/bin/passwd #在原数字表达权限前加4就表示添加suid权限(命令等价于chmod u+s /usr/bin/passwd)
[root@localhost ~]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 27832 Jun 10 2014 /usr/bin/passwd
root@localhost ~]# ll /etc/shadow #这个文件没有任何权限,只有root超级管理员才能修改
---------- 1 root root 1575 Oct 5 22:48 /etc/shadow
[root@localhost ~]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 27832 Jun 10 2014 /usr/bin/passwd #有个suid权限,这就说明了普通用户执行passwd命令时临时提权到root权限了,所以才有root权限才写到shadow文件
[root@localhost ~]# ll /bin/passwd #查看passwd命令的权限,有suid权限
-rwsr-xr-x. 1 root root 27832 Jun 10 2014 /bin/passwd #查看passwd命令的权限,有suid权限
[root@localhost ~]# chmod 0755 /usr/bin/passwd #在原数字表达权限前加0就表示去除suid权限(命令等价于chmod u-s /usr/bin/passwd)
[root@localhost ~]# ll /usr/bin/passwd #查看passwd命令的权限,没有了suid权限,但这时任何普通用户都修改不了密码,如前面介绍的那样,因为任何普通用户都对shadow文件没有写入权限
-rwxr-xr-x. 1 root root 27832 Jun 10 2014 /usr/bin/passwd #去处了权限
sgid
作用:sgid权限一般应用在目录上,当一个目录拥有sgid权限时,任何用户在该目录下创建的文件的属组都会继承该目录的属组
[luo@localhost ~]$ ll -d Test/
drwxrwxr-x 2 luo nginx 6 Oct 13 20:44 Test/ #查看目录的权限,都是普通权限,属主是luo,属组是nginx
[luo@localhost ~]$ touch Test/file1 #创建一个file1文件
[luo@localhost ~]$ ll Test/file1
-rw-rw-r-- 1 luo luo 0 Oct 13 20:47 Test/file1 #file1的的属主属组都是luo
[luo@localhost ~]$ rm -rf Test/file1 #先删除file1
[luo@localhost ~]$ chmod 2755 Test/ #增加sgid权限
[luo@localhost ~]$ ll -d Test/
drwxr-sr-x 2 luo nginx 19 Oct 13 20:47 Test/ #sgid权限已经增加了,属组位置上有了一个s
[luo@localhost ~]$ touch Test/file2 #重新创建一个file2文件
[luo@localhost ~]$ mkdir Test/test #也创建一个目录
[luo@localhost ~]$ ll Test/ #查看创建的文件和目录
total 0
-rw-rw-r-- 1 luo nginx 0 Oct 13 20:59 file2 #属组都与Test目录的属组一样,这是因为Test目录具有sgid权限
drwxrwsr-x 2 luo nginx 6 Oct 13 20:59 test
#移除sgid权限
[luo@localhost ~]$ chmod g-s Test/ #使用字母形式移除sgid权限
[luo@localhost ~]$ ll -d Test/
drwxr-xr-x 3 luo nginx 44 Oct 13 20:59 Test/ #sgid权限已被移除
[luo@localhost ~]$
sticky权限
作用:sticky权限一般针对目录来设置,作用是只允该目录下的文件的创建者删除自己的创建的文件,不允许其他人删除文件。(root用户除外,因为root用户是超级管理员)
#移除sticky权限
#sticky权限使用t表示,增加权限o+t,移除权限o-t;
[root@localhost /]# chmod -R o-t /test_tmp/ #移除sticky权限,加-R表示对目录递归
[root@localhost /]# chmod -R 0777 /test_tmp/ #移除sticky权限,加-R表示对目录递归
#增加sticky权限
[root@localhost /]# chmod -R 1777 /test_tmp/ #等价于chmod -R o+t /test_tmp/,加-R表示对目录递归
[root@localhost /]# ll -d test_tmp/
drwxrwxrwt 2 root root 6 Oct 6 17:28 test_tmp/