【Linux】关于ls -l查看文件权限列末尾的加号及点
一、背景
这两天用脚本测试hadoop,几个命令测试失败,查看脚本发现,问题在于权限比对,生成文件权限末尾多了个点号。我用的系统是Centos7.4,问了几个同事都不了解,有的虚拟机上没有点,有的有,还有出现过x的。
二、第十一位
找了资料发现,原来新版ls 把acl和selinux属性加进去了,与系统无关。新版的ls,用12字符长度的字符数组来记录文件权限,前十位和老版一样,第一位表示类型,后九位表示权限,第十一位表示acl和selinux设置,最后一个是C的结尾符\0。
三、关于(.)
查看selinux状态 getenforce
当selinux开启后,创建的文件和目录都会在权限列显示这个(.),关闭Selinux后,创建的文件和目录在权限列不会显示点,之前创建的文件和目录保持不变。
在/etc/sysconfig/selinux中设置Selinux状态,重启后生效。
三、关于(+)
加了ACL权限控制后,之前具有Selinux属性的文件(夹)和目录的权限列最后一个位置会变成加号+。移除ACL权限,恢复原样
四、总结
4.1 Linux权限列的点不是无意义字符。在开启SELinux的情况下创建的目录和文件有具有这个点,权限列有这个点说明该目录或文件以及设置了SELinux相关的权限。在禁用SELinux权限之后,在之前开启SELinux权限时创建的文件或目录保持原来的权限不变,权限列的点依然显示。新创建的目录或文件在权限列无这个点显示。
4.2 权限列中最后一个位置如果是加号,说明这个目录或文件已经设置了ACL权限相关的内容。如果加号存在,则已经有点的目录或文件,点的显示会被覆盖,但原来的SELinux属性保持不变。
4.3 官方一点的说法:点表示该文件具有SELinux安全上下文,加号表示该文件配置了ACL权限,加号不会覆盖SELinux控制。
参考文章 https://cloud.tencent.com/developer/article/1375123
http://blog.chinaunix.net/uid-14735472-id-3359580.html?_t=t