关于Linux中权限列中的加号及点的深度探索

版权声明:本文为耕耘实录原创文章,各大自媒体平台同步更新。欢迎转载,转载请注明出处,谢谢

一、综述

Linux中,ls -l命令可谓是最常用不过了。命令显示结果中的第一列也是我们比较关注的地方,一般说法是表示权限的字符占10个位置。可是,我们也经常看到在这一列中第十一个位置也有内容显示,最常见的非那个点(.)莫属了,还有加号(+)也会出现在这个位置,这到底是怎么回事呢?让我们亲手来实践一下吧?

二、关于权限列内的点(.)

2.1 让我们来看一下根目录。

[root@DCGH ~]# ls -lZ /
lrwxrwxrwx. root      root      system_u:object_r:bin_t:s0       bin -> usr/bin
dr-xr-xr-x. root      root      system_u:object_r:boot_t:s0      boot
drwxr-xr-x. root      root      system_u:object_r:device_t:s0    dev
drwxr-xr-x. root      root      system_u:object_r:etc_t:s0       etc
drwxr-xr-x. root      root      system_u:object_r:home_root_t:s0 home
lrwxrwxrwx. root      root      system_u:object_r:lib_t:s0       lib -> usr/lib
lrwxrwxrwx. root      root      system_u:object_r:lib_t:s0       lib64 -> usr/lib64
drwxr-xr-x. root      root      system_u:object_r:mnt_t:s0       media
drwxr-xr-x. root      root      system_u:object_r:mnt_t:s0       mnt
drwxr-xr-x. root      root      system_u:object_r:usr_t:s0       opt
dr-xr-xr-x. root      root      system_u:object_r:proc_t:s0      proc
dr-xr-x---. root      root      system_u:object_r:admin_home_t:s0 root
drwxr-xr-x. root      root      system_u:object_r:var_run_t:s0   run
lrwxrwxrwx. root      root      system_u:object_r:bin_t:s0       sbin -> usr/sbin
drwxr-xr-x. root      root      system_u:object_r:var_t:s0       srv
dr-xr-xr-x. root      root      system_u:object_r:sysfs_t:s0     sys
drwxrwxrwt. root      root      system_u:object_r:tmp_t:s0       tmp
drwxr-xr-x. root      root      system_u:object_r:usr_t:s0       usr
drwxr-xr-x. root      root      system_u:object_r:var_t:s0       var

2.2 在HOME目录分别创建一个文件和目录,观察权限了第十一个位置的详细情况。

[root@DCGH ~]# touch DCGH
[root@DCGH ~]# mkdir DCGH-DIR
[root@DCGH ~]# ls -l
总用量 0
-rw-r--r--. 1 root root 0 3月  28 10:23 DCGH
drwxr-xr-x. 2 root root 6 3月  28 10:24 DCGH-DIR

2.3 查看本机SELinux状态,并列举本目录下文件和目录关于SELinux的基本情况。

[root@DCGH ~]# getenforce 
Enforcing
[root@DCGH ~]# ls -lZ
-rw-r--r--. root root unconfined_u:object_r:admin_home_t:s0 DCGH
drwxr-xr-x. root root unconfined_u:object_r:admin_home_t:s0 DCGH-DIR

3.4 关闭SELinux,再创建实验文件和目录,再次列举本目录及根下文件和目录关于SELinux的基本情况。

[root@DCGH ~]# sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config 
[root@DCGH ~]# reboot
[root@DCGH ~]# getenforce 
Disabled
[root@DCGH ~]# ls -lZ
-rw-r--r--. root root unconfined_u:object_r:admin_home_t:s0 DCGH
drwxr-xr-x. root root unconfined_u:object_r:admin_home_t:s0 DCGH-DIR
[root@DCGH ~]# touch DCGH-later
[root@DCGH ~]# mkdir DCGH-later-dir
[root@DCGH ~]# ls -lZ
-rw-r--r--. root root unconfined_u:object_r:admin_home_t:s0 DCGH
drwxr-xr-x. root root unconfined_u:object_r:admin_home_t:s0 DCGH-DIR
-rw-r--r--  root root ?                                DCGH-later
drwxr-xr-x  root root ?                                DCGH-later-dir
[root@DCGH ~]# ls -lZ /
lrwxrwxrwx. root root system_u:object_r:bin_t:s0       bin -> usr/bin
dr-xr-xr-x. root root system_u:object_r:boot_t:s0      boot
drwxr-xr-x  root root ?                                dev
drwxr-xr-x. root root system_u:object_r:etc_t:s0       etc
drwxr-xr-x. root root system_u:object_r:home_root_t:s0 home
lrwxrwxrwx. root root system_u:object_r:lib_t:s0       lib -> usr/lib
lrwxrwxrwx. root root system_u:object_r:lib_t:s0       lib64 -> usr/lib64
drwxr-xr-x. root root system_u:object_r:mnt_t:s0       media
drwxr-xr-x. root root system_u:object_r:mnt_t:s0       mnt
drwxr-xr-x. root root system_u:object_r:usr_t:s0       opt
dr-xr-xr-x  root root ?                                proc
dr-xr-x---. root root system_u:object_r:admin_home_t:s0 root
drwxr-xr-x  root root ?                                run
lrwxrwxrwx. root root system_u:object_r:bin_t:s0       sbin -> usr/sbin
drwxr-xr-x. root root system_u:object_r:var_t:s0       srv
dr-xr-xr-x  root root ?                                sys
drwxrwxrwt. root root system_u:object_r:tmp_t:s0       tmp
drwxr-xr-x. root root system_u:object_r:usr_t:s0       usr
drwxr-xr-x. root root system_u:object_r:var_t:s0       var

