当前位置:首页 > Linux > 正文

linux下如何查看目录权限

在 Linux 中,使用 ls -ld 目录路径 命令可

Linux权限体系核心概念

Linux采用基于角色的访问控制(RBAC)模型,通过三元组(Owner/Group/Others)定义权限边界,每个目录具有以下三类主体对应的权限组合:
| 主体 | 缩写 | 典型场景 |
|————|——|——————————|
| 文件拥有者 | u | 创建文件的用户 |
| 用户组 | g | 同一组成员共享特定资源 |
| 其他用户 | o | 非本文件主且非同组的其他用户 |

1 权限类型与符号表示

每种主体可分配三种基本权限:

  • r (Read):允许读取目录内容(列举子项)
  • w (Write):允许修改目录内容(增删文件/子目录)
  • x (Execute):允许进入目录(访问其内部文件的前提)

典型权限字符串示例:drwxr-xr--
逐段解析如下:
| 位置 | 含义 | 当前值 | 说明 |
|——|———————|——–|——————————-|
| d | 文件类型标识 | 目录 | 表示这是一个目录而非普通文件 |
| rwx | 拥有者权限 | rwx | 可读、可写、可执行(即能进入)|
| r-x | 所属组权限 | r-x | 可读、不可写、可执行 |
| r- | 其他用户权限 | r- | 仅可读,不可写/执行 |

2 数字权限映射规则

除符号模式外,还可通过八进制数值表示权限:
| 权限类型 | r | w | x | 数值 |
|———-|—|—|—|——|
| r | 4 | 0 | 0 | 4 |
| w | 0 | 2 | 0 | 2 |
| x | 0 | 0 | 1 | 1 |

rwxr-xr-- 对应的数字值为 755(计算方式:4+2+1=7 → 拥有者;4+0+1=5 → 组;4+0+0=4 → 其他)。


查看目录权限的主流方法

1 ls -l 命令详解

这是最基础的查看方式,直接显示长格式信息:

ls -l /path/to/directory

输出示例:

drwxr-xr-2 root root 4096 Oct 15 14:30 mydir

关键字段解析:
| 字段 | 说明 |
|————|—————————————|
| d | 文件类型为目录 |
| rwxr-xr- | 权限字符串 |
| 2 | 硬链接数(通常目录≥2) |
| root | 拥有者用户名 |
| root | 所属组名 |
| 4096 | 目录大小(以字节为单位) |
| Oct 15 | 最后修改日期 |
| 14:30 | 最后修改时间 |
| mydir | 目录名称 |

linux下如何查看目录权限  第1张

进阶用法:结合通配符批量查看

ls -ld / # 查看所有一级目录的详细信息

2 stat 命令深度分析

stat 提供更详细的元数据信息,特别适合排查权限异常:

stat /path/to/directory

重点输出项:

Access: (0755/drwxr-xr-x)  Uid: ( 1000/ user)   Gid: ( 1000/ user)
Drwxr-xr-x: 这是完整的权限描述,包含数字和符号两种形式
Uid/Gid: 分别对应拥有者和所属组的ID号

该命令还会显示访问时间戳(Access/Modify/Change Time),这对审计非常有用。

3 namei 命令追踪路径解析

当需要验证完整路径中每个组件的权限时,namei 可逐级分解:

namei -m /home/user/docs/project

输出示例:

f: /home/user/docs/project
 drwxr-xr-x root root /home
 drwxr-xr-x user user /home/user
 drwxr-xr-x user user /home/user/docs
 drwxr-xr-x user user /home/user/docs/project

此命令能快速定位路径中是否存在无权访问的环节。

4 getfacl 查看扩展属性

若目录启用了ACL(Access Control List),需用此命令查看额外权限:

getfacl /path/to/directory

输出示例:

# file: /data/shared
# owner: owner
# group: developers
user::rwx
group::r-x
other::---
default:user::rw              # 新创建文件继承此权限
mask::rwx                       # 最大有效权限限制

注意:普通ls -l不会显示ACL信息,必须使用专用命令。


权限查看的实践场景与技巧

1 诊断权限拒绝问题

当出现”Permission denied”错误时,按以下步骤排查:

  1. 确认当前用户身份id 查看所属用户和组
  2. 逐级检查路径权限:使用namei -m定位断点
  3. 验证特殊权限位:检查是否有s(SUID/SGID)标记
    ls -l | grep '^..s' # 查找含特殊权限的文件/目录
  4. 检查SELinux上下文:在启用了SELinux的系统中,需同时满足策略约束
    ls -Z /path/to/directory # 显示SELinux标签

2 批量处理权限校验

对于大量目录的权限检查,可采用脚本自动化:

#!/bin/bash
for dir in /path/to/check/; do
    if [ ! -r "$dir" ]; then
        echo "无法读取: $dir" >> error.log
    fi
done

此脚本会遍历指定目录下的所有子目录,将不可读的目录记录到日志文件。

3 理解默认权限掩码(umask)

新建目录时的默认权限受umask影响,查看当前umask值:

umask # 输出类似 0022

计算公式:基础权限(777) ^ umask = 实际权限
例如umask=0022时,新目录的默认权限为755(即rwxr-xr-x)。


相关问答FAQs

Q1: 我设置了目录的写权限,为什么仍然无法删除内部文件?

A: Linux的删除操作需要同时满足两个条件:①对目录有写权限(w);②对目标文件有写权限,即使目录可写,若文件本身属于其他用户且未授予您写权限,仍无法删除,解决方案:要么获取文件的写权限,要么通过root用户强制删除。

Q2: 如何让新创建的子目录自动继承父目录权限?

A: 默认情况下,子目录不会继承父目录的权限,可通过两种方式实现:①设置setgid位(仅对目录有效):chmod g+s /parent_dir,使新创建的子目录继承父目录的组属性;②使用cp -a命令复制目录时保留所有属性;③在创建目录时显式设置权限:mkdir -m 755 new_dir,注意:setgid会影响所有新创建

0