一、Linux的基本文件权限
1、文件的权限
当用户不拥有某位权限,则使用-占位
r-x:读和执行的权限
r--:只读权限
rw-:读写权限
使用数字来表示权限:
r:4
w:2
x:1
#=================================================================
2、权限对于文件和目录的区别对于文件的权限:
r : 查看
w : 修改
x : 运行
对于目录的权限:
r : 查看目录内文件列表
w : 创建和删除文件(需要x权限)
x : cd进目录
#=================================================================
3.权限管理的基本命令chmod : 修改文件权限
chmod [options]... mode... file
例:chmod 777 file
chmod +x file
chmod -x file
选项:
-R :递归修改权限
chown : 修改属主属组
chown [options]... user:group file
例:chowm root:root file1
选项:
-R:递归
chgrp:修改组权限
chgrp [options]... GROUP FILE...
例:chgrp group1 file1
选项:
-R:递归
#=================================================================
4.umask:新建文件和目录的默认权限umask值可以用来保留在创建文件权限
新建FILE权限: 666-umask
如果所得结果某位存在执行(奇数)权限,则将其权限+1
新建DIR权限: 777-umask
非特权用户umask是002
root的umask 是022
用法:
umask: 查看
umask #: 设定
umask 002
umask –S 模式方式显示
umask –p 输出可被调用
umask全局设置:/etc/bashrc ;用户设置:~/.bashrc
#=================================================================
二、Linux系统上的特殊权限
特殊权限:SUID,SGID,STICKY
安全上下文:
前提:进程有属主和属组;文件有属主和属主
(1) 任何一个可执行程序文件能不能启动为进程,取决发起者对程序文件是否拥有执行权限
(2) 启动为进程之后,其进程的属主为发起者,进程的属组为发起者所属的组
(3) 进程访问文件时的权限,取决于进程的发起者
权限匹配模型:
(a) 进程的发起者,同文件的属主:则应用文件属主权限
(b) 进程的发起者,属于文件属组;则应用文件属组权限
(c) 应用文件“其它”权限SUID :
示例文件:/bin/passwd
1.只能作用在二进制程序上。
2.执行该程序的用户将会继承程序所有者的权限。
3.启动成为进程后,其进程属主为原程序文件的属主。
权限设定:
赋权:
chmod u+s file...
chmod 4755 file...
取消赋权:
chmod u-s file...
chmod 0755 file...
SGID:
示例目录:/tmp
1.作用在二进制程序上时:
(1)执行该程序的用户将会继承程序所属组的权限。
(2)启动为进程之后,其进程的属组为原程序文件的属组
2.作用在目录上时:
(1)普通用户在此目录下新建的文件,都将会继承目录的属组。
权限设定:
赋权:
chmod g+s file...
chmod 2755 file...
取消赋权:
chmod 0755 file...
chmod g-s file...
sticky:
1.只能作用在目录上(作用在文件上无意义)
2.具有sticky权限的目录,普通用户不能删除文件,仅文件所有者可以删除。
权限设定:
赋权:
chmod o+t dir...
chmod 1755 dir..
取消赋权:
chmod 0755 dir...
chmod o-t dir...
chattr : 锁定指定的文件
+ : 在原有基础上追加参数
- : 在原有基础上移除参数
= : 设定为指定参数
i : 锁定文件,不能修改或者删除。
a : 只能向文件中添加数据
A : 禁止修改atime
#=================================================================
三、ACL:访问控制表
ALC:Access Control List,访问控制表
除文件的所有者,所属组和其他人,可以对更多的用户设定权限
ACL权限生效顺序:
所有者 >(自定义用户> 所属组,自定义组) > 其他人
括号外的用户不收mask影响getfacl : 查看ACL信息
setfacl : 设置ACL
getfacl:
getfacl FILE...
user:USERNAME:MODE
group:GROUPNAME:MODE
setfacl:
-m : 设置acl参数
-m u:user_name:mode file|dir
-m g:group_name:mode dir
-x : 取消acl参数
-x u:user_name file|dir
-x g:group_name file|dir
-b : 取消全部的ACL权限
-R :递归
#=================================================================