在Linux系统中,用户权限是保障系统安全与资源合理分配的核心机制,通过精细化的权限控制,确保不同用户只能访问其被授权的资源,要查看用户权限,需从用户身份、文件/目录权限、特殊权限、sudo授权等多个维度入手,结合多种命令和工具进行综合分析,以下将从基础到进阶,详细说明Linux中查看用户权限的方法及核心知识点。

用户与用户组基础:权限的归属主体
Linux中的权限分配以用户(User)和用户组(Group)为单位,每个文件或目录都有明确的“属主”(Owner,即用户)、“属组”(Group,即用户组)及“其他用户”(Others)三类权限主体,理解用户与用户组的关系是查看权限的前提。
- 用户标识:Linux通过用户ID(UID)唯一标识用户,普通用户UID通常大于1000(不同发行版略有差异),系统用户(如www-data、nobody)UID一般小于1000,可通过
/etc/passwd文件查看所有用户信息,例如cat /etc/passwd | grep username会显示用户的UID、家目录、默认Shell等。 - 用户组标识:用户组通过组ID(GID)标识,用户可属于一个主组(Primary Group,创建用户时自动生成)和多个附加组(Supplementary Groups)。
/etc/group文件记录了所有组信息,例如cat /etc/group | grep groupname可查看组成员及GID。
权限表示方法:字符与数字的对应
Linux权限分为“读(r)”“写(w)”“执行(x)”三类,分别对应数字4、2、1(无权限为0),权限位通常以字符或数字形式呈现,常见于文件/目录的属性中。
字符表示法
通过ls -l命令可查看文件/目录的详细权限,-rwxr-xr-- 1 user group 4096 Oct 20 10:30 file.txt
- 第1位:文件类型(普通文件,
d目录,l软链接等); - 第2-4位:属主权限(rwx,属主user可读、写、执行);
- 第5-7位:属组权限(r-x,属组group可读、执行,不可写);
- 第8-10位:其他用户权限(r–,其他用户仅可读)。
数字表示法
将三类权限的数字相加,得到简化的权限表示,
- rwx = 4+2+1 = 7(完全权限);
- r-x = 4+0+1 = 5(读+执行);
- r– = 4+0+0 = 4(仅读)。
上述file.txt的权限可简写为755(属主7,属组5,其他5)。
查看用户权限的核心命令
ls命令:查看文件/目录权限
ls是查看文件属性最常用的命令,结合不同选项可获取权限细节:
- 基础权限:
ls -l file.txt(如上文所示,显示字符权限); - 隐藏文件权限:
ls -la(包含以开头的隐藏文件,如.bashrc); - 目录自身权限:
ls -ld /var/log(查看目录本身的权限,而非目录内文件); - 数字权限:
ls -n file.txt(以UID/GID形式显示属主/属组,而非用户名,便于调试)。
id命令:查看用户身份与组信息
id命令用于显示指定用户的UID、GID及所属组,是快速定位用户权限归属的关键工具:

