Linux 用户账户管理与 root 权限安全使用指南
1. root 权限的危险性及安全使用建议
root 权限在 Linux 系统中拥有极高的权力,但同时也伴随着巨大的风险。一个小小的失误,比如意外删除关键应用文件、损坏重要配置文件或备份,都可能导致系统长时间停机,给企业带来灾难性的后果。此外,如果入侵者获得了 root 访问权限,可能会对系统造成不可挽回的损失,如修改配置文件、损坏系统文件以及更改普通用户文件的所有权或权限,使真正的用户无法访问这些文件。
为了安全使用 root 权限,建议采取以下预防措施:
-
评估是否真的需要 root 权限
:有时可以在不使用超级用户权限的情况下实现目标,或者通过更有限的方式使用这些权限。例如,如果只有 root 才能写入可移动磁盘,可以尝试通过调整磁盘权限来解决问题,从而减少对 root 权限的依赖。
-
仔细检查命令
:在以 root 身份输入命令并按下 Enter 键之前,或者在以 root 身份运行的 GUI 程序中点击确认按钮之前,先把手从键盘和鼠标上移开,仔细检查命令,确保其完全正确。一个简单的拼写错误可能会带来严重的后果。
-
避免运行可疑程序
:切勿以 root 身份运行可疑程序。在多用户系统中,不道德的用户可能会试图诱使管理员运行恶意程序,从而获取 root 权限。从随机网站下载的程序也可能存在安全风险,以 root 身份运行这些程序会更加危险。
-
尽量缩短使用时间
:如果只需要以 root 身份输入一两个命令,完成后立即在 root shell 中输入
exit
命令,退出 root 权限或返回普通用户权限。更好的做法是使用
sudo
命令来运行这些命令,因为很容易在使用 root shell 时忽略自己的权限,从而输入不需要 root 权限的命令,每个以 root 身份输入的命令都存在风险。
-
防止他人访问 root shell
:如果在进行 root 维护任务时需要离开计算机,务必在离开前在 root shell 中输入
exit
命令,避免他人获得 root 访问权限。
-
谨慎对待 root 密码
:不要与他人共享 root 密码,在公共场合或他人可能看到的情况下输入密码时要格外小心。如果在专业环境中使用 Linux,雇主可能会有关于谁可以拥有 root 访问权限的规定,要了解并遵守这些规定。同时,一定要选择一个强密码。
以下是一个简单的 mermaid 流程图,展示了使用 root 权限的安全流程:
graph TD;
A[需要执行操作] --> B{是否需要 root 权限};
B -- 否 --> C[使用普通用户权限执行];
B -- 是 --> D[评估必要性];
D -- 必要 --> E[输入命令];
E --> F[检查命令];
F -- 正确 --> G[执行命令];
G --> H[完成后退出 root 权限];
F -- 错误 --> I[修正命令];
I --> E;
D -- 不必要 --> J[寻找替代方法];
2. Linux 账户的基本信息及相关工具
在 Linux 系统中,账户对于系统的正常运行至关重要。通常情况下,大多数任务只需要普通用户权限,你可以使用自己的用户账户来处理这些任务。同时,可以使用
whoami
、
id
、
who
和
w
等工具来识别自己的账户,并了解其他正在使用计算机的用户信息。
偶尔,你可能需要执行一些需要 root 账户权限的管理任务,root 账户可以读写任何普通文件、以底层方式访问硬件、重新配置网络等,而这些是普通用户不被允许的操作。由于 root 权限非常强大,使用时必须谨慎,以免因拼写错误或其他意外情况导致严重问题。
以下是一些相关的建议练习:
- 输入
whoami
后再输入
id
,查看自己的普通用户账户状态。
id
命令可能会显示你所属的各个组,你可以通过网络搜索了解每个组的作用。
- 读取
/etc/passwd
文件或输入
getent passwd
,查看计算机上定义的账户信息。检查是否存在除自己之外的普通用户账户(UID 通常高于 500 或 1000,具体取决于你的发行版),并尝试通过网络搜索了解一些系统账户(UID 低于 500 或 1000)的用途。
3. Linux 账户管理相关问题解答
以下是一些关于 Linux 账户管理的常见问题及解答:
|问题|选项|答案|
|----|----|----|
|系统账户 UID 为 0 的目的是什么?|A. 它是系统管理账户
B. 它是第一个普通用户的账户
C. 无;UID 0 故意未定义
D. 因发行版而异
E. 它是一些服务器默认使用的低权限账户|A|
|在
/etc/passwd
中可以找到普通用户账户的哪些类型的信息?(多选)|A. 用户 ID (UID) 编号
B. 用户所属的每个组的完整列表
C. 账户主目录的路径
D. 账户默认 GUI 桌面环境的路径
E. 账户默认文本模式 shell 的路径|A、C、E|
|你以普通用户身份登录,但想以 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
命令有助于建立这种环境。| - |可审计|
4. Linux 用户和组的创建与管理
Linux 是一个多用户操作系统,一台 Linux 计算机可以支持多个用户,每个用户都有一个唯一的账户。因此,需要对用户账户进行管理,包括创建、修改、删除账户以及管理用户组。
4.1 创建新账户
在许多环境中,添加账户是一项常见的任务,例如企业招聘新员工、学校招收新学生、慈善组织招募新志愿者等。在创建账户之前,需要考虑如何使用用户组以及选择一个好的密码。
4.1.1 确定组策略
Linux 中的用户组是用户的集合,可以使用组来控制对特定文件的访问权限。常见的组策略有两种:
-
用户组(User Groups)
:每个用户都可以有一个关联的组,例如用户
luke
可以有一个名为
luke
的组。用户可以将自己文件的组所有权设置为
luke
,并设置所需的组权限,系统管理员可以将其他用户添加到
luke
组。此后,
luke
组的成员可以根据
luke
用户设置的权限访问这些文件。这种方法强调对单个用户文件的访问控制。
-
项目组(Project Groups)
:根据工作项目、部门隶属关系或其他现实世界的用户分组来创建组。例如,可以为销售部门的用户创建一个名为
sales
的组。该组的成员如果想与其他成员共享文件,可以适当分配组所有权和权限,并将文件存储在商定的位置。这种方法适用于大量用户以易于定义的组进行协作的情况。
这两种方法并不是相互排斥的,可以混合使用或创建自己的方法。同时,用户可以属于多个组,这对于用户组策略的实施是必要的,否则组将与账户冗余。如果使用项目组策略,需要考虑为新用户分配哪个组作为其主组,主组将默认分配给用户文件的组所有权。
以下是一个简单的表格,对比两种组策略:
|组策略|特点|适用场景|
|----|----|----|
|用户组|强调对单个用户文件的访问控制|适用于需要严格控制用户文件访问权限的场景|
|项目组|基于工作项目或部门隶属关系创建组,便于团队协作|适用于大量用户以团队形式协作的场景|
4.1.2 选择一个好的密码
创建账户时,通常需要为其创建一个密码。有时用户可以在创建账户时自行选择密码,有时则需要管理员为用户选择一个初始密码,并要求用户尽快更改。无论哪种情况,都需要向用户宣传选择好密码的重要性。
常见的弱密码包括基于以下内容的密码:
- 家庭成员、朋友和宠物的名字
- 喜欢的书籍、电影、电视节目或其中的角色
- 电话号码、街道地址或社会安全号码
- 任何其他有意义的个人信息
- 字典中能找到的任何单个单词(任何语言)
- 任何简单的键盘或字母数字组合,如
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
。
为了让用户选择好密码,需要向他们宣传以下信息:
- 恶意人员可能会通过了解用户或在社交媒体、网络电话目录、商业资料等上查找个人信息来猜测密码。
- 尽管 Linux 会对密码进行加盐和哈希处理,但存在一些程序可以将整个字典通过 Linux 的密码加盐/哈希算法进行比对,如果匹配则密码被破解。
- 用户账户可能被用作入侵整个计算机的第一步,或作为攻击其他计算机的跳板。
- 用户永远不应向他人透露密码,即使对方声称是系统管理员,因为真正的系统管理员不需要用户的密码。
- 不要在多个系统上使用相同的密码,否则一旦一个账户被攻破,所有使用相同密码的账户都会受到威胁。
- 写下密码或通过电子邮件发送密码都是危险的行为,将密码写在粘纸上贴在电脑显示器上尤其愚蠢。
以下是一个常见弱密码的列表:
- 123456
- password
- 12345678
- qwerty
- football
- monkey
- 1234
- baseball
- dragon
这些密码很容易被暴力破解程序发现,并且在互联网上的密码集合中也有收录,使用这样的密码几乎和不使用密码一样危险,建议创建更安全的密码。
4.2 使用 GUI 工具创建账户
在了解了组策略和如何选择好密码之后,就可以开始创建账户了。一些 Linux 发行版允许通过 GUI 工具来完成这个任务,但不同发行版的 GUI 工具可能有所不同,包括访问方式和工具名称。在一些发行版中,可以使用桌面的搜索工具(如 Ubuntu 的 Dash)输入
user
来找到相应的账户创建工具;在其他发行版中,可能需要通过桌面菜单来找到正确的工具,工具名称可能类似于
Users
、
User Accounts
或
User and Group Administration
。
以 openSUSE 的
User and Group Administration
工具为例,添加用户的步骤如下:
1. 点击
Add
按钮,会弹出
New Local User
对话框。
2. 在
User’s Full Name
字段中输入用户的全名,该信息将存储在
/etc/passwd
的注释字段中,并可能在各种工具中显示,例如在某些桌面环境中用户登录时会显示。
3. 在
Username
字段中输入用户名,这是用户在 Linux 登录提示中输入的名称。
4. 在
Password
字段和
Confirm Password
字段中分别输入密码两次。如果用户在创建账户时在场,可以让用户在此时输入密码。
通过以上步骤,你可以安全地使用 root 权限,并有效地管理 Linux 系统中的用户账户和组。希望这些信息对你有所帮助,让你在 Linux 系统的使用和管理中更加得心应手。
5. 修改和删除账户
在 Linux 系统中,除了创建账户,还需要掌握修改和删除账户的操作。
5.1 修改账户
修改账户信息可能涉及到更改用户的密码、主目录、默认 shell 等。不同的 Linux 发行版可能有不同的工具来完成这些操作,但常见的命令有
usermod
。下面是使用
usermod
命令修改账户信息的一些示例:
-
修改用户主目录
:如果要将用户
testuser
的主目录从
/home/testuser
修改为
/new/home/testuser
,可以使用以下命令:
usermod -d /new/home/testuser testuser
-
修改用户默认 shell
:若要将用户
testuser的默认 shell 从/bin/bash修改为/bin/zsh,可以使用如下命令:
usermod -s /bin/zsh testuser
-
修改用户所属组
:把用户
testuser从当前组转移到newgroup组,可以使用以下命令:
usermod -g newgroup testuser
以下是一个简单的表格,总结
usermod
命令的常用选项:
|选项|作用|
|----|----|
|
-d
|修改用户主目录|
|
-s
|修改用户默认 shell|
|
-g
|修改用户所属主组|
|
-G
|添加用户到额外的组|
5.2 删除账户
当某个用户不再需要使用系统时,需要删除其账户。删除账户时要谨慎,因为这将永久删除与该账户相关的所有数据。可以使用
userdel
命令来删除账户。以下是删除账户的操作步骤:
1.
确认要删除的账户
:首先确定要删除的账户名称,例如
testuser
。
2.
删除账户
:使用
userdel
命令删除账户。如果要同时删除用户的主目录和邮件 spool,可以使用
-r
选项:
userdel -r testuser
以下是删除账户的流程图:
graph TD;
A[确定要删除的账户] --> B{是否要删除主目录和邮件 spool};
B -- 是 --> C[使用 userdel -r 命令删除账户];
B -- 否 --> D[使用 userdel 命令删除账户];
C --> E[账户删除完成];
D --> E;
6. 管理用户组
在 Linux 系统中,用户组的管理也是账户管理的重要组成部分,包括创建、修改和删除用户组。
6.1 创建用户组
可以使用
groupadd
命令来创建新的用户组。例如,要创建一个名为
newgroup
的用户组,可以使用以下命令:
groupadd newgroup
6.2 修改用户组
使用
groupmod
命令可以修改用户组的信息,如组名和 GID(组 ID)。以下是一些示例:
-
修改组名
:将组名从
oldgroup
修改为
newgroup
,可以使用以下命令:
groupmod -n newgroup oldgroup
-
修改 GID
:将组
testgroup的 GID 修改为1005,可以使用如下命令:
groupmod -g 1005 testgroup
以下是
groupmod
命令常用选项的表格:
|选项|作用|
|----|----|
|
-n
|修改组名|
|
-g
|修改 GID|
6.3 删除用户组
使用
groupdel
命令可以删除用户组。例如,要删除名为
testgroup
的用户组,可以使用以下命令:
groupdel testgroup
7. 总结
Linux 系统的账户和组管理是系统管理的重要基础。在使用 root 权限时,必须时刻牢记其危险性,严格遵循安全使用建议,如评估必要性、仔细检查命令、避免运行可疑程序等,以防止因操作失误导致系统出现严重问题。
在账户管理方面,要根据不同的场景选择合适的组策略,如用户组策略适用于严格控制用户文件访问权限的场景,项目组策略适用于团队协作的场景。同时,要注重密码的安全性,向用户宣传选择强密码的重要性,并指导他们正确创建密码。
对于账户的创建、修改、删除以及用户组的管理,要熟练掌握相应的命令和操作步骤,如使用
useradd
创建账户、
usermod
修改账户信息、
userdel
删除账户,使用
groupadd
创建用户组、
groupmod
修改用户组信息、
groupdel
删除用户组等。
通过合理有效地管理账户和组,可以提高 Linux 系统的安全性和可用性,确保系统的稳定运行。希望以上内容能帮助你更好地管理 Linux 系统中的账户和组,在实际操作中更加得心应手。
超级会员免费看
515

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



