在linux服务器日常管理中,我们会经常管理查看文件或者文件夹的权限内容以保证服务的正常运行。
今天就和大家聊聊文件权限的那些事。
查看文件的权限情况可以用 ll 命令
例:
可以看到如:
drwx-r–r– (一共10个参数) 表示文件所属组和用户的对应权限。
第一个参数d属于特殊权限,与chmod无关,我们下次再说。其中
第2-4个参数:属于user (所有者)
第5-7个参数:属于group (所属组)
第8-10个参数:属于others (其他)
接下来就简单了:r==>可读; w==>可写; x==>可执行
r=4 w=2 x=1
所以755代表 rwxr-xr-x
所有者具有读写执行权限,所属组具有读和执行权限,其他人只有执行权限。
所以用chmod命令改变文件权限时
chmod 777 /文件名/ #代表 rwxr-rwx-rwx 所有用户都可读可写可执行。
当然chmod还有其他用法,如:
这时候你可能要问了,如何判断一个文件的user和group呢?
其实很简单,以下面代码为例
drwxrwsrwx 4 root root 4096 Jan 17 22:07 /kid/
标粗部分,第一个root代表user (所有者),第二个root代表group (所属组)
如果你想更改一个文件的group (所属组)也很简单,使用chown命令即可
chown root:kid /文件名/ #将此文件的所有者改为root,所属组改为kid组
上面我们讲了linux中文件权限的基础内容。下面我们深入的了解一下文件权限的内容:ACL
第一个问题:ACL是什么?
用通俗的话来说就是:本来对于一个文件/目录来说,只有三种人,user、group、other,现在来了第四个人,但是我要给他的权限与前三个不一样,所以,这时候我就要用到ACL,额外给他一个不一样的权限。
第二个问题:如何使用ACL?
在使用ACL之前,我们需要查看文件所在的分区是否支持ACL权限。因为ACL权限的使用需要分区的支持。
如何查看分区是否支持ACL权限?
dumpe2fs -h /dev/vda1
-h 仅显示超级块中的信息,而不显示磁盘块组的详细信息。
看到红框内的内容,就代表此分区支持acl权限,一般来说也是默认支持的。
这里再告诉大家一个查看系统分区的命令
df -h #查看系统分区
那么如果万一分区不支持ACL怎么办?
有两种方法
第一种:临时开启ACL
mount -o remount,acl / 重新挂载根分区,并加入acl权限
第二种:永久开启ACL
vim /etc/fstab
/dev/vda1 / ext3 defaults,acl 1 1 #在ext3(文件系统)后一列加上,acl即可永久开启ACL
mount -o remount / # 重新挂载或重启使其生效
终于到设定ACL权限的环节了!
如何设定ACL权限?
acl操作基本命令:
setfacl 选项 文件名
-m 设定acl权限
-x 删除指定acl权限
-b 删除所有acl权限
-d 设定默认acl权限
-k 删除默认acl权限
-R 递归设定acl权限
具体操作示例:
使用getfacl命令查看acl权限
红框内可以看到kxkid用户已经获取到了读和执行权限
在上图,我们可以user下有一个mask设定,那么
在acl中mask是什么?
最大有效权限mask:mask是用来指定最大有效权限的。如果我给用户赋予了acl权限,是需要和mask权限“相与”才能得到用户的真正权限。
以上图为例,mask权限为r-x,那么,即使acl权限为rwx,与mask相与后,仍然只有r-x权限。
如何设定msak最大有效值?
setfacl -m m:rwx 文件名 #设定mask为rwx
其他setfacl命令示例:
提醒:若是在递归创建之后,在设定默认创建之前创建的新文件,则不受这两个的影响,需要单独设定
以上就是关于linux 文件权限和acl权限的所有内容,要想熟练使用,还需要自己多加练习!
下次有时间和大家聊一聊文件特殊权限的内容,希望大家喜欢
本文转载自腾云阁,已获得授权。