[Linux服务器] linux 文件权限 加号,Linux中权限列中的加号及点的深度解读

111 0
Honkers 4 小时前 | 显示全部楼层 |阅读模式

原标题: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--. 1root root 03月 2810: 23DCGH

drwxr-xr-x. 2root root 63月 2810: 24DCGH-DIR

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

[root@DCGH ~]# getenforce

Enforcing

[root@DCGH ~]# ls-lZ

-rw-r--r--. rootrootunconfined_u:object_r:admin_home_t:s0DCGH

drwxr-xr-x. rootrootunconfined_u:object_r:admin_home_t:s0DCGH-DIR

2.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-mu:dcgh:rwx*

[root@DCGH ~]# ls-lZ

-rw-rwxr--+ rootrootunconfined_u:object_r:admin_home_t:s0DCGH

drwxrwxr-x+ rootrootunconfined_u:object_r:admin_home_t:s0DCGH-DIR

drwxrwxr-x+ rootroot? DCGH-DIR-later-rw-rwxr--+ rootroot? DCGH-later

[root@DCGH ~]# setfacl-b*

[root@DCGH ~]# ls-lZ

-rw-r--r--. rootrootunconfined_u:object_r:admin_home_t:s0DCGH

drwxr-xr-x. rootrootunconfined_u:object_r:admin_home_t:s0DCGH-DIR

drwxr-xr-xrootroot? DCGH-DIR-later-rw-r--r--rootroot? DCGH-later

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

四、总结

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

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

责任编辑:

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

中国红客联盟公众号

联系站长QQ:5520533

admin@chnhonker.com
Copyright © 2001-2026 Discuz Team. Powered by Discuz! X3.5 ( 粤ICP备13060014号 )|天天打卡 本站已运行