Linux如何查看文件和目录的详细权限信息?

在Linux系统中,文件和目录的权限管理是保障系统安全的核心机制,通过合理的权限设置可以控制用户对资源的访问范围,查看权限是日常运维和开发中的基础操作,掌握多种查看方法能更高效地排查权限问题,本文将详细介绍Linux中查看权限的各类命令、权限表示方法及实际应用场景。

linux 如何查看权限

基础权限查看:ls命令

ls(list)是Linux中最常用的文件列表命令,通过组合不同选项可查看详细的权限信息。

基本语法与核心选项

执行ls -l(长格式输出)会显示文件的详细属性,输出结果通常包含7个字段,以-rwxr-xr-x为例,各字段含义如下:

  • 第1位:文件类型
    :普通文件
    d:目录
    l:符号链接
    b:块设备文件(如硬盘)
    c:字符设备文件(如键盘)
    p:管道文件
    s:套接字文件

  • 第2-10位权限位,分为3组,每组3位,分别代表所有者(User)所属组(Group)其他用户(Others)的权限:

    • r(read,读):可读取文件内容(文件)或列出目录内容(目录)
    • w(write,写):可修改文件内容(文件)或在目录中创建/删除文件(目录)
    • x(execute,执行):可执行文件(文件)或进入目录(目录)

    示例-rwxr-xr-x

    • 所有者:rwx(读、写、执行)
    • 所属组:r-x(读、执行)
    • 其他用户:r-x(读、执行)
  • 第11位:硬链接数(指向同一inode的文件数量)

  • 第12-13位:所有者(文件所属用户)

  • 第14-15位:所属组(文件所属用户组)

  • 第16-17位:文件大小(字节,默认显示数字,需-h选项转为人类可读格式,如0K

    linux 如何查看权限

  • 第18-19位:最后修改时间(格式为“月 日 时:分”或“年 月 日”取决于修改时间远近)

  • 第20位:文件名

常用ls选项组合

选项 功能描述 示例
-a 显示所有文件(包括隐藏文件,以开头) ls -la
-h 以人类可读格式显示文件大小(KMG ls -lh
-d 显示目录本身权限,而非目录内容 ls -ld /etc
-R 递归显示目录及其子目录内容 ls -R /var/log
-n 以数字形式显示UID(用户ID)和GID(组ID),而非用户名/组名 ls -ln

详细权限查看:stat命令

ls -l仅显示基础权限位,而stat命令可提供更详细的权限信息,包括访问时间、修改时间、状态改变时间等,并支持八进制权限表示。

基本语法

stat [选项] 文件/目录

输出解析

stat test.txt为例,关键输出字段:

  • Size:文件大小(字节)
  • Access:最后访问时间(atime)
  • Modify:最后修改时间(mtime,内容改变时更新)
  • Change:状态改变时间(ctime,权限、所有者等属性改变时更新)
  • Mode:权限信息,包含符号表示(如-rw-r--r--)和八进制表示(如0644

八进制权限表示

权限位可通过数字简化表示,规则为:

  • r = 4
  • w = 2
  • x = 1
  • 无权限 = 0

将所有者、所属组、其他用户的权限数字相加,得到八进制权限:
| 权限组合 | 所有者 | 所属组 | 其他用户 | 八进制 |
|———-|——–|——–|———-|——–|
| rwx | 4+2+1=7 | 4+2+1=7 | 4+2+1=7 | 777 |
| rw-r--r-- | 4+2+0=6 | 4+0+0=4 | 4+0+0=4 | 644 |
| rwxr-xr-x | 7 | 5 | 5 | 755 |

stat命令的Mode字段会直接显示八进制值(如0600),方便快速修改权限(如chmod 644 test.txt)。

特殊权限查看

除基础权限外,Linux还支持SUID、SGID、Sticky Bit三种特殊权限,它们通过权限位的st标识。

特殊权限类型

  • SUID(Set User ID):仅对可执行文件有效,执行时以文件所有者权限运行(如/usr/bin/passwd,所有者为root,普通用户执行时临时获得root权限修改密码)。
    • 权限位标识:所有者x位改为s(如rwsr-xr-x,八进制4755)。
  • SGID(Set Group ID):对可执行文件或目录有效,执行时以文件所属组权限运行;对目录有效,目录中新创建的文件自动继承目录所属组。
    • 权限位标识:所属组x位改为s(如rwxr-sr-x,八进制2755)。
  • Sticky Bit:仅对目录有效,目录中的文件仅所有者或root可删除(如/tmp,防止普通用户误删他人文件)。
    • 权限位标识:其他用户x位改为t(如rwxrwxrwt,八进制1777)。

查看特殊权限

  • ls -l:若权限位中有st(小写s表示x位正常,大写S表示x位被禁用),如chmod u=s test.txt(禁用x位后显示为rwS)。
  • stat:在Mode字段中明确标识,如Mode: (4755/-rwsr-xr-x) 1000000000000000000000000000000000000000,其中4代表SUID。

ACL(访问控制列表)权限查看

基础权限仅支持所有者、所属组、其他用户三类,ACL可针对特定用户或组设置更精细的权限。

linux 如何查看权限

查看ACL权限

使用getfacl命令:

getfacl [选项] 文件/目录

示例输出:

# file: test.txt
# owner: user1
# group: group1
# flags: -s-   # 表示启用SGID
user::rw-          # 所有者权限:读写
group::r--         # 所属组权限:读
other::r--         # 其他用户权限:读
user:user1:rw-     # 特定用户user1权限:读写
group:group1:rwx   # 特定组group1权限:读写执行

ACL生效条件

  • 文件系统需支持ACL(如ext4、xfs,通过mount | grep ext4查看是否包含acl选项)。
  • 需通过setfacl -m u:user1:rw test.txt手动设置ACL权限。

目录与文件权限的核心区别

目录的权限逻辑与文件有本质区别,需重点理解:

  • 目录的r权限:允许使用ls列出目录内容(如ls /etc),但无法进入目录(需x权限)。
  • 目录的w权限:允许在目录中创建、删除、重命名文件(无论文件自身权限如何),但仅限文件所有者或root(需配合x权限)。
  • 目录的x权限:允许使用cd进入目录(如cd /etc),是访问目录内容的“通行证”,无x权限时,即使有r权限也无法列出目录内容(仅能显示目录名)。

示例:

# 查看目录权限
ls -ld /tmp
# 输出:drwxrwxrwt 10 root root 4096 May 10 10:00 /tmp
# 解释:所有者/所属组/其他用户均有rwx权限,且Sticky Bit(t)生效,防止普通用户误删/tmp中他人文件。

常见场景与命令组合

查看当前目录所有文件的权限(含隐藏文件)

ls -la

查看特定文件的八进制权限

stat -c "%a %n" test.txt  # 输出:644 test.txt

递归查看目录及其子目录权限,并以数字形式显示

ls -lnR /var/log

查看并过滤包含特定权限的文件(如所有者有执行权限)

ls -l | grep "^-..x"

相关问答FAQs

Q1:为什么目录没有x权限时,即使有r权限也无法使用ls列出内容?
A:Linux中,目录的r权限仅允许“读取目录名称”,而x权限是“访问目录内容”的必要条件,当用户对目录无x权限时,系统禁止其“打开”目录,因此无法读取目录下的文件列表(即使有r权限),若/test目录权限为drwxr--r--,普通用户可执行ls -ld /test(查看目录自身信息),但无法执行ls /test(列出目录内容),因为缺少x权限。

Q2:如何快速查看文件的权限数字表示,并判断是否有特殊权限?
A:使用stat命令的-c选项可自定义输出格式,

stat -c "%a %A %n" test.txt

输出示例:755 -rwxr-xr-x test.txt,其中%a显示八进制权限(755),%A显示符号权限(-rwxr-xr-x),若权限位中包含st(如47551777),则说明存在SUID/Sticky Bit等特殊权限。ls -l中权限位的st标识也可直观判断特殊权限存在。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/26295.html

(0)
酷番叔酷番叔
上一篇 2025年9月19日 18:45
下一篇 2025年9月19日 18:57

相关推荐

  • 如何在Linux系统中完成磁盘的新建与分区?

    在Linux系统中新建磁盘并使其可用,通常涉及检测新硬件、分区、格式化、挂载及配置开机自动挂载等步骤,无论是物理服务器添加新硬盘,还是虚拟机扩容磁盘,核心流程基本一致,以下以常见场景为例进行详细说明,第一步:检测新磁盘系统识别新硬件后,需先确认磁盘是否被正确识别,通过lsblk命令查看所有块设备信息,新磁盘通常……

    2025年9月25日
    2300
  • 如何查看Linux进程状态?ps、top命令详解?

    在Linux系统中,进程是程序执行的基本单位,查看进程状态是系统管理和故障排查的核心操作,Linux进程状态通过特定标识符描述,可通过多种命令工具实时或静态获取,帮助用户监控进程运行情况、资源占用及父子关系,本文将详细介绍查看Linux进程状态的各类方法、工具及参数使用,并结合实例说明输出含义,Linux进程状……

    2025年9月26日
    2500
  • 如何安装ksh?

    KornShell (ksh) 是 Linux 环境中功能强大的 Unix shell,由 David Korn 开发,兼具 Bourne shell (sh) 的兼容性和 C shell (csh) 的交互特性(如命令行编辑),以下是 Linux 用户使用 ksh 的完整指南:不同 Linux 发行版的安装命……

    2025年7月26日
    3600
  • 如何掌握Linux发送报文的高级技巧?

    基础网络测试工具ping(ICMP报文)用途:测试主机连通性,发送ICMP Echo请求,命令示例:ping -c 4 192.168.1.1 # 发送4个ICMP包到指定IPping6 fe80::1 # IPv6测试参数说明:-c [次数]:指定发送次数,-s [字节]:设置数据包大小(如-s 1500……

    2025年7月7日
    5700
  • 如何查看Linux系统是32位还是64位?

    在Linux系统中,确定系统位数(32位或64位)对于软件安装、系统优化和兼容性排查至关重要,32位系统最大支持4GB内存,而64位系统可支持更大内存空间,且运行效率更高,以下是几种常用且准确的方法来判断Linux系统的位数,涵盖不同场景和需求,使用uname命令查看系统架构uname命令是Linux中基础的系……

    2025年9月8日
    2700

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信