首页 > 代码库 > linux 权限相关部分
linux 权限相关部分
用户的权限分为普通权限,特殊权限,以及文件的特殊属性和FACL(赋予权限):
一.普通权限:
进程安全上下文:
1.判断进程的所有者是否为想要操作的文件的属主,如果是,就按照属主的权限进行授权,如果不是,就转到第二条;
2.判断进程的所有者是否为想要操作的文件的属组中的成员,如果是,就按照属组的权限进行授权,如果不是,转到第三条;
3.按照其他用户的权限进行授权;
权限的构成;
MODE(permission):使用权
R: readable, 可读
W: writable, 可写
x: eXecutable, 可执行
目录:
r:可使用ls命令获得其中所有的文件名的列表:ls -l命令来获取目录中文件的详细的属性信息,也不能使用cd命令进入其中,也不能在路径中引用该目录;
w:可以修改此目录中的文件名或文件名列表,即:可以在此目录中创建·修改或删除文件名;
x:可以使用ls -l命令来获取其中文件的详细属性信息;也可以在路径中引用该目录;也可以使用cd命令来进入其中;x权限是目录的最基本权限,任何目录都必须对
文件:
r:可以查看或获取该文件中所存放的数据;
w:可以修改文件中所存放的数据;
x:可以将此文件发起运行为进程;
用Ls -l显示:
rw-r--r--:三个权限位:属主;属组;其他用户的;以三个为区隔,
属主权限:rw-
属组权限:r--
其他用户权限:r--
权限标识三元组:
--- 000 0
--x 001 1
-w- 010 2
-wx 011 3
r-- 100 4
r-x 101 5
Rw- 110 6
Rwx 111 7
rw-r--r--:
110100100
644
注意:只有某个文件的属主才能修改文件的使用权限(root除外):
修改文件的使用权限:
Chmod: -->
chmod - 改变文件的访问权限
chmod [options] mode file...
MODE:符号权限标识法;
U,g,o,a:表示所有权;
+:在原有权限基础上添加新的权限;
—:在原有的权限基础上去除某些权限;
=:不考虑原有权限,直接将权限设置为目标权限;
R,w,x表示具体权限内容:
例:
Chmod u+w file
Chomd g+rw file
Chmod u+x,g-wx,o-x, file
Chmod u=rw,g=r,o=r file
Chomd ug-x file
Chmod +x file 默认的为a添加执行权限,a为所有人;
Chmod +w file 默认的只为属主添加读写权限;
注意:文件的执行权限:Linux文件系统来说是非常重要的安全的标识:因为文件一旦具备了执行权限,意味着该文件可以被发起执行为进程;所以默认情况下文件都不具备执行权限;如果使用八进制数字表识法,则每一次必须给足所有的权限位;如果给的权限位不完整,文件系统会自动补足,将给定的权限放置在右侧,左侧用0来补;
chmod 640 file
Chmod --reference=/PATH/TO/SOMEFILE DES_FILE
Chmod --referene=a b
-R:--Recursive:将目标目录中的文件及子目录和子目录下的文件统一的设定为指定的权限标识;
OWNERSHIP:所有权
属主:资源掌控的某个特定用户;owner(user), u
属组:资源掌控得某些特定用户;group, g
其他用户:未曾掌控资源的其他用户;other, o
全部用户:all, a
Chown:可以修改文件的属主和属组;
chown - 修改文件所有者和组别
chown [options] user [:group] file...
Chown OWNER FILE
Chown : GROUP FLIE
Chown OWNER: FILE //将目标文件的属主改为OWNER的基本组
Chown OWNER :GROUP FILE //将目标文件的属主和主组修改为OWNER和GROUP;
-R:--Recursive:将目标目录中的文件及子目录和子目录下的文件统一的设定为指定的权限标识;
注意:修改OWNERSHIP(所有权)的只能是超级用户才可以
Chgrp:只能修改文件的属组
Install命令:
安装:复制文件;为文件赋予执行权限,
install - 复制文件并设置属性
常用选项:
-d:
-d, --directory
创建每个给定的目录以及任何缺失的父目录,
按照命令行要求来设置所有者,组别和模式,或者设为默认值.
它也授予任何它创建的父目录以这些属性.
-m:-o:
-g:
-g group, --group=
设置安装的文件或目录的组所有权为group,这可能是组名,或者是数字化组标识.
Install命令不能复制目录,即其源不能为目录;如果其源为目录,则install经历了会进入目录,依次复制其中的所有非目录文件到目标位置;
Mktemp命令:
一般来讲,临时文件都会创建在/tmp或/var/
Tmp中,无需手动删除,系统会定期删除两个文件中的文件;
选项:
-d:--directory:可以创建临时目录;
例子:mktemp /PATH/TO/TMP.XXXXXXXX
回顾:
普通权限:MODE:资源的使用权限
OWNERSHIP:资源的所有权
特殊权限:
SUID SGID STICKY
默认情况下,用户发起一个进程,该进程的属主是其发起者;也就是说,该进程是以其发起者的身份在运行;
SUID :
功能作用:用户发起执行一个进程时,该程序文件如果拥有SUID 权限的话,那么此程序发起的进程其属主为该程序文件的属主,而不是其发起者;
SUID 权限所显示的位置:文件的属主权限中的执行权限位;如果属主本来就有执行权限,显示位s;否则显示位S
管理文件的SUID 权限:
Chmod u+| -s file。。。
SGID :
如果某个目录对于一些用户有写权限并且设置了SGID权限时,则所有对此目录有写权限的用户在创建新的文件或目录以后,新文件的属组不再是创建用户的基本组,而是继承了该目录的属组;
SGID权限显示位置:在文件的属组权限中的执行权限位,如果属组本来就就执行权限,显示位s;否则显示位S
STICKY :粘滞位
如果某个目录中有超过一个用户可以有写权限,则这多个用户都可以在该目录中随意创建,修改和删除文件名;
STICKY的功能作用:
如果为上述类似的目录设置了STICKY权限,则每个用户依旧能够创建和修改文件名,但每个用户只能删除那些属主为自身的文件名;
STICKY权限的显示位置:在文件权限的其他用户的执行权限位;如果原来就有执行权限,显示位s;否则显示位S
管理文件的STICKY权限:
Chmod o+|-t FILE...
Suid sgid sticky
--- 000 0
--t 001 1
-s- 010 2
-st 011 3
S-- 100 4
S-t 101 5
Ss- 110 6
Sst 111 7
特殊权限的另一种修改方式:
将特殊权限位对应的八进制数字放置于普通权限八进制数字的前面即可
Umask:
权限遮罩码,在创建权限或目录时默认的权限生成标准:
Root: 0022
不考虑特殊权限位;
对于新创建的文件或目录,不遮挡属主的任何权限;遮住了属组和其他用户的写权限;
理解遮罩码:
将遮罩码的值变为二进制,凡是有1的位置,其权限在创建文件时,就不设置;
默认情况下,文件你的遮罩码就已经有了一个0111,在此基础之上再次应用umask来遮罩权限;
文件的特殊属性:
查看文件的特殊属性:
Lsattr: lsattr - 显示文件在Linux第二扩展文件系统上的特有属性
修改设置文件的特殊属性:
Chattr:chattr - 修改文件在Linux第二扩展文件系统(E2fs)上的特有属性
chattr [ -RV ] [ -v version ] [ mode ] files...
Mode:会使用+-=的方式来设置
整个chatter命令最关键最核心的部分就是[mode]部分;
+:在原有属性设定的基础上,添加新属性;
-:从原有属性设置中移除指定的属性;
=:从不考虑原有的属性设置,直接将属性设定为指定的属性内容;
a:append:设置这个属性的文件,其内容不能被修改或删除,只能以追加的方式向文件中写入数据,多数的服务器日志类文件会设置此属性;
A:atime,文件的访问时间戳:IO瓶颈:设置A属性可以使得文件在被访问时不更改文件的访问时间戳,从而可以有效的防止IO瓶颈的发生;
c:设置文件是否自动压缩后再存储;
C:设置文件是否开启“写时复制”
d:设置文件在使用dump进行备份的时候,不会称为备份目标;
D:设置文件在文件系统中的异步写操作;
i:设置文件不能被删除,修改,设定链接关系;
s:设置文件的保密性删除,一旦设置s属性的文件被删除,其对应存储设备中的使用空间也会被一并删除;
u:跟s属性相反,如果这样的文件被删除,则其存储于存储设备中的文件会被留存;
最常用的属性:i和a
Chatter +i FILE
常用选项:
-R:递归的设置指定文件中的所有文件和子目录的属性;
为文件赋予额外的权限机制:FACL:File Access Control List,文件访问控制列表
文件的额外赋权机制:
在原有的u,g,o权限位之外,让普通用户能够控制权限赋予另外的用户和组的一种赋权机制;
一般在centos7或rhel7以后的版本才逐渐成熟;
与FACL有关的命令:
Getfacl:获得facl
Setfacl:
为用户赋予额外权限:setfacl -m u:USERNAME : MODE FILE...
为组:setfacl -m g:GROUPNAME : MODE FILE...
撤销为用户赋予的额外权限:
Setfacl -x u:USERNAME
撤销为组赋予的额外权限:
Setfacl -x u:GROUPNAME
注意:如果设置了facl之后修改目标的使用权限,那么facl中设置的条目就可能受到影响而导致与要求不符;因此,如果真的需要设置facl,就要在已经确定目标文件的使用权限以后再进行设置;
本文出自 “fuboyuan” 博客,谢绝转载!
linux 权限相关部分