用户和权限
约 1743 字大约 6 分钟
2026-01-09
root 用户
在 Linux 系统中,root 用户是系统管理员,具有最高权限。
前期我们一直使用的是普通用户,而普通用户在许多地方的权限是受限的。
例如:使用普通用户在根目录下创建文件夹时,会提示权限不足。

切换到 root 用户后,就可以在根目录下创建文件夹了。

普通用户的权限,一般在 HOME 目录内是不受限制的。一旦出了 HOME 目录,大多数地方,普通用户仅有只读和执行权限,无修改权限。
su 命令
su 命令用于切换用户,包括切换到 root 用户。
su [-] [username]-符号:表示切换到目标用户的环境,包括环境变量和工作目录。username:目标用户的用户名。如果不指定,默认切换到 root 用户。
切换用户后,可以通过 exit 命令退出当前用户,也可以使用快捷键 Ctrl+D, 返回之前的用户环境。
使用普通用户切换到其它用户需要输入密码;而使用 root 用户切换到其它用户不需要输入密码。
sudo 命令
sudo 命令用于以超级用户权限执行命令。
sudo [command]command:要以超级用户权限执行的命令。
但并不是所有的用户都有 sudo 权限。我们需要配置 sudoers 文件,为用户添加 sudo 权限。

切换到 root 用户,执行visudo命令,添加如下内容:
# 为用户 username 添加 sudo 权限,无需输入密码
username ALL=(ALL) NOPASSWD: ALLusername:要添加 sudo 权限的用户名。
保存并退出文件后,用户 username 就有了 sudo 权限。

执行的命令均以 root 运行,且不需要输入密码。
用户、用户组管理
Linux 中关于权限的管控级别有 2 个:
- 用户权限:每个用户都有自己的权限,包括读取、写入、执行等。
- 用户组权限:用户组是用户的集合,每个用户组都有自己的权限。
创建用户组
groupadd [groupname]groupname:要创建的用户组名。
使用 cat /etc/group 或者 getent group 命令可以查看所有用户组。

组名称:组认证(显示为 x):组 ID
删除用户组
groupdel [groupname]groupname:要删除的用户组名。
创建用户
useradd [-g -d] [username]username:要创建的用户名。-g:指定用户所属的用户组。不指定时,默认创建一个与用户名相同的用户组。-d:指定用户的主目录。不指定时,默认创建一个与用户名相同的主目录。
使用 cat /etc/passwd 或者 getent passwd 命令可以查看所有用户。

用户名:密码(x):用户 ID:组 ID:描述信息(无用):HOME 目录:执行终端(默认 bash)
删除用户
userdel [-r] [username]username:要删除的用户名。-r:删除用户的同时,删除用户的主目录。
查看用户所属组
id [username]username:要查看的用户名。如果不提供,默认查看当前用户。

修改用户所属组
usermod -aG [groupname] [username]groupname:要修改的用户组名。username:要修改的用户名。
查看权限控制
认识权限信息
ls -l [file/dir]file/dir:要查看权限的文件或目录。

- 序号 1:表示文件、文件夹的权限控制信息;
- 序号 2:表示文件、文件夹所属用户
- 序号 3:表示文件、文件夹所属用户组
权限细节总共分为 10 位,分别表示不同的权限。
- 序号 1:表示文件类型,
-表示普通文件,d表示目录,l表示软链接。 - 序号 2-4:表示文件所有者的权限,
r表示读取权限,w表示写入权限,x表示执行权限。 - 序号 5-7:表示文件所属用户组的权限,
r表示读取权限,w表示写入权限,x表示执行权限。 - 序号 8-10:表示其他用户的权限,
r表示读取权限,w表示写入权限,x表示执行权限。
举例:drwxr-xr-x,表示:
- 这是一个文件夹,首字母 d 表示;
- 所属用户的权限是:读取、写入、执行,rwx;
- 所属用户组的权限是:读取、执行,r-x;(-表示无此权限)
- 其他用户的权限是:读取、执行,r-x;

当前用户 lingping,非文件所属用户和用户组,锁定最后三位权限为:---,表示无权限。
修改权限控制
chmod 命令
chmod 命令用于修改文件或目录的权限。
只有文件、文件夹的所属用户或 root 用户才能修改权限。
chmod [-R] [mode] [file/dir]-R:递归修改目录下所有文件的权限。mode:权限控制模式。file/dir:要修改权限的文件或目录。
示例:
# 将文件权限修改为:rwxr-x--x
# u:用户权限,rwx
# g:用户组权限,rx
# o:其他用户权限,x
chmod u=rwx,g=rx,o=x file.txt
# 将目录 test 下所有文件权限修改为:rwxr-x--x
chmod -R u=rwx,g=rx,o=x test此外还有快捷写法:
chmod 751 file.txt那么这里的数字表示什么?
权限可以用 3 位数字来表示,第一位表示用户权限,第二位表示用户组权限,第三位表示其他用户权限。
数字的细节:r 记为 4,w 记为 2,x 记为 1,可以有:
- 0:无权限,即---;
- 1:执行权限,即--x;
- 2:写入权限,即-w-;
- 3:写入、执行权限,即-wx;
- 4:读取权限,即 r--;
- 5:读取、执行权限,即 r-x;
- 6:读取、写入权限,即 rw-;
- 7:读取、写入、执行权限,即 rwx。
所以 751 表示:rwx(7),r-x(5),--x(1)
chown 命令
chown 命令用于修改文件或目录的所属用户和用户组。
普通用户无法修改所属为其它用户或组,所以此命令只适用于 root 用户执行
chown [-R] [user[:group]] [file/dir]
# 将文件 hello.txt 所属用户修改为 root
chmod root hello.txt
# 将文件 hello.txt 所属用户组修改为 root
chmod :root hello.txt
# 将文件 hello.txt 所属用户修改为 root,用户组修改为 test
chmod root:test hello.txt-R:递归修改目录下所有文件的所属用户和用户组。user[:group]:要修改的所属用户和用户组。如果不指定用户组,默认修改为所属用户。file/dir:要修改所属用户和用户组的文件或目录。