Linux中如何查看文件及目录的权限信息?

Linux文件权限是系统安全的核心机制,决定了不同用户对文件的访问操作,查看文件权限是日常管理和排查问题的基础操作,本文将详细介绍Linux中查看文件权限的各种方法、权限位含义及关联知识。

linux如何查看文件权限

基础查看命令:ls

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

ls -l:显示长格式权限

ls -l会以长格式列出文件信息,输出结果中每行包含权限、所有者、所属组、大小、修改时间等字段,

-rw-r--r-- 1 user group 1024 Oct 20 10:30 test.txt  
drwxr-x--- 2 user group 4096 Oct 20 09:15 Documents/  

字段解析(从左到右):

  • 第1位:文件类型,表示普通文件,d表示目录,l表示软链接,b/c表示块设备/字符设备等。
  • 第2-10位:权限位,分3组,每组3位,分别对应用户(User,文件所有者)组(Group,所属组)其他(Others,其他用户)的权限,每组顺序为读(r)、写(w)、执行(x)
    • 示例中-rw-r--r--:普通文件,用户有读写权限(rw-),组和其他用户只有读权限(r–)。
    • 示例中drwxr-x---:目录,用户有读、写、执行权限(rwx,目录的“执行”权限表示可进入目录),组有读、执行权限(r-x),其他用户无权限(—)。
  • 第11位:硬链接数(普通文件为1,目录的硬链接数包含和,所以通常≥2)。
  • 第12-13位:所有者(user)和所属组(group)。
  • 后续字段:文件大小(字节)、修改时间、文件名。

ls常用选项组合

选项 作用 示例
-a 显示所有文件(包括隐藏文件,以开头) ls -la
-h 以人类可读格式显示大小(如K、M、G) ls -lh
-i 显示文件的inode号 ls -li
-d 显示目录本身信息(不列出目录内容) ls -ld Documents/

详细权限查看:stat命令

stat命令比ls -l提供更详细的文件元数据,包括精确的时间戳、权限、UID/GID等。

示例输出:

  File: test.txt  
  Size: 1024        Blocks: 8          IO Block: 4096   regular file  
Device: 801h/2049d  Inode: 131073      Links: 1  
Access: (0644/-rw-r--r--)  Uid: ( 1000/   user)   Gid: ( 1000/  group)  
Access: 2023-10-20 10:30:00.000000000 +0800  
Modify: 2023-10-20 10:30:00.000000000 +0800  
Change: 2023-10-20 10:30:00.000000000 +0800  
 Birth: -  

关键信息

  • Access:权限的八进制表示(0644)和符号表示(-rw-r--r--),八进制中第一位表示文件类型(0普通文件,4目录等),后三位对应r=4、w=2、x=1的组合(如6=4+2即rw-,4=4+0即r–)。
  • Uid/Gid:文件所有者和所属组的数字ID(可通过/etc/passwd/etc/group查看对应用户名/组名)。
  • Access/Modify/Change
    • Access(访问时间):最后一次读取文件内容的时间。
    • Modify(修改时间):最后一次修改文件内容的时间。
    • Change(状态改变时间):最后一次修改文件元数据(如权限、所有者)的时间。

权限位深入解析

符号权限与八进制权限

权限 符号表示 八进制值 含义
r 4 可查看文件内容(文件)/可列出目录内文件(目录)
w 2 可修改文件内容(文件)/可在目录中创建/删除文件(目录)
执行 x 1 可执行文件(文件)/可进入目录(目录)

组合示例

linux如何查看文件权限

  • rwx(7):用户权限,可读、写、执行(如所有者权限)。
  • r-x(5):组权限,可读、执行,不可写。
  • (0):其他用户无权限。

特殊权限

除了基本rwx权限,Linux还有3种特殊权限,用于特定场景:

特殊权限 符号表示 八进制值 作用 示例
SUID u=s 4 用户执行时以文件所有者身份运行(仅对可执行文件有效) /usr/bin/passwd(普通用户修改密码时以root身份执行)
SGID g=s 2 用户执行时以文件所属组身份运行;目录设置后,新建文件/目录继承该组权限 共享目录(如/project,确保组内成员统一权限)
Sticky Bit o=t 1 仅对目录有效,目录下文件只有所有者或root可删除 /tmp(防止普通用户删除其他用户文件)

查看特殊权限ls -l中若权限位出现st,则表示有特殊权限(如rwsr-xr-t,用户权限位为s,其他权限位为t)。

ACL(访问控制列表)精细权限

当需要为特定用户/组设置独立于基本权限的精细权限时,可使用ACL。

查看ACL:getfacl

getfacl test.txt

输出示例

# file: test.txt  
# owner: user  
# group: group  
# flags: -s-   # 表示有SGID权限  
user::rw-              # 用户权限:rw-  
user:alice:r--         # 特定用户alice:r--  
group::r--             # 组权限:r--  
group:dev:rwx          # 特定组dev:rwx  
mask::r--              # 掩码(限制有效权限)  
other::r--             # 其他用户权限:r--  

设置ACL:setfacl

# 给用户alice添加读写权限
setfacl -m u:alice:rw test.txt  
# 给dev组添加执行权限
setfacl -m g:dev:x test.txt  
# 移除alice的权限
setfacl -x u:alice test.txt  

高级技巧:查找与递归查看

查找特定权限的文件:find

# 查找当前目录下所有用户可读的文件
find . -type f -perm /u+r  
# 查找权限为755的目录
find . -type d -perm 755  
# 查找其他用户无权限的文件
find . -type f -perm /o=-  

递归查看目录权限:ls -Rtree

# 递归列出所有文件和目录的权限(输出较长)
ls -lR Documents/  
# 使用tree命令以树形结构显示(需安装tree包)
tree -p -u -g -s Documents/  # -p显示权限,-u显示所有者,-g显示组,-s显示大小  

查看当前用户的默认权限:umask

umask决定新建文件/目录的默认权限(权限取反计算),

umask 0022  # 默认权限:文件666-022=644(rw-r--r--),目录777-022=755(rwxr-xr-x)

关联操作:权限修改与所有者变更

虽然本文聚焦“查看”,但了解关联命令有助于理解权限体系:

linux如何查看文件权限

  • 修改权限chmod(符号模式chmod u+x file或八进制模式chmod 755 file)。
  • 修改所有者chown user:group fileuser为所有者,group为所属组)。
  • 修改所属组chgrp group file

相关问答FAQs

Q1:为什么有些文件显示为红色或蓝色?
A:Linux终端中文件颜色默认表示文件类型:蓝色(d)表示目录,绿色(可执行文件)表示可执行程序(如/bin/ls),红色()表示压缩文件(如.tar.gz),浅蓝色(l)表示软链接,灰色表示隐含文件,颜色可通过LS_COLORS环境变量自定义,例如export LS_COLORS="di=01;34"(目录显示为加粗蓝色)。

Q2:如何查看文件的所有者和所属组的详细信息(如UID/GID对应的真实用户名)?
A:ls -l会直接显示所有者用户名和所属组名,若需查看UID/GID,可结合id命令:

# 查看用户user的UID和所属组
id user  
# 输出示例:uid=1000(user) gid=1000(group) groups=1000(group),4(adm)  

若已知UID,可通过/etc/passwd查看用户名:grep "1000" /etc/passwd(输出格式:x:1000:1000::/home/user:/bin/bash),同理,GID对应组名在/etc/group中查询。

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

(0)
酷番叔酷番叔
上一篇 19小时前
下一篇 18小时前

相关推荐

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信