1.文件权限
文件权限主要是针对三类对象进行定义的:
owner:属主,u
group:属组,g
other:其他,o
每个文件针对每个类定义了三种权限:
readable: r
writable: w
excutable:x
三种文件权限:
r: 可使用文件查看类工具获取其内容
w: 可修改其内容
x: 可以把此文件提请内核启动为一个进程
三种目录权限:
r: 可以使用ls查看此目录中文件列表
w: 可在此目录中创建文件,也可删除此目录中的文件
x: 可以使用ls -l查看此目录中文件列表,可以cd进入此 目录
X:只给目录x权限,不给文件x权限
2.目录权限:
[[email protected] ~]# ll -d luyubo
drwxr-xr-x 2 root root 4096 Aug 4 13:48 luyubo
d表示文件类型
rwxr-xr-x 每三个一组
rwx表示所属用户权限
r-x表示所属组的权限
r-x表示其他用户权限
2表示引用连接数
root表示所属用户
root表示所属组
4096表示文件大小
Aug 4 13:48表示时间
luyubo表示目录
3.chmod命令:
用法:chmod [选项]... 模式[,模式]... 文件...
或:chmod [选项]... 八进制模式 文件...
或:chmod [选项]... --reference=参考文件 文件...
修改一类用户的所有权限: u= g= o= ug= a= u=,g=
修改一类用户某位或某些位权限 u+ u- g+ g- o+ o- a+ a- +
将每个文件的模式更改为指定值。
-c, --changes 类似 --verbose,但只在有更改时才显示结果
--no-preserve-root 不特殊对待根目录(默认)
--preserve-root 禁止对根目录进行递归操作
-f, --silent, --quiet 去除大部份的错误信息
-v, --verbose 为处理的所有文件显示诊断信息
--reference=参考文件 使用指定参考文件的模式,而非自行指定权限模式
-R, --recursive 以递归方式更改所有的文件及子目录
--help 显示此帮助信息并退出
--version 显示版本信息并退出
chown 设置文件的所有者
[[email protected] ~]# chown luyubo luyubo
4.chgrp命令使用方法
用法:chgrp [选项]... 用户组 文件...
或:chgrp [选项]... --reference=参考文件 文件...
将每个指定文件的所属组设置为指定值。
如果使用 --reference,则将每个文件的所属组设置为与指定参考文件相同。
-c, --changes 类似 --verbose,但只在有更改时才显示结果
--dereference 影响符号链接所指示的对象,而非符号链接本身(默认值)
-h, --no-dereference 会影响符号链接本身,而非符号链接所指示的目的地
(当系统支持更改符号链接的所有者时,此选项才有用)
--no-preserve-root 不特殊对待"/"(默认值)
--preserve-root 不允许在"/"上递归操作
-f, --silent, --quiet 去除大部份错误信息
--reference=RFILE 使用参考文件的所属组,而非指定值
-R, --recursive 递归处理所有的文件及子目录
-v, --verbose 为处理的所有文件显示诊断信息
以下选项是在指定了 -R 选项时被用于设置如何穿越目录结构体系。
如果您指定了多于一个选项,那么只有最后一个会生效。
-H 如果命令行参数是一个通到目录的符号链接,则遍历符号链接
-L 遍历每一个遇到的通到目录的符号链接
-P 不遍历任何符号链接(默认)
--help 显示此帮助信息并退出
--version 显示版本信息并退出
chgrp 设置文件的属组信息
[[email protected] ~]# chgrp luyubo luyubo
5.默认权限介绍
umask值 可以用来保留在创建文件权限
新建FILE权限: 666-umask 如果所得结果某位存在执行(奇数)权限,则将其权限+1
新建DIR权限: 777-umask
非特权用户umask是 002 权限是:775
root的umask 是 022 权限是:755
因为root权限太大,风险是很大的,所以默认权限是低于普通用户的
umask: 查看当前mask值 #执行结果是:022
umask #: 例如 umask 023 权限是754
umask –S 模式方式显示 #大s以字母方式显示
umask –p 输出可被调用 #执行结果是:umask 022
全局设置: /etc/bashrc 用户设置:~/.bashrc
6.Linux文件系统上的特殊权限
1.SUID,SGID,Sticky
三种常用权限:r, w, x user, group, other
安全上下文
前提:进程有属主和属组;文件有属主和属组
(1) 任何一个可执行程序文件能不能启动为进程:取决发起者 对程序文件是否拥有执行权限
(2) 启动为进程之后,其进程的属主为发起者;进程的属组为 发起者所属的组
(3) 进程访问文件时的权限,取决于进程的发起者
(a) 进程的发起者,同文件的属主:则应用文件属主权限
(b) 进程的发起者,属于文件属组;则应用文件属组权限
(c) 应用文件“其它”权限
2.SUID:
1.任何一个可执行程序文件能不能启动为进程:取决发起者对 程序文件是否拥有执行权限
2.启动为进程之后,其进程的属主为原程序文件的属主
3.SUID只对二进制可执行程序有效
4.SUID设置在目录上无意义
权限设定: chmod u+s FILE... chmod u-s FILE...
例如:设置二进制程序echo的属主权限
[[email protected] ~]# chmod u+s /bin/echo
3.SGID:
1.任何一个可执行程序文件能不能启动为进程:取决发起者对 程序文件是否拥有执行权限
2.启动为进程之后,其进程的属主为原程序文件的属组
3.权限设定: chmod g+s FILE... chmod g-s FILE...
例如:设置二进制程序echo的属组权限
[[email protected] ~]# chmod g+s /bin/echo
4.SUID:user,占据属主的执行权限位 s:属主拥有x权限 S:属主没有x权限
4.目录SGID:
1.默认情况下,用户创建文件时,其属组为此用户所属的主组
2.一旦某目录被设定了SGID,则对此目录有写权限的用户在此 目录中创建的文件所属的组为此目录的属组
3.通常用于创建一个协作目录
4.权限设定: chmod g+s DIR... chmod g-s DIR...
例如:设置/data/testdir/目录内所有新建文件为g1组。
[[email protected] data]# chgrp g1 testdir/
[[email protected] data]# chmod g+s testdir/
5.SGID:group,占据属组的执行权限位 s:group拥有x权限 S:group没有x权限
5.Sticky位:
1.具有写权限的目录通常用户可以删除该目录中的任何 文件,无论该文件的权限或拥有权
2.在目录设置Sticky位,只有文件的所有者或root可 以删除该文件
3.sticky设置在文件上无意义
4.权限设定: chmod o+t DIR... chmod o-t DIR...
5.例如:我们bo目录加上t权限:
[[email protected] home]# chmod o+t bo/
[[email protected] home]# ll -d bo/
drwxrwxrwt 2 root root 4096 8月 4 20:58 bo/
切换用户至tom尝试删除目前内的文件是没有权限,但是我们的权限是777,这就是sticky的作用
6.Sticky: other,占据other的执行权限位 t: other拥有x权限 T:other没有x权限
7.文件特定属性
1.chattr +i 不能删除,改名,更改
2.chattr +a 只能增加
3.lsattr 显示特定属性
8.访问控制列表acl
1.ACL:Access Control List,实现灵活的权限管理
2.除了文件的所有者,所属组和其它人,可以对更多的用户设 置权限
3.CentOS7.0默认创建的xfs和ext4文件系统有ACL功能。
4.CentOS7.X之前版本,默认手工创建的ext4文件系统无ACL功能。需手动增加:tune2fs –o acl /dev/sdb1 mount –o acl /dev/sdb1 /mnt
5.ACL生效顺序:属主,自定义FACL属主,属组,自定义FACL属组,其他人
6.ACL命令:
getfacl 查看acl
setfacl -x删除权限
setfacl -b彻底清空文件上面的acl
setfacl -d设置默认acl权限,新建文件生效
setfacl -k删除设置默认acl权限
setfacl -m u:::rw file设置所有者权限
setfacl -m m:::rw file设置mask 权限
设置mask,只影响除所有者和other,其他权限不能比mask高,或者相等
设置acl之后 所属组权限就不是组权限了,就是mask权限了
7.ACL文件上的group权限是mask 值(自定义用户,自定义组 ,拥有组的最大权限),而非传统的组权限
8.getfacl 可看到特殊权限:flags
9.默认ACL权限给了x,文件也不会继承x权限。 ?base ACL 不能删除
10.setfacl -k dir 删除默认ACL权限
11.setfacl -b file1清除所有ACL权限
12. mask只影响除所有者和other的之外的人和组的最大权限 Mask需要与用户的权限进行逻辑与运算后,才能变成有限的权限 (Effective Permission) 用户或组的设置必须存在于m ask权限设定范围内才会生效。 setfacl -m mask::rx file
13. --set选项会把原有的ACL项都删除,用新的替代,需要注意的 是一定要包含UGO的设置,不能象-m一样只是添加ACL就可以.
例如:
[[email protected] home]# setfacl --set u::rw,u:tom:rw,g::r,o::- bo/
9.备份和恢复ACL
1.主要的文件操作命令cp和mv都支持ACL,只是cp命令需要 加上-p参数。但是tar等常见的备份工具是不会保留目录 和文件的ACL信息
[[email protected] data]# getfacl -R testdir/ > acl.txt
[[email protected] data]# setfacl -R -b testdir/
[[email protected] data]# setfacl -R --set-file=acl.txt testdir/
[[email protected] data]# getfacl -R testdir/