权限管理是Linux中一个十分重要的概念,也是系统安全性的重要保障。
一、基本权限
用户对文件拥有所有者,所属组和其他人三个身份,每个身份都有读写执行三个权限。
-rw-r--r--:第一个"-"位置是代表文件类型的。
文件权限前的第一个字母用来标识文件类型:
-:一般文件
d:目录文件
b:块设备文件
c:字符设备文件
l:链接文件
p:人工管道
常见的为-,d,I
rw- r-- r-- :文件权限
u g o
u所有者,g所属组,o其他人
r读 w写 x执行 -不具有权限
8进制数值表示方法
r:4
w:2
x: 1
如:-rw- r-- r--的意思就是这个文件的类型是一般文件,文件本身所在的用户可读可写不可执行,所在的组可读,不可写不可执行,其他用户可读,不可写不可执行。
权限管理命令
chmod 改变文件或目录权限
英语原意:change the permissions mode of a file
语法:1、chmod【ugoa】【+-=】【rwx】【文件或目录】
执行权限:文件所有者和root用户
2、权限的数字表示
chmod 【421】【文件或目录】
r——4
w——2
x——1
chown 更该文件或目录的所有者
英语原意:chamge file ownership
执行权限:root
语法:chown 【用户】【文件或目录】
chgrp 改变文件或目录的所属组
英语原意:change file froup ownnership
执行权限:root
语法:chgrp【用户组】【文件或目录】
二、默认权限
umask 显示、设置文件的缺省权限
英语原意:the user file-creation mask
语法:umask【选项】
执行权限:root
-S 以rwx形式显示新建文件缺省权限
看到目录默认的权限和umask -S的权限一致,touch的权限每位比umask -S显示的权限少一个x权限,在linux会把任何一个新建的文件的可执行权限去掉(基于安全性考虑),所以也是和umask -S的权限是一样的
直接输入umask,得到0022,第一个0是特殊权限,后三位代表正常权限,表示拥有者,所属组,其他用户,但其实真正的权限是777-022=755,所以是rwxr-xr-x
设置默认权限为754,应由777-754=023
umask 023,但不建议更改,默认的权限是比较合理的
三、ACL权限
有时候,所有者,所属组,其他人三个身份的权限是770,假如想要某一个用户的身份为5,那么这些身份权限就满足不了要求了,就要使用到ACL权限了。
ACL权限
需要文件所在的分区支持ACL权限
查看分区ACL权限是否开启
dumpe2fs -h /dev/sda3
dumpe2fs命令是查询指定分区详细文件系统信息额命令
-h 仅显示超级块中信息,而不显示磁盘块组的详细信息
df 查看分区使用状况,查看到/为/dev/sda3
默认挂载选项,支持ACL,默认都开启了ACL。
若没有开启
临时开启分区ACL权限
mount -o remount,acl/ 重新挂载跟分区,并挂载加入acl权限
永久开启分区ACL权限
vim /etc/fstab 是系统开机自动挂载文件
在defaults后加,acl,重启系统或重新挂载文件系统就可以了,当然,在默认的情况下,本身就支持acl的。
查看与设定acl权限
getacle 文件名 查看acl权限
setfacl 【选项】 文件名 设定ACL权限
-m 设定ACL权限
-x 删除指定的ACL权限
-b 删除所有的ACL权限
-d 设定默认ACL权限
-k 删除默认ACL权限
-R 递归设定ACL权限
setfacl -m u:test:rx //root/wt/ u/g
为给用户/组分配acl,test为用户名,rx为写执行权限,/root/wt为文件名)
可以看到,权限后面多了个+号,然后使用getfacl查看acl权限,可以看到user:test:r-x
最大有效ACL权限与删除ACL权限
mask是用来指定最大有效权限的。如果我给用户赋予了ACL权限,是需要和mask的权限“相与”才能得到用户的真正权限。
相与就是逻辑运算两个都为真才为真,如user的读r权限和mask的读r权限相与为读权限,若其中任何一个为-权限,则结果就为-权限。
上面用setfacl -m u来指定用户,用m来指定mask的权限
当然,mask设置成了rwx权限,任何权限与他相与,都是本身,所以默认的mask权限是合理的。
删除ACL权限
setfacl -x u:用户名 文件名 删除指定用户的ACL权限
setfacl -b 文件名 删除文件的所有的ACL权限
默认ACL权限和递归ACL权限
递归ACL权限:递归是父目录在设定ACL权限时,所有的子文件和子目录也会拥有相同的ACL权限。之前所说的命令,也有递归的概念,比如mkdir和rm的时候。
setfacl -m u:用户名:权限 -R文件名
但是新建的文件不是拥有ACL权限。
默认ACL权限
默认ACL权限的作用是如果给父目录设定了默认ACL权限,那么父目录中所有新建的子文件都会继承父目录的ACL权限。
setfacl -m d:u:用户名:权限 文件名