安全上下文:在linux系统中每个进程均以某个用户的身份运行,进程访问资源的权限取决于发起此进程的那个用户的权限
权限应用模型:
1)判断运行此进程的用户是否与被访问的资源的属主相同,如果相同,则运用属主的权限,如果不同,则
2)则判断运行此进程的用户是否属于被访问资源的属组,如果是,则应用属组权限,如果不是,则
3)则应用其他权限
三类用户权限:
属主:owner,u 属组:group,g 其它:other,o
每个文件针对每类访问者都定义了三种权限:(文件有相应的权限,就在相应的权限位用相应的字符代表,没有就用-)
r: Readable w: Writable x: eXcutable
同样的权限作用于不同的文件是所代表的意义有所不同:
文件:
r: 可使用文件查看类工具获取其内容 (cat,vi)
w: 可修改其内容
x: 可以把此文件提请内核启动为一个进程
目录:
r: 可以使用ls查看此目录中文件列表
w: 可在此目录中创建文件,也可删除此目录中的文件
x: 可以使用ls -l查看此目录中文件列表,可以cd进入此目录
X:只给目录x权限,不给文件x权限
例如:
rw- r-- ---:640
rwx r-x r-x: 755
rwx r_x ---: 750
rw- rw- rw- 666
二、权限修改操作
1、修改文件权限(mode)-----chmod
1)操作三类用户的权限,使用8进制数字表示
chmod [-R] OCTAl-MODE file
-R:表示递归修改(文件一般不给执行权限的)
例如:
2)操作一类用户或指定类别用户的权限(使用=)
u=,g=, o=, ug= a=
例如:
3)操作某类用户的某位或某些权限:+|-
u+,g+,o+
u-., g-,0-
ug- ,uo-,go-
例如:
(使用逗号隔开权限,g-o,o+w,a一般情况下,可以省略)
4)引用型修改
--reference=/path/to/somefile
2、修改属主、属组----chown,chgrp(只有管理员root才能实现)
1)chown 修改文件的属主
语法:chown[OPTION]... [OWNER][:[GROUP]] FILE...
用法:
OWNER
OWNER:GROUP
:GROUP
命令中的冒号可用.替换;
-R: 递归
chown[OPTION]... --reference=RFILE FILE...
案例:
(-R 递归修改)
2)chgrp
语法:
chgrp[OPTION]... GROUP FILE...
chgrp[OPTION]... --reference=RFILE FILE...参考RFILE文件的属组,将FILE的修改为同RFILE
用法:-R 递归
3)Umask介绍
umask即权限的遮罩码,一般在/etc/profile、$ [HOME]/.bash_profile或$[HOME]/.profile中设置umask值。
(umask 只给当前shell进制有效,umask(mode)
文件: 666-umask
注意:如果减的结果中存在执行权限,则让对应的用户类别的八进制权限数字加1
目录: 777-umask
案例:
(root用户:创建目录默认权限为755,创建文件的默认权限为644)
(普通用户:创建目录的默认权限为775,创建文件的默认权限为664)
三、Suid,sgid,sticky的三个权限的详细说明
Suid:设置使文件在执行阶段具有文件所有者的权限. 典型的文件是 /usr/bin/passwd. 如果一般用户执行该文件, 则在执行过程中, 该文件可以获得root权限, 从而可以更改用户的密码.
特点:
Suid: 举例目录 /usr/bin/passwd
1)suid只能应用在二进制文件中
2)当一个文件应用了suid,那么任何人在执行该命令的时候他就临时拥有该文件拥有人的权限
3)suid只能应用在文件的拥有人上
4)小写表示能执行,大写表示不能执行
案例:
setgid: 该权限只对目录有效. 目录被设置该位后, 任何用户在此目录下创建的文件都具有和该目录所属的组相同的组.
Sgid: 应用环境为用于一组开发人员共用资源,保证安全
1)sgid既可以应用在文件上,也可以应用在目录上
2)当sgid应用在目录上时,任何人在该目录中建立健全的文件和目录的拥有者属于目录所属组
3)应用在拥有组上
4)sgid应用在文件上时,任何人在执行该文件时,临时拥有该文件所属组权限
5)小写表示可执行,大写反之
Sticky: 举例目录/tmp
1)sticky只能应用在目录上,并且是应用在其它人上.
2)只有root和文件的拥有人才能删除该文件.
3)小写表示能执行,大写表示不能执行
sticky bit: 该位可以理解为防删除位. 一个文件是否可以被某用户删除, 主要取决于该文件所属的组是否对该用户具有写权限. 如果没有写权限, 则这个目录下的所有文件都不能被删除, 同时也不能添加新的文件. 如果希望用户能够添加文件但同时不能删除文件, 则可以对文件使用sticky bit位. 设置该位后, 就算用户对目录具有写权限, 也不能删除该文件.
下面说一下如何操作这些标志:
操作这些标志与操作文件权限的命令是一样的, 都是 chmod. 有两种方法来操作,
1) 使用u,g,o
chmod u+s temp -- 为temp文件加上setuid标志. (setuid 只对文件有效)
chmod g+s tempdir -- 为tempdir目录加上setgid标志 (setgid 对目录和文件有效)
chmod o+t temp -- 为temp文件加上sticky标志 (sticky只对文件有效)
2) 采用八进制方式. 对一般文件通过三组八进制数字来置标志, 如 666, 777, 644等. 如果设置这些特殊标志, 则在这组数字之外外加一组八进制数字. 如 4666, 2777等. 这一组八进制数字三位的意义如下:
chmod 4777是设sid
chmod 2777是设置gid
chmod 1777是设sticky