ls -l
可查看文件或目录的所有者、所属组及其他用户的读写执行权限;id
能显示当前用户 ID、所属组 ID 及所属其他组;whoami
用于查看当前用户名。Linux系统中,查看用户权限是日常系统管理和运维的重要任务之一,通过了解和掌握如何查看用户权限,可以更好地进行系统安全配置、用户管理以及故障排查,下面将详细介绍几种常用的方法来查看Linux系统中的用户权限。
使用ls
命令查看文件或目录的权限
ls
命令是Linux中最常用的列出文件和目录信息的命令,通过添加不同的选项,可以查看详细的权限信息。
-
基本用法
ls -l
:显示当前目录下所有文件和目录的详细信息,包括权限、所有者、所属组、大小、修改时间等。ls -al
:除了ls -l
的功能外,还会显示隐藏文件(以开头的文件)。
-
示例输出
ls -l /home
输出可能如下:
drwxr-xr-x 2 user group 4096 Jan 1 12:00 user drwxr-xr-x 2 root root 4096 Jan 1 12:00 root
第一列表示权限,第二列表示所有者,第三列表示所属组。
-
权限字符串解释
- 第一位字符表示文件类型:
d
表示目录,表示普通文件,l
表示符号链接,c
表示字符设备文件,b
表示块设备文件等。 - 接下来的三组字符分别表示所有者、所属组和其他用户的权限,每组三个字符依次为读(
r
)、写(w
)、执行(x
)权限。rwxr-xr--
表示所有者有读、写、执行权限,所属组有读、执行权限,其他用户只有读权限。
- 第一位字符表示文件类型:
使用id
命令查看用户ID和组ID
id
命令用于显示当前用户的用户ID(UID)和组ID(GID),以及所属的所有组。
-
基本用法
id
:显示当前用户的UID、GID以及所属的所有组。id username
:显示指定用户的UID、GID以及所属的所有组。
-
示例输出
id
输出可能如下:
uid=1000(user) gid=1000(group) groups=1000(group),27(sudo)
这表示当前用户的UID是1000,属于
group
组,并且还属于sudo
组。
使用cat /etc/passwd
查看所有用户信息
/etc/passwd
文件存储了系统中所有用户的基本信息,包括用户名、UID、GID、家目录、默认Shell等。
-
基本用法
cat /etc/passwd
:显示所有用户的详细信息。
-
示例输出
cat /etc/passwd
输出可能如下:
root:x:0:0:root:/root:/bin/bash user:x:1000:1000:User:/home/user:/bin/bash
每行代表一个用户,字段之间用冒号分隔,常见字段含义如下:
- 第1列:用户名
- 第2列:密码占位符(通常为
x
) - 第3列:UID
- 第4列:GID
- 第5列:用户描述
- 第6列:家目录
- 第7列:默认Shell
使用getent passwd
查看用户信息
getent passwd
命令与cat /etc/passwd
类似,但它可以从多个源获取用户信息,适用于支持NSS(Name Service Switch)的系统。
-
基本用法
getent passwd
:显示所有用户的详细信息。
-
示例输出
getent passwd
输出格式与
cat /etc/passwd
相同。
使用groups
命令查看用户所属的组
groups
命令用于显示指定用户所属的所有组。
-
基本用法
groups
:显示当前用户所属的所有组。groups username
:显示指定用户所属的所有组。
-
示例输出
groups user
输出可能如下:
user : user group sudo
这表示用户
user
属于user
组和sudo
组。
使用sudo -l
查看用户的sudo权限
sudo -l
命令用于显示当前用户的sudo权限,即哪些命令可以以超级用户的身份执行。
-
基本用法
sudo -l
:显示当前用户的sudo权限。sudo -l -U username
:显示指定用户的sudo权限。
-
示例输出
sudo -l
输出可能如下:
User user may run the following commands on this host: (ALL) ALL
这表示用户
user
可以在所有主机上执行任何命令。
使用stat
命令查看文件或目录的详细权限信息
stat
命令提供了比ls
更详细的文件或目录信息,包括权限、所有者、所属组、大小、修改时间等。
-
基本用法
stat filename
:显示指定文件的详细信息。stat directory_name
:显示指定目录的详细信息。
-
示例输出
stat /etc/passwd
输出可能如下:
File: /etc/passwd Size: 2741 Blocks: 8 IO Block: 4096 regular file Device: 801h/2049d Inode: 40766 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2024-03-26 15:18:00.000000000 +0000 Modify: 2024-03-26 15:18:00.000000000 +0000 Change: 2024-03-26 15:18:00.000000000 +0000 Birth: -
Access
字段显示了文件的权限信息,格式为(数字模式/符号模式)
。
使用getfacl
命令查看文件或目录的ACL权限
ACL(Access Control List)是一种更细粒度的权限控制机制,允许为单个用户或组设置特定的权限。
-
基本用法
getfacl filename
:显示指定文件的ACL权限。getfacl directory_name
:显示指定目录的ACL权限。
-
示例输出
getfacl /etc/passwd
输出可能如下:
# file: /etc/passwd # owner: root # group: root user::rw- group::r-- other::r--
这表示文件
/etc/passwd
的所有者有读写权限,所属组和其他用户只有读权限。
归纳与对比
以下是上述命令的简要对比:
命令 | 功能描述 | 适用场景 |
---|---|---|
ls -l |
显示文件或目录的详细信息,包括权限、所有者、所属组等 | 查看文件或目录的基本权限 |
id |
显示当前用户的UID、GID及所属的所有组 | 查看当前用户的身份信息 |
cat /etc/passwd |
显示所有用户的详细信息 | 查看系统中所有用户的基本信息 |
getent passwd |
从多个源获取用户信息,类似于cat /etc/passwd |
查看用户信息,支持多种源 |
groups |
显示指定用户所属的所有组 | 查看用户所属的组 |
sudo -l |
显示当前用户的sudo权限 | 查看用户的sudo权限 |
stat |
显示文件或目录的详细信息,包括权限、所有者、所属组等 | 查看文件或目录的详细权限 |
getfacl |
显示文件或目录的ACL权限 | 查看文件或目录的ACL权限 |
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/56432.html