Linux 用户与权限管理全解析
1. 安全使用 root 权限
root 权限在 Linux 系统中具有极高的权力,它可以读写任何普通文件、进行底层硬件访问、重新配置网络等,这些操作是普通用户无法完成的。然而,这种强大的权力也伴随着巨大的风险。
1.1 root 权限的风险
- 误操作导致系统故障 :一个简单的错误命令就可能意外删除关键应用程序文件,导致系统长时间停机。例如,误删重要配置文件或破坏重要备份,这对公司来说可能是灾难性的。
- 安全漏洞 :入侵者获取 root 访问权限后,可能会对配置文件进行意外更改,损坏部分系统文件,甚至更改普通用户文件的所有权或权限,使文件所有者无法访问。
1.2 安全使用 root 权限的建议
- 评估必要性 :在使用 root 权限之前,先问自己是否真的需要。有时可以通过其他方式实现目标,或者以更有限的方式使用权限。例如,若只有 root 能写入可移动磁盘,可通过调整磁盘权限来解决,减少 root 权限的使用。
- 仔细检查命令 :在以 root 身份输入命令并按下回车键(或在以 root 身份运行的 GUI 程序中点击确认按钮)之前,将手从键盘和鼠标上移开,仔细检查命令的正确性。一个简单的拼写错误可能会带来严重后果。
- 避免运行可疑程序 :不要以 root 身份运行可疑程序。在多用户系统中,不道德的用户可能会试图诱使管理员运行恶意程序,或者从随机网站下载的程序可能会危及系统安全。
-
缩短使用时间
:尽量缩短使用 root 权限的时间。如果只需要输入一两个 root 命令,完成后在 root shell 中输入
exit退出,或者使用sudo来运行命令,避免在不需要 root 权限时误输入命令。 -
防止他人访问
:不要让 root shell 对他人可用。如果在进行 root 维护任务时需要离开,在离开计算机前在 root shell 中输入
exit。 - 保护 root 密码 :不要与他人共享 root 密码,在公共区域或他人可能看到的情况下谨慎输入密码。选择一个强密码,并遵循公司关于 root 访问的规定。
2. Linux 账户基础
在 Linux 系统中,账户对于系统的正常运行至关重要。大多数日常任务可以使用标准用户账户完成,可使用
whoami
、
id
、
who
和
w
等工具来识别自己的账户和查看其他用户的使用情况。但在执行一些管理任务时,需要使用 root 账户的权限。
2.1 建议练习
-
查看普通用户账户状态
:输入
whoami后再输入id,查看自己的普通用户账户状态。id命令可能会显示你所属的各种组,可通过网络搜索了解每个组的作用。 -
查看系统账户
:读取
/etc/passwd文件或输入getent passwd查看系统上定义的账户。检查是否有除自己之外的普通用户账户(UID 高于 500 或 1000,具体取决于发行版),并通过网络搜索了解一些系统账户(UID 低于 500 或 1000)的用途。
2.2 复习问题
| 问题 | 选项 | 答案 |
|---|---|---|
| 系统账户 UID 为 0 的用途是什么? |
A. 它是系统管理账户。
B. 它是第一个普通用户的账户。 C. 无;UID 0 故意未定义。 D. 不同发行版有所不同。 E. 它是一些服务器默认使用的低权限账户。 | A |
在
/etc/passwd
中,普通用户账户会包含哪些类型的信息?(多选)
|
A. 用户 ID(UID)号码
B. 用户所属的每个组的完整列表 C. 账户主目录的路径 D. 账户默认 GUI 桌面环境的路径 E. 账户默认文本模式 shell 的路径 | ACE |
你以普通用户身份登录,想以 root 身份运行
cat /etc/shadow
命令,以下哪个命令可以完成任务(假设系统配置允许你通过适当命令获得 root 访问权限)?
|
A.
sudo cat /etc/shadow
B.
root cat /etc/shadow
C.
passwd cat /etc/shadow
D.
su cat /etc/shadow
E.
admin cat /etc/shadow
| A |
whoami
提供的信息比
id
更多,这句话对吗?
| - | 错误 |
Linux 将其组信息存储在
/etc/groups
文件中,这句话对吗?
| - | 正确 |
| 一般来说,以 root 身份运行程序时应格外小心,这句话对吗? | - | 正确 |
| 在 Linux 中,将用户名与 UID 号码关联的文件是 _ _ _。(提供文件的完整路径) | - |
/etc/passwd
|
| 要了解当前哪些用户登录到计算机以及他们正在运行的程序,可以输入 _ 。 | - |
w
|
| UID 低于 500 或 1000(取决于发行版)的账户是为 _ ____ 账户保留的。 | - | 系统 |
一个(n)
_
____ 环境意味着一个人不能否认自己的行为,
sudo
命令有助于建立这种环境。
| - | 审计 |
3. 创建用户和组
Linux 是一个多用户操作系统,一台 Linux 计算机可以支持多个用户,每个用户都有唯一的账户。因此,需要掌握创建、修改和删除账户以及管理组的方法。
3.1 创建新账户
在许多环境中,添加账户是一项常见任务。在创建账户之前,需要考虑如何使用组以及选择一个好的密码。
3.2 组策略的选择
Linux 中的组是用户的集合,可以使用组来控制对特定文件的访问。常见的组策略有两种:
-
用户组
:每个用户可以有一个关联的组。例如,用户
luke
可以有一个名为
luke
的组。用户可以设置自己文件的组所有权和权限,系统管理员可以将其他用户添加到该组。这种方法强调控制对单个用户文件的访问。
-
项目组
:根据工作项目、部门隶属关系或其他实际用户分组创建组。例如,为销售部门的用户创建一个名为
sales
的组。组内成员可以通过适当设置组所有权和权限来共享文件。这种方法适用于大量用户协作的场景。
这两种方法不是相互排斥的,可以混合使用或创建自己的方法。同时,用户可以属于多个组,这对于用户组策略的实施是必要的。
graph LR
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px
A(选择组策略):::process --> B(用户组):::process
A --> C(项目组):::process
B --> D(控制单个用户文件访问):::process
C --> E(适用于大量用户协作):::process
3.3 选择好的密码
创建账户时,通常需要为其设置密码。密码的安全性至关重要,以下是一些选择密码的建议:
-
避免常见密码
:避免使用基于家庭成员、朋友、宠物的名字,喜欢的书籍、电影、电视节目或角色,电话号码、街道地址、社会安全号码等有意义的个人信息,字典中的单个单词,以及简单的键盘或字母数字组合(如
qwerty
或
123456
)。
-
构建密码的方法
:
1.
选择易记难猜的基础
:可以使用两个或多个不相关的单词,如
bun
和
pen
合并为
bunpen
;或者使用有意义短语的首字母,如 “yesterday I went to the dentist” 的首字母
yiwttd
。基础不应是任何语言中的单词,且密码越长越好。
2.
修改基础密码
:
-
添加数字或标点
:在基础密码中插入随机数字或标点,如
bu3npe?n
或
y+i9wttd
,至少添加两个符号或数字。
-
混合大小写
:Linux 密码区分大小写,混合字母大小写可以提高安全性,如
Bu3nPE?n
和
y+i9WttD
。
-
反转顺序
:反转部分或全部字母的顺序,如
Bu3nn?EP
和
DttW9i+y
。
-
增加长度
:通过重复单个字符等方式增加密码长度,如
Bu3nn?EPiiiiiiiiii
或
Dtt!!!!!!!!!!!W9i+y
。
同时,要教育用户了解密码安全的重要性,避免密码泄露和在多个系统使用相同密码等风险行为。
4. 使用 GUI 工具创建账户
一些 Linux 发行版允许通过 GUI 工具创建账户,但不同发行版的工具访问方式和名称可能不同。例如,在 Ubuntu 中可以使用桌面搜索工具输入
user
来查找账户创建工具,而在其他发行版中可能需要通过桌面菜单来定位。
以 openSUSE 的 User and Group Administration 工具为例,创建用户的步骤如下:
1. 点击 “Add” 按钮,弹出 “New Local User” 对话框。
2. 在 “User’s Full Name” 字段中输入用户的全名,该信息将存储在
/etc/passwd
的注释字段中,并可能在某些桌面环境中显示。
3. 在 “Username” 字段中输入用户名,这是用户在 Linux 登录提示中输入的名称。
4. 在 “Password” 和 “Confirm Password” 字段中分别输入两次密码。如果用户在场,可以让用户自行输入密码。
Linux 用户与权限管理全解析
5. 修改和删除账户
在创建用户账户之后,根据实际需求,可能需要对账户进行修改或者删除操作。
5.1 修改账户
修改账户信息通常涉及到更改用户的基本信息,如用户名、密码、主目录、默认 shell 等。不同的 Linux 发行版可能提供不同的工具来完成这些操作,但一些常见的命令可以通用。
-
修改密码
:使用
passwd
命令可以修改用户的密码。例如,要修改当前用户的密码,只需在终端中输入
passwd
,然后按照提示输入当前密码(如果有)和新密码。
-
修改用户信息
:使用
usermod
命令可以修改用户的各种信息。以下是一些常见的用法:
- 修改用户的主目录:
usermod -d /new/home/directory username
- 修改用户的默认 shell:
usermod -s /bin/new_shell username
- 修改用户所属的主要组:
usermod -g new_group username
5.2 删除账户
当用户不再需要使用系统账户时,需要将其删除。删除账户时,要谨慎操作,因为这将永久删除用户的所有数据。可以使用
userdel
命令来删除账户。
-
仅删除账户
:
userdel username
此命令将删除用户账户,但保留用户的主目录和相关文件。
-
删除账户及主目录
:
userdel -r username
此命令将删除用户账户及其主目录和相关文件。
| 操作类型 | 命令 | 说明 |
|---|---|---|
| 修改密码 |
passwd
| 修改当前用户或指定用户的密码 |
| 修改主目录 |
usermod -d /new/home/directory username
| 将指定用户的主目录修改为新的路径 |
| 修改默认 shell |
usermod -s /bin/new_shell username
| 将指定用户的默认 shell 修改为新的 shell |
| 修改主要组 |
usermod -g new_group username
| 将指定用户的主要组修改为新的组 |
| 仅删除账户 |
userdel username
| 删除指定用户账户,保留主目录和相关文件 |
| 删除账户及主目录 |
userdel -r username
| 删除指定用户账户及其主目录和相关文件 |
6. 管理组
除了管理用户账户,还需要对组进行管理,包括创建、修改和删除组。
6.1 创建组
使用
groupadd
命令可以创建新的组。例如,要创建一个名为
developers
的组,可以在终端中输入
groupadd developers
。
6.2 修改组
使用
groupmod
命令可以修改组的信息,如组名和 GID(组 ID)。
- 修改组名:
groupmod -n new_group_name old_group_name
- 修改 GID:
groupmod -g new_gid group_name
6.3 删除组
使用
groupdel
命令可以删除组。例如,要删除名为
developers
的组,可以输入
groupdel developers
。
graph LR
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px
A(组管理):::process --> B(创建组):::process
A --> C(修改组):::process
A --> D(删除组):::process
B --> E(groupadd 组名):::process
C --> F(groupmod -n 新组名 旧组名):::process
C --> G(groupmod -g 新GID 组名):::process
D --> H(groupdel 组名):::process
7. 总结
通过对 Linux 用户与权限管理的学习,我们了解到在 Linux 系统中,账户和组的管理是保障系统安全和正常运行的重要环节。
-
root 权限
:root 权限具有强大的功能,但使用时必须谨慎,遵循安全使用的建议,避免误操作和安全漏洞。
-
账户管理
:掌握创建、修改和删除用户账户的方法,以及如何选择合适的组策略和设置安全的密码。
-
组管理
:学会创建、修改和删除组,以实现对用户的有效分组和文件访问控制。
在实际应用中,要根据具体的需求和场景,合理运用这些知识,确保 Linux 系统的安全性和高效性。同时,不断学习和实践,积累经验,才能更好地管理和维护 Linux 系统。
希望这些内容能帮助你更好地理解和掌握 Linux 用户与权限管理的相关知识,在实际操作中更加得心应手。
超级会员免费看
8447

被折叠的 条评论
为什么被折叠?