- 当前用户信息:
id(输出示例:uid=1000(user) gid=1000(user) groups=1000(user),4(adm),27(sudo),显示UID、GID及所有附加组); - 指定用户信息:
id username(如id www-data,输出uid=33(www-data) gid=33(www-data) groups=33(www-data)); - 仅显示UID/GID:
id -u username(仅UID)、id -g username(仅GID)。
groups命令:查看用户所属组
groups命令以简洁方式列出用户的所有组(主组+附加组):
- 当前用户组:
groups(输出:user : user adm sudo); - 指定用户组:
groups username(如groups mysql,输出mysql : mysql root)。
sudo -l命令:查看sudo授权权限
sudo(Superuser Do)允许普通用户以其他用户(通常是root)身份执行命令,sudo -l用于查看当前用户被授权执行的sudo命令:
- 当前用户sudo权限:
sudo -l(输出示例:User user may run the following commands on hostname: (ALL : ALL) ALL,表示可切换为任何用户执行任何命令;或/usr/bin/apt update,表示仅可执行apt update); - 指定用户sudo权限:
sudo -l -U username(需root权限,查看其他用户的sudo授权)。
文件/目录权限的深度解读
文件权限与目录权限的区别
- 文件权限:
- 读(r):查看文件内容(如
cat file.txt); - 写(w):修改或删除文件(需对文件所在目录有写权限,否则无法删除);
- 执行(x):运行可执行文件(如脚本、二进制程序,无x权限则无法通过
./file.sh执行)。
- 读(r):查看文件内容(如
- 目录权限:
- 读(r):列出目录内容(如
ls /var/log,需r权限); - 写(w):在目录中创建/删除文件/子目录(如
touch /var/log/newfile,需w权限); - 执行(x):进入目录(如
cd /var/log,需x权限,无x权限则无法访问目录内文件,即使有r权限)。
- 读(r):列出目录内容(如
权限对操作的影响示例
假设目录/data权限为drwxr-x--- 2 root root 4096 Oct 20 11:00(属主root,属组root,权限750),文件/data/file.txt权限为-rw-r--r-- 1 user group 4096 Oct 20 11:00:
- 用户
user(属group组)可ls /data(目录有rx权限),可cat /data/file.txt(文件有r权限),但无法touch /data/newfile(目录无w权限); - 其他用户(如guest)无法
ls /data(目录无其他用户权限),更无法访问file.txt。
特殊权限:SUID、SGID与Sticky Bit
除常规rwx权限外,Linux还支持三种特殊权限,用于满足特定场景需求:
| 特殊权限 | 作用场景 | 符号表示 | 数字表示 | 示例与说明 |
|---|---|---|---|---|
| SUID | 可执行文件 | s | 4 | /usr/bin/passwd权限为-rwsr-xr-x,属root,用户执行时以root身份修改密码(仅影响文件执行过程)。 |
| SGID | 目录或可执行文件 | s | 2 | /home/shared目录权限为drwxrws---,属组shared,用户在目录内创建的文件自动继承属组shared,便于团队协作。 |
| Sticky Bit | 公共目录 | t | 1 | /tmp目录权限为drwxrwxrwt,普通用户可创建/删除自己的文件,但无法删除其他用户的文件(防止误删)。 |
查看特殊权限:ls -l中,若属主权限位为s(而非x)表示SUID,属组权限位为s表示SGID,其他用户权限位为t表示Sticky Bit。-rwsr-xr-t 1 root root 4096 file(包含SUID和Sticky Bit)。
ACL权限:更精细的访问控制
传统权限仅支持“用户-用户组-其他”三类主体,而ACL(Access Control List)可针对特定用户/用户组设置独立权限,适用于需要精细化控制的场景(如Web服务器目录)。

查看ACL权限:getfacl
getfacl命令用于显示文件/目录的ACL权限:
getfacl /var/www/html # 输出示例: # file: var/www/html # owner: root # group: www-data # user::rwx # user:apache:r-x # 用户apache有rx权限 # group::r-x # 属组www-data有rx权限 # mask::r-x # 权限掩码,限制最大有效权限 # other::r-- # 其他用户有r权限
设置ACL权限:setfacl
- 为用户添加权限:
setfacl -m u:username:rw /file(给用户username添加读写权限); - 为用户组添加权限:
setfacl -m g:groupname:r-x /dir(给groupname组添加读执行权限); - 删除ACL权限:
setfacl -x u:username /file(删除用户username的ACL权限)、setfacl -b /dir(删除所有ACL权限)。
实际应用场景:排查权限问题
当用户无法访问文件或执行命令时,可按以下步骤排查权限:
- 确认用户身份:
id username,查看UID/GID及所属组; - 查看文件/目录权限:
ls -l /path,确认属主、属组及三类主体的rwx权限; - 检查特殊权限:
ls -l中是否有s、t字符,或getfacl /path查看ACL权限; - 验证sudo授权:
sudo -l -U username,确认是否有sudo权限执行目标命令。
权限字符与数字对应表
| 权限字符 | 权限含义 | 数字值 | 示例(权限位) |
|---|---|---|---|
| r | 读 | 4 | r– = 4 |
| w | 写 | 2 | -w- = 2 |
| x | 执行 | 1 | –x = 1 |
| 无权限 | 0 | — = 0 | |
| s | SUID/SGID | 4/2 | rws = 7 (SUID) |
| t | Sticky Bit | 1 | rwt = 7 (Sticky) |
文件权限与目录权限作用对比表
| 操作类型 | 文件权限要求 | 目录权限要求 | 说明 |
|---|---|---|---|
| 查看文件内容 | r | 需对文件有r权限,与目录权限无关(除非通过目录路径访问,此时需目录x权限)。 | |
| 修改文件内容 | w | 需对文件有w权限,若要删除文件,需对文件所在目录有w权限。 | |
| 执行文件 | x | 需对文件有x权限(如./script.sh)。 |
|
| 列出目录内容 | r | 需对目录有r权限(如ls /dir)。 |
|
| 进入目录 | x | 需对目录有x权限(如cd /dir),无x权限则无法访问目录内文件。 |
|
| 在目录中创建/删除文件 | w | 需对目录有w权限(如touch /dir/file、rm /dir/file)。 |
相关问答FAQs
Q1:为什么有些目录即使有r权限也无法进入?
A:目录的“执行(x)”权限是进入目录的必要条件,若仅有r权限无x权限,可通过ls /dir列出目录内容(因有r权限),但无法执行cd /dir进入目录(因缺少x权限),目录权限为drwxr-----(属主7,属组5,其他0),其他用户有r权限(4)但无x权限(1),因此无法进入。
Q2:如何查看某个用户是否有sudo权限?
A:可通过以下两种方式查看:
- 使用
sudo -l命令(推荐):以root身份或目标用户身份执行sudo -l -U username,若输出“User username may run the following commands…”则表示有sudo权限,否则提示“User username is not allowed to run sudo on hostname”。 - 检查
/etc/sudoers文件:需root权限,执行visudo(安全编辑/etc/sudoers),查找username ALL=(ALL:ALL) ALL或类似规则,存在则表示有sudo权限(ALL表示可从任何终端、以任何用户身份执行任何命令)。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/35799.html