标签:linux permission 上下文
用户的权限管理:
普通权限:
特殊权限:
文件的特殊属性:
FACL:
普通权限:
进程安全上下文:
1.判断进程的所有者是否为想要操作的文件属组,如果是,就按照属主的权限进行授权,如果不是,就转到第2条
2.判断进程的所有者是否为想要操作的文件的属组中的成员,如果是就按照属组的权限进行授权,如果不是 转到第3条
3.按照其他用户的权限进行授权
权限的构成:
MODE(permission):使用权
R(readable):可读
W(writable):可写
X(executable):可执行
目录:
R:可以使用ls命令获得其中所有文件名的列表,ls -l命令可以获取目录中文件的详细的属性信息,也不能使用cd命令进入其中,也不能在路径中引用该目录
W:可以修改此目录中的文件名或文件名列表,即:可以在此目录中创建,修改或删除文件名。
X:可以使用ls -l命令来获取其中的文件的详细属性信息,也可以在路径中引用该目录,也可以使用cd命令来进入其中,
注意:x权限是目录的最基本权限,任何目录都必须对任何用户开放x 权限,否则用户将无法进行任何操作。
文件:
R:可以查看或获取该文件中存放的数据
W:可以修改文件中存放的数据
X:可以将此文件发起运行为进程
Ls -l <----> ll
-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
注意:只有某个文件的属主才能修改文件的使用权(root除外)
修改文件的使用权限:
Chmod --> change mode:change file mode bits
chmod [OPTION]... MODE[,MODE]... FILE...
MODE:符号权限标识法
u,g,o,a:标识所有权
+,-,=:标识授权方式
+ :在原有的权限基础上添加新的权限
- :在原有的权限基础上去除某些权限
= :不考虑原有权限,直接将权限设置为目标权限。
R,w,x:表示具体权限内容
列子:
Chmod u+w file
Chmod g+rw file
Chmod u+x,g-wx,o-x file
Chmod u=rw,g=r,o=r file
Chmod ug-x file
Chmod +x file 默认的为a添加执行权限
Chmod +w file 默认的为属组添加写权限
注意:文件的执行权限:linux的文件系统来说,非常重要的安全的表示,因为文件一旦文件具备的执行权限,意味着该文件可以被发起执行为进程,所以默认情况下,文件都不具备执行权限。
chmod [OPTION]... OCTAL-MODE FILE...
注意:如果使用八进制数字标识法,则每次必须给足所有的权限位,如果给的权限位不完整,文件系统会自动补足,将给定的权限放置在右侧,左侧使用0来补,
chmod [OPTION]... --reference=RFILE FILE...
Chmod --reference=/PATH/TO/SMEFILE DES_FILE
列子:chmod --reference=a b
选项:
-R,--recursive:将目标目录中的文件及子目录中的文件统一的设置为指定的权限标识,
OWNERSHIP:所有权
属组:资源掌控的某个特定用户:group,g
属主:资源掌控的某些特定用户:owner(user)
其他用户:未曾掌控资源的那些用户:other,o
全部用户:all,a
Chown:可以修改文件的属组和属主
change file owner and group
chown [OPTION]... [OWNER][:[GROUP]] FILE...
Chown OWNER FILE //只修改属组
Chown :GROUP FILE //只修改属主
Chown OWNER: FILE //将目标文件的属主改为OWNER,同时将属组修改为OWNER的基本组。
Chown OWNER:GROUP FILE //将目标文件的属组和属主组修改为OWNER和GROUP
chown [OPTION]... --reference=RFILE FILE...
-R,--recursive:将目标目录中的文件及子目录中的文件统一的设置为指定的所有权,
注意:修改OWNERSHIP操作只有超级用户(root)可以完成,普通用户不可以完成
Chgrp:只能修改文件的属组
chgrp - change group ownership
chgrp [OPTION]... GROUP FILE...
chgrp [OPTION]... --reference=RFILE FILE...
Install命令:
安装:复制文件;为文件赋予执行权限
copy files and set attributes
单源复制:
install [OPTION]... [-T] SOURCE DEST
多源复制:
install [OPTION]... SOURCE... DIRECTORY
install [OPTION]... -t DIRECTORY SOURCE...
创建目录:
install [OPTION]... -d DIRECTORY...
常用选线:
-m:--mode=MODE:指定目标文件的权限,默认为755
-o:--owner=OWNER:设定目标文件的属主,只能是root可用
-g:--group=GROUP:设定目标文件的属组,只能是root可用
注意:install命令不能复制目录,即其源不能为目录,如果其源为目录,则install经历了会进去目录,依次复制其中的所有非目录文件到目标位置。
Mktemp命令:
一般来讲,临时文件都会创建在/tmp或/var/tmp目录中,无需手动删除,系统会定期自动清除这两个目录中的文件
选项:
-d:--directory:可以创建临时目录
例子:mktemp [-d] /PATH/TO/TMP.XXXXXXX(X最少3个,多了不限)
特殊权限:
SUID,SGID,STICKY
默认情况下,用户发起执行一个进程,该进程的属主是其发起者,也就是说,该进程是以其发起者的身份在运行,
SUID:功能作用,用户发起执行一个进程时,该程序文件如果拥有SUID权限的话,那么此进程发起的进程其属主为该程序文件的属主,而不是其发起者,
SUID权限所显示的位置,文件的属主权限中的执行权限位,如果属主本来就有执行权限,显示为s(小写),否则显示为S(大写)
管理文件的SUID权限:chmod u+(U+或者U-)s file...
SGID:功能作用:如果某个目录对于一些用户有写权限并且设置了SGID权限时,则所有对此目录有写权限的用户在创建新的文件或目录以后,新文件的属组不再是创建用户的基本组,而是继承了该目录的属组
SGID权限显示的位置,文件的属组权限中的执行权限位,如果属组本来就执行权限,显示为s(小写)否则显示为S(大写)
STICKY(粘滞位):如果某个目录中,有超过一个用户可以有写权限,则多个用户都可以在该目录中随意创建,修改和删除文件名,
管理文件的SGID权限:chmod g+(g+或者g-)s file...
STICKY:功能作用:如果为上述类似的目录设置了STICKY,则每个用户仍旧能够创建和修改文件名,但每个用户只能删除那些属主为其自身的文件名,
STICKY权限的显示位置:在文件权限的其他用户的执行权限位,如果原来就有执行权限,则显示为t(小写)否则显示为T(大写)
管理文件的STICKY权限:chmod o+(o+或者o-)t file...
--- 000 0
--t 001 1
-s- 002 2
-st 003 3
s-- 004 4
s-t 005 5
Ss- 006 6
Sst- 007 7
特殊权限的另一种修改方式:
将特殊权限对应的八进制数字放置于普通权限八进制数字的前面即可
例如:想给某个目录加上粘滞位
Chmod 1755 DIRECTORY...
Umask(权限遮罩码):在创建文件或目录时默认的权限生成标准
Root:0022
0:不考虑特殊权限位
0:对于新创建的文件或目录,不遮挡属主的任何权限,遮住了属组的写权限和其他用户的写权限
[root@localhost 桌面]# mkdir test --> r
[root@localhost 桌面]# touch test.txt --> rw-r--r--
有争议的:不要使用减法去做
文件的默认权限是:666 - umask
目录的默认权限时:777 - umask
理解遮罩码:
将遮罩码的值变为二进制,凡是有1的位置,其权限在创建文件时,就不设置:
默认情况下,文件的遮罩码已经有了一个0111,在此基础之上再次应用umask来遮罩权限
文件的特殊属性:
查看文件的特殊属性:
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]:格式,会使用 + - =的方式来设置
整个chattr命令最关键最核心的设置就是[mode]部分
[aAcCdDeijsStTu]都是所需要的属性
+:在原有属性设定的基础上,添加新的属性
-:从原有属性设置中移除指定的属性
=:不考虑原有的属性设置,直接将文件的属性更新为指定的属性内容
a:append,设置这个属性的文件,其内容不能被更改和删除,只能以追加的方式向文件中写数据,多数的服务器日志类文件会设置为此属性
A:atime,文件的访问时间戳,IO瓶颈,设置A属性,可以使得文件在被访问时不更改文件的访问时间戳,从而可以有效的防止IO瓶颈的发生
c:设置文件是否自动压缩后再行存储
C:设置文件是否开启“写时复制”属性
d:设置文件在使用dump进行备份的时候,不会称为备份目标
D:设置文件在文件系统中的异步写操作
i:设置文件不能被删除,修改,设定链接关系
s:设置文件的保密性删除,一旦设置s属性的文件被删除,其对应存储设备中的使用空间会被一并收回
u:与s属性是相对的,如果这样的文件删除则其存储设备中的数据会被留存
最常用的属性:i和a
Chattr +i file 不能被修改和删除
常用选项:
-R:递归的设置指定目录中的所有文件和子目录的属性
为文件赋予额外的权限机制:FACL:File Access Control List,文件访问控制列表
文件的额外赋权机制
在原有的u,g,o权限位之外,让普通用户能够控制权限赋予另外的用户和组的一种赋权机制
一般在Centos或Rhel7版本以后的发行版,才逐渐成熟
与FACL有关的命令
Getfacl:get file access control lists 查看一下文件的FACL设置
getfacl [-aceEsRLPtpndvh] file ...
User:USERNAME:MODE
Group:GROUPNAME:MODE
Other::MODE
Setfacl:set file access control lists
setfacl [-bkndRLPvh] [{-m|-x} acl_spec] [{-M|-X} acl_file] file ...
Acl_spec:acl_specification,指定的访问控制列表
U:USERNAME:MODE
G:GROUPNAME:MODE
MODE:一般使用符号权限标识法
为用户赋予额外权限:
Setfacl -m u:USERNAME:MODE FILE....
为组赋予额外权限:
Setfacl -m g:GROUPNAME:MODE FILE.....
撤销为用户赋予的额外权限
Setfacl -x u:SUERNAME
撤销为组赋予的额外权限
Setfacl -x g:GROUPNAME
注意:如果设置了FACL之后在修改目标文件的使用权限,那么FACL中设置的条目就可能收到影响而导致与要求不符,因此,如果真的需要设置FACL,就要在已经确定目标文件的使用权限以后再行设置。
Bash的脚本初步
Shell脚本,另外一种历史命令的保持形式
标签:linux permission 上下文
原文地址:http://12453570.blog.51cto.com/12443570/1913774