前言
Linux作为一种广泛使用的操作系统,以其稳定性、灵活性和安全性而闻名。在Linux中,用户和权限是管理访问控制和确保系统安全性的核心概念。深入理解Linux用户和权限对于系统管理员、开发人员和普通用户来说都是至关重要的。
我将为大家全面介绍Linux中的用户和权限概念,深入解析其原理和用法,以及探讨如何正确配置和管理文件和目录的访问权限。
什么是 root 用户
无论是Windows、MacOs还是Linux都采用多用户的管理模式进行权限管理。
在学习 Linux 用户之前,我们首先要知道 Linux 的 root 用户。root 用户也叫 超级管理员,与普通用户不同的是:普通用户的很多权限受到限制,而 root 用户拥有 Linux 操作系统的最大权限。
- 普通用户在HOME之内是不受限制的,而一旦出了HOME目录,很多操作都会受到限制。
su 命令和 exit 命令
①su 命令
那么我们如何从普通用户切换到 root 用户,或者如何从 root 用户切换到 普通用户呢?我们使用 su [-] [用户名]
来进行用户之间的切换。
- - 是可选的,表示是否在切换用户之后加载环境变量,建议带上
- 用户名参数,表示要切换到的用户,可以省略,省略表示切换到 root 用户
su - handsome
su - root
通过上面的执行图片我们不难发现问题:
- 当我们从普通用户转到 root 用户的时候,需要输入密码
- 而从 root 用户转到普通用户的时候则不需要使用密码
②exit 命令
使用 exit
命令之后,会退出当前用户,回到上一次的用户。
当然,如果我们觉得 exit
命令麻烦的话,也可以直接使用快捷键 CTRL + C
退出当前用户,回到上一用户。
sudo 命令
俗话说:地位越高,风险越大。root 用户作为拥有最高权限的管理员,需要格外的注意每一条命令的使用,因为 root 用户执行操作的时候也不会有提示,所以很容易造成不可挽回的后果。也就是说我们不应该长时间处于 root 管理员身份。
不处于管理员身份的话,那么如果我们想要执行普通用户不具有的权限的时候,要来回切换用户吗?这样会显得很麻烦,我们可以使用 sudo 命令 来使我们执行这条命令的时候是处于 root 用户的身份的。
我们要想使用 sudo ,还需要为普通用户配置 sudo 认证
为普通用户配置 sudo 认证
- 切换到 root 用户,执行
visudo
命令,会打开一个文件 - 找到文件末尾,输入小写的 o ,然后输入
用户名 ALL=(ALL) NOPASSWD: ALL
- 先按一下ESC退出编辑模式,然后输入两次大写的Z,退出并保存
sudo mkdir /test2
用户、用户组管理
什么是Linux 用户和用户组
在Linux系统中,用户(User)和用户组(Group)是用于管理和识别系统中的个人用户和集合用户的概念。
用户(User):
用户是系统中的个人或应用程序,每个用户都有唯一的用户名和用户标识符(User ID,UID)。
用户可以登录系统并在系统上执行各种操作,如访问文件、运行程序等。
每个用户都有自己的个人目录(Home Directory),用于存储用户的配置文件、个人数据等。
用户可以通过登录凭据(用户名和密码或其他身份验证方式)来验证自己的身份。
用户组(Group):
用户组是一组用户的集合,用于方便地管理和分配权限。
用户组可以将一组用户绑定在一起,使得它们可以共享共同的权限和资源。
每个用户可以属于一个或多个用户组。一个用户组可以有多个成员,而每个成员也可以属于多个用户组。
用户组通常用于简化权限管理和授予特定资源的访问权限。
通过使用用户和用户组的概念,Linux系统能够实现细粒度的权限管理和资源控制。管理员可以根据需要分配用户所属的用户组,并为每个用户组设置特定的权限。这样可以方便地管理文件和目录的访问权限,并确保用户和应用程序以安全、可管理的方式操作系统。
用户组管理
- groupadd 用户组名——创建用户组
- groupdel 用户组名——删除用户组
用户组命令需要我们在 root 管理员的身份下执行。
用户管理
- useradd [-g -d] 用户名——创建用户
- userdel [-r] 用户名——删除用户
- id [用户名]——查看用户所属组
- usermod -aG 用户组 用户名——将指定用户添加到指定用户组中
创建用户
useradd [-g -d] 用户名
- 选项:-g指定用户的组,如果不指定用户组,会自动创建一个同名的用户组并将该用户添加进入;如果指定用户组,这个用户组需要保证存在
- 选项:-d指定用户HOME路径,不指定的话,HOME路径会默认在:/home/用户名
useradd -g itcast -d /home/test test
删除用户
userdel [-r] 用户名
- 选项:-r,删除用户的HOME目录,不使用 -r 的时候用户的HOME目录会保留
查看用户所属组
id [用户名]
- 参数:用户名,表示要查看的用户所属的用户组,如果省略,则表示查看当前用户的所属用户组
将指定用户添加到指定用户组中
usermod -aG 用户组 用户名
查看当前系统的用户和用户组
使用 getent passwd
命令可以查看当前系统有哪些用户。
显示出来的信息分为七部分:
- 用户名:密码(x):用户ID:组ID:描述信息(无用):HOME目录:执行终端(默认bash)
使用 getent group
查看当前系统的用户组
显示出来的信息分为三部分:
- 组名称:组认证(显示为x):组ID
权限控制
当我们使用 ls -l
的时候,显示出来的信息,我们是否想要直到它显示出来的信息各个部分是什么意思呢?
- ①表示文件、文件夹的权限控制信息
- ②表示文件、文件夹所属用户
- ③表示文件、文件夹所属用户组
权限信息
我们知道了哪些代表权限信息,那么每一个字母又代表什么呢?
r 表示读权限
针对文件,表示可以查看文件内容
针对文件夹,表示查看文件夹中的内容
w 表示写权限
针对文件,表示可以修改此文件
针对文件夹,表示可以在文件夹内创建、删除、改名的操作
x 表示执行权限
针对文件,表示可将文件作为程序执行
针对文件夹,表示可以更改工作目录到此文件夹,即 cd 操作
我们可以看到,当前处于 handsome用户,不属于 boot 文件夹的用户和用户组,属于其他用户权限,所以我们看权限的时候就看后三位 r-x
表示其他用户对于该文件夹只有读和执行的权限。
假如我们对该文件夹执行创建、删除、改名等操作看看会怎么样?
请求被拒绝了,这也就说明了其他用户对该文件夹只有读和执行的权限,而没有创建、删除、改名的权限。
修改权限控制
- chmod 修改文件、文件夹的权限信息
- chown 修改文件、文件夹的所属用户和所属组
修改权限信息
chmod [-R] 权限信息 文件或文件夹
- 选项:-R,表示对该文件夹里的所有文件都执行该操作
因为不同部分的权限信息代表的含义不同,所以我们需要使用 u
g
o
来分别表示用户、用户组、其他用户权限,并且我们修改文件或者文件夹的权限信息只能以 root 管理员的身份修改
我们修改 handsome/home/test.txt
的权限信息。
在 Linux 中,如果文件或文件夹被标识为绿色,则表示不安全。
修改文件夹权限信息。
修改权限信息的时候,使用 u=rwx 等会不会觉得很麻烦呢?Linux 为我们提供了一种简单以数字的形式来代表权限信息的方式。
0:无任何权限,即—
1:仅有 x 权限,即–x
2:仅有 w 权限,即-w-
3:有 w 和 x 权限,即-wx
4:仅有 r 权限,即r–
5:有 r 和 x 权限,即r-x
6:有 r 和 w 权限,即rw-
7:有全部权限,即rwx
修改所属用户、用户组
chown [-R] [用户名][:][用户组名] 文件或文件夹
- 选项:-R,表示文件夹中的所有文件都执行该操作
- 选项:用户,表示修改所属用户
- 选项:用户组,表示修改所属用户组
该操作也只能在 root 管理员的身份下执行
将 /home/handsome/test.txt
的所属用户和用户组更改到 root