linux文件权限:
在linux系统中,每个文件或目录都包含有相应的权限,这些权限决定了哪些用户或组能够对此文件做哪些操作,如读取、删除、写入等操作
文件权限分为三类:r,w,x
应用于文件:
r:只读,只能查看其文件的内容,例如使用cat命令查看
w:写入,能修改其文件的内容,但不能删除,也无法查看内容
x:执行,可执行的二进制程序或者脚本文件
应用于目录:
r:能够查看其目录下的文件,但无法查看详细信息
w:可以在目录下创建或者删除文件,需要配合x权限
x:可以进入目录,可访问目录下的内容
X:只对目录的x权限生效,文件不生效
当我们使用ls -l命令查看文件或目录时会列出一系列的属性信息:
最左侧一列由十位组成,其中第一位表示文件的的类型,d表示目录文件,-表示普通文件,等等
其余九位表示文件的权限,其中每三位一组,分为三组,自左而右匹配,第一组表示文件属主的权限,第二组表示文件属组的权限,第三组则为其他用户的权限
修改文件的属主或属组:
chown:修改文件的属主或属组
-R:递归,对目录下所有子文件及目录全部生效
–reference:参考文件的属主属组,将文件的属主或属组与某一文件设定一致
chown owner FILE:修改文件的属主
chown :group FILE:修改文件的属组
chown owner:group:修改文件的属主与属组
chgrp:修改文件属组,由于chown包含了此命令的功能,在此不做介绍
权限的八进制表示法:
— 000 0
–x 001 1
-w- 010 2
-wx 011 3
r– 100 4
r-x 101 5
rw- 110 6
rwx 111 7
例如:
640等于rw-r—–
755等于rwxr-xr-x
chmod:权限管理
-R:递归,修改目录下所有文件及目录的权限
–reference:参考某文件的权限,将文件的权限设定与指定文件权限一致
三类用户:
u:文件属主
g:文件属组
o:其他用户
a:表示所有
chmod [OPTION]… MODE[,MODE]… FILE…
权限表示法:
赋权表示法:直接操作一类用户的所有权限位(可组合)
u=
g=
o=
a=
授权表示法:操作一类用户的一个或多个权限位(可组合)
u+,u-
g+,g-
o+,o-
a+,a-
八进制表示法:直接使用八进制对所有权限位进行赋权
如777表示权限为rwxrwxrwx
755表示rwxr-xr-x
644表示rw-r—–
umask:文件权限的反向掩码,创建文件或目录时设定的默认权限
umask:查看当前umask值
umask MASK:修改umask值,只对当前shell进程有效,如果想永久有效 需要在配置文件当中定义umask值
默认创建文件:666-umask值
默认创建目录:777-umask值
特殊权限:SUID,SGID,Sticky
Linux系统上的特殊权限
特殊权限:SUID, SGID, STICKY
安全上下文:
1.当用户要发起某个程序为进程时,首先此用户要对此程序文件具有执行权限才行
2.当程序被发起为进程时,进程的属主是发起者的属主,属组则为发起者的属组
3.当进程去访问某文件时,权限取决于发起此进程的用户的权限
(1)当进程的属主与文件的属主所匹配,则应用属主权限
(2)当进程的属主属于文件的属组,则应用属组权限
(3)应用other权限
SUID:
如果一个可执行程序拥有SUID,当此程序被启动为进程时,进程的属主不再是发起者,而是程序自身文件的属主,SUID只对二进制程序有效
权限设定:chmod u+s FILE
chmod u-s FILE
注意:如果属主位拥有x权限,则SUID表示为小s,否则为大S
SGID:
当一个可执行程序拥有SGID,此程序运行为进程时,属主不是发起者,而是原文件的属组
当一个目录拥有SGID,则目录下新建文件的属组同此目录的属组一致
权限设定:
chmod g+s FILE|DIR
chmod g-s FILE|DIR
注意:如果此程序文件的属组位拥有x权限,则SUID表示为小s,否则为大S
Sticky:
如果一个目录具有写权限,意味着所有用户都可以任意添加删除目录下的文件,如果添加Sticky权限,则只有文件的所有者或root才能删除该文件
权限设定:
chmod o+t DIR
chmod o-t DIR
注意:如果此目录的other位拥有x权限,则SUID表示为小t,否则为大T
特殊权限八进制表示法:
000 0
001 1
010 2
011 3
100 4
101 5
110 6
111 7
chattr:设定文件特定属性:
-i:锁定文件,只能读取文件,不能修改、删除、移动
-A:锁定文件访问时间戳
-a:只能增加
lsattr:查看文件特定属性
FACL:File Access Control List即文件访问控制列表,在原有的u,g,o之外,另一层让普通用户能控制赋权给另外的用户或组的赋权机制,主要用于实现权限的灵活管理。
权限匹配安全模型:
当程序被运行为进程时,以运行此进程的用户的身份去完成所有操作
1.当用户以某进程访问文件时,首先判断此进程的属主与文件属主是否一致,如果一致,则应用属主权限,否则,进入第二步
2.检查此进程的属主是否有特定的FACL权限,如果有,则应用,否则,进入第三步
3.检查此进程的属主是否属于文件的属组,如果属于,则应用属组权限,否则,进入第四步
4.检查此进程的属主所属的组是否有特定的FACL权限,如果有,则应用,否则,进入最后一步
5.应用other权限
setfacl:设定facl权限
setfacl -m u:USERNAME:MODE FILE | DIR:对文件或目录设定某个用户特定的FACL
setfacl -m g:GROUPNAME:MODE FILE | DIR:对文件或目录设定某组特定的FACL
setfacl -M ACL.FILE FILE | DIR:读取指定文件中的FACL列表
setfacl -R u:USERNAME:MODE DIR:对目录下所有文件都设置FACL
setfacl -m d:u:USERNAME:MODE DIR:对目录下后续创建的文件设定默认FACL
setfacl -x u:USERNAME:MODE FILE | DIR:撤销某个FACL权限
setfacl -X XACL.FILE FILE | DIR:通过文件中定义的FACL列表来撤销FACL权限
setfacl -k DIR:撤销目录上的默认FACL权限
setfacl -b FILE | DIR:清空所有FACL列表
getfacl:可查看FACL权限列表
getfacl FILE | DIR:查看文件或目录的FACL权限列表
getfacl FILE1 | setfacl –set-file=- FILE2:复制FILE1文件的FACL给FILE2文件
mask:控制FACL权限的边界,只影响除了属主和other以外的所有权限
用户或组的权限必须在mask设定范围之内才会生效
设定mask权限:
setfacl -m mask::rx FILE
备份FACL列表:
getfacl -R /tmp/dir1 > acl.txt
setfacl -R -b /tmp/dir1
setfacl -R –set-file=acl.txt /tmp/dir1
getfacl -R /tmp/dir1
原文地址:http://zhaizhai.blog.51cto.com/11881047/1839843