首先,仍是要从用户帐户的做用出发;安全
用户帐户的做用:证明操做者的身份bash
不容许任何人都以管理的身份来对计算机资源进行使用,这样会使计算机的安全性特别低。并发
其次,用户帐户经过以后,咱们要对于不一样的用户帐户进行不一样的受权(权限)
异步
例如:超级用户(root),拥有对于计算机的资源拥有全部权ide
普通帐户(user1,user2,...),拥有指定赋予的权限。spa
文件系统的权限管理:rest
普通权限日志
特殊权限递归
文件的扩展属性进程
FACL(文件系统访问控制列表)
咱们把这4个部分组成的一套体系称为:DAC(自主访问控制)
说到这套体系就必须说到另外一个概念
安全上下文:
任何在计算机中执行的任务都是由进程实现的;
进程有必要访问和使用文件或某些数据资源;
简单理解起来就是:张三的车只有张三能开,
李四不可以开,除非张三容许李四开张三的车
张三,李四分别对车之间就有权限的关系;
就至关于: 张三对应进程1
李四对应进程2
车至关于计算机资源1
进程1可以使用资源1
进程2不能使用资源2
补充:人操做计算机就是:人使用一个用户帐户登录到计算机,计算机操做就是用户帐户经过
“识别”的人体手动操做打开对应的进程,而这些进程就会去对相应的文件进行执行和
处理或使用。
进程和其要操做的文件之间的关系,就定义为安全上下文;
在DAC模型中,定义安全上下文的方式很简单:
全部权
任何启动进程的用户就是该进程的全部者;进程的全部者能够变动;
任何建立文件的用户就是该文件的全部者;文件的全部者能够变动;
使用权
在文件上面定义的对该文件的特定使用过滤规则;
三个权限:全部者权限,所属组权限,其余人权限;
安全上下文的匹配规则:
当某个进程试图操做某个文件时,DAC将作以下规则匹配:
1.判断进程的全部者和文件的全部者是否为同一用户,若是是,则直接应用 文件的全部者权限;
2.若是不是,进一步判断进程的全部者是否为文件的所属组的成员,若是 是,则直接应用文件的所属组权限;
3.若是不是,直接应用其余人权限;
在Linux中查看某个文件的权限可使用:ls -l[d] /PATH/TO/SOMEFILE
接下来就是要介绍与权限相关的和其命令操做:
rwxr-xr-x:三个权限位(属主/全部者,属组/所属组,其余用户)
属主权限:rwx,此权限位标识为user,简写为u;
属组权限:r-x,此权限位标识为group,简写为g;
其余用户权限:r-x,此权限位标识为other,简写为o;
全部的权限位能够统一用all标识,简写为a;
注意:"-"表示在该权限位上不具有指定权限;
rwx组合称为"权限标识三元组";
数字权限标识:二进制数字标识,在对应的权限位上有权限则为1,无权限则为0;
---000 0
--x 001 1
-w- 010 2
-wx 011 3
r-- 100 4
r-x 101 5
rw- 110 6
rwx 111 7
使用符号标识权限和数字表示权限的区别:
1.使用符号标识法能够只标识某个特定的权限位,也能够同时标识全部的权限位;
示例:
u=rx; ug=rwx; u=rwx,g=rx,o=r; a=rwx
2.使用数字标识法只能同时标识全部权限位;
示例:
755; 644; 7 == 007 ; 75 == 075
修改文件的使用权:
chmod - change file mode bits
格式:
chmod [OPTION]... MODE[,MODE]... FILE...
chmod [OPTION]... OCTAL-MODE FILE...
chmod [OPTION]... --reference=RFILE FILE...
MODE:符号权限标识法:
u, g, o, a:表示权限位;
+, -, =:表示受权方式;
+:表示在指定的权限位上增长指定权限;若是新增的权限是已经存在的权限,则结果相比较受权以前无变化;
-:表示在指定的权限位上撤销指定权限;若是被撤销权限在原权限位并不存在,则结果相比较受权以前无变化;
=:表示在指定的权限位上精确受权;此种受权方式不考虑该权限位原有的权限设定的;
r, w, x:表示具体的权限;
示例:
# chmod u-x,g+rw,o+r txt.user3
# chmod u-x,g-x,o-wx txt.user3
# chmod u+rw,g+rw,o+r txt.user3
# chmod u=r,g=r,o=rwx txt.user3
注意:
chmod +|- r|x FILE:在全部的权限位上增长或撤销读或执行权限;
chmod +|- w FILE:仅在全部者权限位上增长或撤销写权限;
注意:对于文件来讲,执行权限是很是重要的安全上下文标识;所以默认状况下,全部的非目录文件都不该该有执行权限;由于一旦非目录具备了执行权限,则意味着该文件能够被执行,发起为进程,则能够按需使用系统资源;
OCTAL-MODE:八进制数字权限标识法
示例:
# chmod 640 root.txt
--reference=RFILE:
示例:
# chmod --reference=/etc/shadow root.txt
//参考/etc/shadow文件的权限位root.txt设置相同权限;
经常使用选项:
-R, --recursive:递归地设置目标文件或目录的权限;
修改文件的全部权:
chown
chown - change file owner and group //修改文件的属主和属组
格式:
chown [OPTION]... [OWNER][:[GROUP]] FILE...
chown [OPTION]... --reference=RFILE FILE...
示例:
~]# chown user3 test1 //只修改这个文件的全部者,所属组不变
~]# chown user3: test2 //把这个文件全部者改为user3,并把user3的主要组改为此文件的所属组
~]# chown :user3 test3 //把此文件的所属组改为user3,而全部者/属主不变
~]# chown user3:myuser test4 //直接把此文件的属主和属组改为user3和myuser
注意:在使用chown命令时,特别的,可使用"."代替":";
经常使用选项:
-R, --recursive:递归地设置目标文件或目录的全部权;
注意:对于文件来讲,普通用户能够修改全部者为本身的文件的使用权,但没法修改文件的全部权;修改文件全部权的操做只有root能够完成;
chgrp(不经常使用)
chgrp - change group ownership
格式:
chgrp [OPTION]... GROUP FILE...
chgrp [OPTION]... --reference=RFILE FILE...
注意:chown和chgrp命令所指定的用户和组,既能够是用户名和组名,也能够是UID和GID;
mkdir:
-m MODE:在建立目录时为其指定权限;
install命令:
install - copy files and set attributes
格式:
install [OPTION]... [-T] SOURCE DEST
单源复制,为复制后的文件增长执行权限;
install [OPTION]... SOURCE... DIRECTORY
多源复制,为复制后的文件增长执行权限;
install [OPTION]... -d DIRECTORY...
建立目录;
经常使用选项:
-g, --group=GROUP
set group ownership, instead of process' current group
//设定目标文件的所属组为指定组,而不是进程全部者的主要组;
-m, --mode=MODE
set permission mode (as in chmod), instead of rwxr-xr-x
//设定目标文件的权限,而不是rwxr-xr-x;
-o, --owner=OWNER
set ownership (super-user only)
//设定目标文件的全部者,仅root可用;
注意:install命令,不能复制目录,即不能以目录为源文件;若是其源文件是一个目录,则install命令会进入该目录,依次复制其中的全部非目录文件到目标位置;
特殊权限:
SUID,SGID,STICKY
1.SUID:SUID仅设置在可执行的文件上。
默认状况下,当用户执行此类可执行文件时,被发起的进程的全部者不是进程发起者,而是可执行文件的全部者;换句话说,进程以文件全部者的身份运行;
SUID权限所显示的位置:文件的属主的权限位中的执行权限位上;若是属主原本就具备执行权限,则显示为"s";若是属主原本没有执行权限,则显示为"S";
管理SUID权限:
1.符号标识法:chmod u+s FILE
2.数字标识法:chmod 4755 FILE
2.SGID:SGID能够设置在可执行文件或目录的属组权限位的执行权限上。
若是某个目录设置了SGID权限,而且对于某些用户有写权限,则全部在此目录中建立的新文件和目录的所属组均为其父目录的所属组,而并不是进程发起者的主要组;
SGID权限的显示位置:文件的属组权限位上的执行权限上;若是属组原本就有执行权限,则显示为"s",不然,就显示为"S";
管理SGID权限:
1.符号标识法:chmod g+s DIR
2.数字标识法:chmod 2770 DIR
3.STICKY:STICKY仅设置在目录的其余用户权限位的执行权限上。
若是在某个目录上的权限设置为多个用户都拥有写权限,那就意味着凡是拥有写权限的用户都能直接管理该目录中的全部文件名,包括更名文件及删除文件名等操做;所以须要在这样的目录上设置STICKY特殊权限;若是此类目录设置了STICKY,则全部用户即使拥有写权限,也仅能删除或更名全部者为其自身的文件;
STICKY权限的显示位置:在目录的其余用户的权限位的执行权限上;若是该权限位原本有执行权限,则显示为"t",不然,显示为"T";
管理STICKY权限:
1.符号标识法:chmod o+t DIR
2.数字标识法:chmod 1777 DIR
权限遮罩码:umask
做用:在建立目录或文件时,被建立出来的目录或文件的默认权限上删除遮罩码上所对应的权限;
注意:在建立目录或文件时,默认不设置特殊权限;
对于目录文件:默认的权限为:0777-umask 0777-0033 = 0744
对于非目录文件:默认的权限为:0666-umask 0666-0033 = 0644
umask [OCTAL-MODE]
默认设置遮罩码的文件:/etc/bashrc
规则:若是用户的UID大于199而且用户的用户名和主要组的组名相同,则遮罩码为002;不然遮罩码为022;
文件的扩展属性:
lsattr:
lsattr - list file attributes on a Linux second extended file system
格式:
lsattr [ -RVadv ] [ files... ]
chattr:
chattr - change file attributes on a Linux file system
格式:
chattr [ -RVf ] [ -v version ] [ mode ] files...
mode能够是:+-=[aAcCdDeijsStTu]
+
-
=
a:在向文件写数据时,只能以附加的方式进行写操做;文件的内容不能被更改和删除;通常会为日志文件设置此属性;
A:atime,文件的访问时间戳控制属性;对于并发访问量较大或者并发访问频率较高的文件,应该设置此属性以下降IO成本;防止IO瓶颈;
c:设置是否自动压缩以后再存储;
C:是否开启"写时复制";
d:使用dump备份文件系统是,跳过属性设置为d的文件;
D:设置文件在文件系统中的异步写操做;
i:设置文件不能被删除,更名及设定连接关系;
s:设置文件的保密性删除;
u:与s属性相反,若是此类文件被删除,则在存储器中会继续保存其内容;
FACL:
Filesystem Access Control List,文件系统访问控制列表;
想要应用此功能,必须让文件系统可以支持;
FACL为文件系统的额外赋权机制;
在原有的u,g,o权限位以外,让普通用户可以控制权限赋予另外的某个指定的用户或组的一种赋权机制;
这种机制在CentOS或者RHEL7以后的发行版本中,才逐渐成熟;
与FACL相关的命令:
getfacl:
getfacl - get file access control lists
格式:
getfacl [-aceEsRLPtpndvh] file ...
setfacl
setfacl - set file access control lists
格式:
setfacl [-bkndRLPvh] [{-m|-x} acl_spec] file ...
setfacl --restore=file
经常使用选项:
-m acl_spec:为指定文件设置acl_spec;
-x acl_spec:将acl_spec从指定文件上移除;
acl_spec:acl_specification,acl规格,访问控制列表;
u:USERNAME:MODE
g:GROUPNAME:MODE
MODE通常是使用符号权限标识法标识的权限;
示例:
为文件赋予指定用户的额外访问权限:
[user3@lab1 ~]$ setfacl -m u:link:rwx /tmp/temp/
撤销指定文件的额外访问权限:
[user3@lab1 ~]$ setfacl -x u:link /tmp/temp/
注意:若是设置了FACL以后,再修改目标文件的使用权限,那么FACL中设置的权限条目可能受到影响而致使受权失败;所以,为了保证没有此项干扰,应该先调整目标文件或目录的权限,再设置FACL;