Linux文件权限管理
Linux程序访问文件时的权限,却决于此程序的发起者
进程的发起者,同文件的属主;则应用文件属主权限
进程的发起者,属于文件属组;则应用文件属组权限
应用文件“其他”权限
1、文件权限说明
owner 属主,u
group 属组,g
other 其他,o
1.2设置文件的所有者chown
chown命令可以修改文件的属主,也可以修改文件属组
格式
chown [OPTION]... [OWNER][:[GROUP]] FILE...
chown [OPTION]... --reference=RFILE FILE...
用法说明
OWNER 只修改所有者 OWER:GROUP 同时修改所有者和属组 :GROUP 只修改属组,冒号也可用 . 替换 --reference=RFILE 参考指定的属性,来修改 -R 递归,系选项慎用,非常危险;
1.3.1对文件的权限
r 可使用文件查看类工具,比如cat,可以获取内容
w 可修改其内容
x 可以把此文件提请内核启动为一个进程,即可以执行。此文件的内容必须时可执行(例如:脚本文件等)
1.3.2对目录的权限
r 可以使用ls查看此目录中文件列表
w 可在此目录中创建文件,也可删除此目录中的文件,而和此被删除的文件的权限无关
x 可以cd进入此目录,可以使用ls -l 查看此目录中文件元数据(须配合r权限),属于目录的可访问的最小权限
数学法的权限
权限项 | 文件类型 | 读 | 写 | 执行 | 读 | 写 | 执行 | 读 | 写 | 执行 |
字符表示 | d|l|c|s|p | r | w | x | r | w | x | r | w | x |
数字表示 | 4 | 2 | 1 | 4 | 2 | 1 | 4 | 2 | 1 | |
权限分配 |
文件所有者权限 (属主)u |
文件所属组权限 (属组)g |
其他用户权限o |
八进制数字
权限 | 二进制 | 八进制 |
--- | 000 | 0 |
--x | 001 | 1 |
-w- | 010 | 2 |
-wx | 011 | 3 |
r-- | 100 | 4 |
r-x | 101 | 5 |
rw- | 110 | 6 |
rwx | 111 | 7 |
例如
r w - r - - - - - 640 r w x r - x r - x 755
1.4修改文件权限chmod
格式
chmod [OPTION]... MODE[,MODE]... FILE... chmod [OPTION]... OCTAL-MODE FILE... chmod [OPTION]... --reference=RFILE FILE...
说明:
who:u,g,o,a(a包含全部:u,g,o) |
opt:+,-,= |
permission:r,w,x |
修改指定一类用户的所有权限 |
u= g= o= ug= a= u=,g= |
修改指定一类用户某个或某个权限 |
u+ u- g+ g- o+ o- a+ a- |
-R:递归修改权限,一般用于修改目录 |
1.5ACL权限功能
ACL:实现灵活的权限管理;除了文件的所有者
setfacl 可设置ACL权限 setfacl -m u:用户:权限 FLIENAME #\\无视文件属主和属组,对用户在此文件的权限设置 getfacl 可查看设置的ACL权限 getfacl FILENAME setfacl -b FLIENAME 删除所有用户在此文件的ACL权限
mask 权限
mask只影响除所有者和other的之外的人和组的最大权限
mask需要与用户的权限进行逻辑与运算后,才能变成有限的权限(Effective Permission)
用户或组的设置必须存在于mask权限设定范围内才会生效
setfacl -m mask::rx file
1.6 设定文件特殊属性
设置文件的特殊属性,可以访问root误操作删除或修改文件
不能删除,改名,更改
chattr +i file \\增加特殊权限
chattr -i file \\删除对应特殊权限
只能追加内容,不能删除,改名
chattr +a file \\增加特殊权限
chattr -a file \\增加特殊权限
显示特定属性
lsattr
作业练习
5、创建用户user1、user2、user3。在/data/下创建目录test
(1)、目录/data/test属主、属组为user1
(2)、在目录属主、属组不变的情况下,user2对文件有读写权限
设置ACL权限
对test目录访问,目录下读写文件
(3)、user1在/data/test目录下创建文件a1.sh, a2.sh, a3.sh, a4.sh,设置所有用户都不可删除1.sh,2.sh文件、除了user1及root之外,所有用户都不可删除a3.sh, a4.sh
设置所有用户不能删除a1.sh, a2.sh
除了user1及root之外,所有用户都不可删除a3.sh, a4.sh
-rw-rw-r--. 1 user1 user1 0 Apr 10 16:58 a3.sh -rw-rw-r--. 1 user1 user1 0 Apr 10 16:47 a4.sh 其他用户的权限是 r-- user3 本就没有执行权限,无法做删除操作。不做修改
user1:a3.sh, a4.sh文件,属主和主组都是user1 ,都有读写权限,可以删除
root管理员:root拥有所有用户文件的最高权限,a3.sh, a4.sh 也没有chattr特殊权限。可以删除
user2对test目录有ACL权限,user2有权限删除,a3.sh, a4.sh
解决方法
去除 user2 ACL的写权限, mask权限是ACL权限的上限,修改mask权限为rx,user2的ACL
权限就同步mask权限,没了 w 读权限
(4)、user3增加附加组user1,同时要求user1不能访问/data/test目录及其下所有文件
(5)、清理/data/test目录及其下所有文件的acl权限