本篇文章所写的都是基于centos 7 64位(通过虚拟机运行)。
一、Linux的界面
Linux操作系统提供了多种用户界面,主要分为图形用户界面(GUI)和命令行界面(CLI)。
1、图形用户界面(GUI)(Graphical User Interface)
Linux的图形界面类似于Windows和macOS系统,提供了图标、窗口、工具栏等元素,使得用户可以通过鼠标点击来执行命令,而不需要记忆和输入命令行指令。Linux有多种桌面环境供用户选择,其中一些较为流行的包括 GNOME、KDE Plasma、XFCE、LXDE等。这些桌面环境不仅外观和操作逻辑不同,对系统资源的需求也有所不同,用户可以根据个人喜好和硬件条件选择最适合自己的桌面环境。
下面就是GNOME经典模式的GUI:
2、命令行界面(CLI)(Command Line Interface)
Linux的命令行界面是一种纯文本界面,用户通过键入命令来与系统交互。对于许多高级用户和系统管理员来说,命令行界面是进行系统管理和执行任务的首选方式,因为它可以提供更精准的控制,并能够通过脚本自动化复杂的任务。在Linux中,常见的命令行界面工具有Bash、Zsh等。
下面就是命令行界面,是一种纯文本界面:
3、如何由图形化界面进入命令行界面
1)快捷键
可以通过按Ctrl
+ Alt
+ F2
(或F3到F6)来访问一个命令行界面。
2)命令行
打开终端,在终端中输入
bash
init 3
进入命令行界面。
4、如何由命令行界面进入图形化界面
1)快捷键
按Ctrl
+ Alt
+ F1
(或F7)来访问一个图形化界面。
2)命令行
打开终端,在终端中输入
cpp
init 5
或
cpp
startx
二、用户
在Linux系统中,用户是指能够登录系统与之交互的实体。这些用户可以是人类用户,也可以是用于运行特定服务的系统用户。Linux系统的用户管理是通过一系列文件和命令实现的,包括但不限于/etc/passwd
、/etc/shadow
、/etc/group
等文件,以及useradd
、usermod
、passwd
等命令。
1、用户类型
在CentOS(以及其他Linux系统)中,主要有两种类型的用户:
-
普通用户:普通用户是系统的基本用户,通常用于日常的任务,如编辑文档、运行程序等。出于安全考虑,普通用户对系统资源的访问受到限制,如无法修改系统关键文件。
-
超级用户(root):root用户是Linux系统的管理员用户,拥有对系统的完全控制权,可以访问和修改系统上的任何文件,安装软件,以及对系统设置进行更改。因其权限之广,只有在必要时才应以root用户身份登录。
2、用户相关文件与目录
1)/etc/passwd:
这是一个文本文件,包含系统上每个用户的信息。每行代表一个用户,包括用户名、用户ID(UID)、用户组ID(GID)、用户全名、家目录以及登录shell。
在/etc/passwd
文件中的条目stewie:x:1000:1000:stewie:/home/stewie:/bin/bash
说明了一名用户的多个属性。其中,x
位于用户名和用户ID(UID)之间的位置上,这个x
字符表示用户的密码已经不存储在这个文件中了。具体来说,这是一个安全性措施,用于防止密码被不当访问。
在早期的Unix系统中,用户的加密密码实际上是存储在/etc/passwd
文件中的。但是,因为/etc/passwd
文件对所有用户都是可读的,这就造成了一个安全隐患,任何人都可以读取这个文件,并尝试破解里面的密码。
因此,现代的Unix和类Unix系统,采用了一个更安全的做法:把加密后的用户密码存储在/etc/shadow
文件中,而在/etc/passwd
文件中的密码位置用一个占位符(如x
)来代替。/etc/shadow
文件的访问权限被严格控制,只有系统的root用户或者具有特定权限的用户可以访问,这样大大增加了密码存储的安全性。
因此,当在/etc/passwd
文件中看到如下格式的条目:
bash
stewie:x:1000:1000:stewie:/home/stewie:/bin/bash
各部分表示:
- 用户名:stewie
- 密码占位符 :x,表示实际的密码存储在
/etc/shadow
文件中 - 用户ID(UID):1000
- 用户组ID(GID):1000
- 用户全名:stewie
- 家目录:/home/stewie
- 登录shell:/bin/bash
2)/etc/shadow:
存储用户密码的加密形式及其相关信息,如密码更改的日期、密码到期的天数等。出于安全考虑,这个文件只有root用户才能访问。
3)/etc/group:
包含系统上的所有用户组的信息。用户组允许多个用户分享同样的权限和文件访问权限。
/etc/group
文件中的每一行代表一个用户组,每行的格式通常遵循以下模式:
bash
group_name:password:GID:user_list
这里的各个部分意味着:
- group_name:用户组的名称。
- password :用户组密码的占位符。虽然理论上支持为用户组设置密码,但这在实际中很少使用。通常这里会是一个
x
或者空白,表示密码不被存储在这个文件中。 - GID(Group ID):用户组的唯一标识符,是一个数字。在Linux系统中,文件和进程等都用这个ID来识别用户组。
- user_list :属于这个组的用户列表,用户名之间通常用逗号(,)隔开。需要注意的是,这个列表可能为空,因为用户的主要用户组信息是存储在
/etc/passwd
文件中的,而/etc/group
文件中的信息表示用户所属的附加(或次要)用户组。
假设/etc/group
文件中有这样一行:
bash
developers:x:1001:alice,bob,charlie
这意味着:
- 存在一个名为"developers"的用户组。
- 用户组密码位置用
x
标记,实际上不在这个文件中存储。 - 该用户组的GID是1001。
- 用户"alice"、"bob"和"charlie"是这个组的成员。
4)家目录:
每个用户在系统上都有一个家目录,通常位于/home/用户名
(root用户的家目录是/root
)。这是用户存储个人文件和设置的地方。
3、用户管理指令
1)useradd:创建新用户。
例如,创建一个名为newuser
的新用户:
cpp
sudo useradd newuser
2)passwd:设置或更改用户密码。
例如,为newuser
设置密码:
cpp
sudo passwd newuser
需要输入两次密码,一次输入一次确认。
3)userdel:删除用户。
例如,删除newuser
用户:
bash
sudo userdel newuser
4)usermod:修改用户属性。
例如,更改newuser
的登录shell:
bash
sudo usermod -s /bin/bash newuser