通过上面的例子,我们可以看出来,这个点(.)不是没有用的,而是作用巨大,我们平时没怎么注意而已。开启SELinux后创建的文件和目录都会在权限列显示这个点的,关闭SELinux后创建的文件和目录在权限列是不会显示这个点的,之前创建的文件或目录保持不变。

三、关于权限列的加号(+)

3.1 了解过Linux中ACL权限设置的朋友对于这个加号肯定不陌生。不过还是让我们通过实验来验证一下。

[root@DCGH ~]# setfacl -m u:dcgh:rwx *
[root@DCGH ~]# ls -lZ
-rw-rwxr--+ root root unconfined_u:object_r:admin_home_t:s0 DCGH
drwxrwxr-x+ root root unconfined_u:object_r:admin_home_t:s0 DCGH-DIR
drwxrwxr-x+ root root ?                                DCGH-DIR-later
-rw-rwxr--+ root root ?                                DCGH-later
[root@DCGH ~]# setfacl -b *
[root@DCGH ~]# ls -lZ
-rw-r--r--. root root unconfined_u:object_r:admin_home_t:s0 DCGH
drwxr-xr-x. root root unconfined_u:object_r:admin_home_t:s0 DCGH-DIR
drwxr-xr-x  root root ?                                DCGH-DIR-later
-rw-r--r--  root root ?                                DCGH-later

我们可以看到,加了ACL权限控制之后,之前具有SELinux属性的文件和目录的权限列最后一个位置全部变成了加号(+)。移除原来的ACL权限之后,恢复原样。

四、总结

4.1 Linux权限列的点不是无意义字符。在开启SELinux的情况下创建的目录和文件有具有这个点,权限列有这个点说明该目录或文件以及设置了SELinux相关的权限。在禁用SELinux权限之后,在之前开启SELinux权限时创建的文件或目录保持原来的权限不变,权限列的点依然显示。新创建的目录或文件在权限列无这个点显示。

4.2 权限列中最后一个位置如果是加号,说明这个目录或文件已经设置了ACL权限相关的内容。如果加号存在,则已经有点的目录或文件,点的显示会被覆盖,但原来的SELinux属性保持不变。

4.3 官方一点的说法:点表示该文件具有SELinux安全上下文,加号表示该文件配置了ACL权限,加号不会覆盖SELinux控制。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏liulun

【JAVA WEB教程】jsp环境搭建+部署网站(eclipse+tomcat)【详细+图文】

下载tomcat7.X ? 下载地址为:http://tomcat.apache.org/download-70.cgi 下载完成之后就开始安装 ? Next ...

8628
来自专栏Linyb极客之路

网络编程之抓包工具Fiddler入门

1)要使用Fiddler进行抓包,首先需要确保Capture Traffic是开启的(安装后是默认开启的),勾选File->Capture Traffic,也可...

2193
来自专栏smy

jquery及原生javascript对jsonp解决跨域问题实例详解

jquery方式 ---- 前端: $.ajax({ url: 'http://m.xxx.tv/goLottery', ...

4157
来自专栏Android干货

eclipse显示代码行数

2849
来自专栏流柯技术学院

VMware安装CentOS时,无法以图形界面安装解决办法

4692
来自专栏程序员的碎碎念

微信小程序二维码实例开发

开始 小编初学微信小程序,想做一个二维码生成器;作为一个小白,踩了不少坑,在这里分享给大家“如何在微信小程序上生成二维码”。 步骤 就像写前端代码一样,html...

5695
来自专栏守望轩

Visual Studio 2008 每日提示(十七)

#161、在解决方案里显示(或不显示)编辑器中打开的文件 原文链接:How to have the Solution Explorer always show...

3568
来自专栏十月梦想

HTML5新增表单类型

HTML5新增了input更多类型的框,如颜色,邮箱,多文件还有对正则表达式的支持!

1223
来自专栏Jerry的SAP技术分享

如何在Chrome development tool里查看C4C前台发送的请求细节

我们可以在Chrome development tool的network tab里观察到从前台UI发送到后台的HTTP请求:

3514
来自专栏kalifaの日々

window下用pin安装flask步骤及import flask报错的解决方案

安装过程: 1.下载get-pip.py,下载路径并不重要 不用放到Python安装目录里。 2.打开下载路径 python get-pip.py 运行这个py...

3937

扫码关注云+社区

领取腾讯云代金券