在 Linux 的世界里,权限管理是保障系统安全与高效运行的关键环节。对于学习 Java 全栈开发的同学而言,深入理解 Linux 权限系统不仅有助于日常开发环境的搭建与维护,在未来企业级开发中,面对多用户协作的服务器环境,更是不可或缺的技能。今天,让我们一同开启 Linux 权限系统和软件安装系列学习的第一站 ——Linux 用户与用户组管理。
Linux 作为一款强大的操作系统,支持多用户、多任务同时执行。想象一下,在一个拥有 15 人的开发团队中,5 人属于测试团队,10 人属于运维团队,如何合理分配系统资源与权限,确保工作高效且安全地进行?答案就是巧妙运用 Linux 的用户组机制。
用户组,简单来说,就是一个用于管理用户的组合。它就像是公司里的不同部门,将具有相同权限需求或业务关联的用户归为一组。用户组与用户之间存在多种关系:
在 Linux 系统中,/etc
目录是系统配置的核心所在。要查看用户组资料,我们可以使用以下命令:
cat /etc/group
该文件的格式如下:
root:x:0:
这里,root
是用户组名称;x
是一个占位符,并非代表用户组有密码(在现代 Linux 系统中,用户组密码通常存储在其他安全机制中);0
是用户组的 ID。用户组 ID 在系统中用于标识不同的用户组,就如同每个人的身份证号码一样,具有唯一性。
添加用户组的命令为groupadd
,其基本语法为groupadd [选项 选项值] 用户组的名称
。常见选项如下:
groupadd dev01
groupadd -g 1005 test01
执行上述命令后,我们可以再次使用cat /etc/group
查看用户组资料,确认新用户组是否添加成功。在 Java 项目开发中,可能会根据不同的项目模块或开发阶段创建对应的用户组,方便权限管理。比如,为一个新启动的 Java 微服务项目创建microservice_dev01
用户组,用于管理参与该项目开发的人员权限。
向用户组添加用户需要用到gpasswd
命令,其语法为gpasswd [选项] 用户名称 用户组
。常见选项有:
例如,我们先创建两个用户userwang
和userzhang
:
useradd userwang
useradd userzhang
然后将他们添加到dev01
用户组:
gpasswd -a userwang dev01
gpasswd -a userzhang dev01
添加完成后,使用cat /etc/group
查看用户组资料,会发现dev01
用户组中已经包含了这两个用户。若要从用户组中删除userwang
,则执行:
gpasswd -d userwang dev01
在企业开发中,当有新成员加入项目团队时,管理员可以通过这种方式将其添加到对应的用户组,赋予相应权限。例如,新入职的 Java 开发人员需要加入backend_dev
用户组,参与后端代码开发工作,管理员就可以使用gpasswd -a new_dev_user backend_dev
命令完成添加操作。
删除用户组使用groupdel
命令,语法为groupdel [选项 选项值] 用户组名称
。其中,-f
选项用于强制删除,当组内还有用户时,使用该选项可以将组内用户全部脱离组并删除用户组。例如:
groupdel -f dev01
删除后,再次查看/etc/group
文件,会发现dev01
用户组已不存在。在项目结束或团队架构调整时,可能会需要删除不再使用的用户组,以保持系统的整洁与安全。
Linux 用户主要分为三类:超级用户、系统用户和普通用户。
root
用户,拥有系统的一切权力,其 UID(用户 ID)为 0,在命令行中,其标识符为#
。通过查看/etc/passwd
文件,可以获取用户相关信息。IP
、shutdown
等,它们主要用于系统运行的特定功能,不能登录系统,UID 范围是 1 - 999。$
。/etc/passwd
文件中每行记录的格式如下:root:x:0:0:root:/root:/bin/bash
各字段含义为:
root
:账号名称。x
:账号密码占位符(实际密码存储在/etc/shadow
文件中,且经过加密处理)。0
:用户 ID。0
:用户组 ID。root
:描述信息。/root
:root
账号的家目录,也是登录系统后的默认位置。/bin/bash
:解释器,/bin/bash
表示该用户可以登录系统,/sbin/nologin
则表示不能登录。若要查看单个用户的详细信息,可使用id [用户名]
命令。例如,执行id userwang
,会显示userwang
用户的 UID、所属用户组等信息。在企业开发环境中,通过查看用户信息,可以快速了解用户的权限范围和所属团队,便于进行协作与管理。
添加用户使用useradd
命令,语法为useradd [选项] 用户名称
。常见选项如下:
/sbin/nologin
表示不能登录系统,/bin/bash
表示可以登录系统)。例如:
# 新增用户iwe2
useradd iwe2
# 新增用户iwe1,并且添加到test01组中
useradd -G test01 -s /bin/bash -c "将iwe1账号添加到test01组中" iwe1
在 Java 全栈开发中,当搭建开发环境时,可能需要为不同的开发人员创建独立的用户账号,并将其加入相应的用户组,确保每个开发人员都有合适的权限进行代码编写、调试等工作。
设置用户密码使用passwd
命令,语法为passwd [用户名称]
。Linux 系统中的密码规则较为严格,建议使用复杂且难以猜测的密码,例如结合诗词与特殊字符,如Flzx3qc_14yhl9t
(对应 “大鹏一日同风起_扶摇直上九万里”)。若普通用户遗忘密码,可联系Root
管理员进行重置。在企业环境中,定期更换密码是保障系统安全的重要措施,管理员需要提醒用户设置强密码,并按照规定周期进行密码更新。
用户密码信息存储在/etc/shadow
文件中,但需要注意的是,普通用户没有权限查看该文件,只有root
账号凭借其超级权限可以查看。例如,执行cat /etc/shadow
,会看到类似如下的记录:
iwe2:$6$rounds=100000$bmopnLYXKiLJExew$RgFwLB78RAwg6651/G.oFRxVjrZm5rW11kkz1RwbdidFzzQgabBfH6In5UGOhBsc.YRvgWckqXl6ZZH8JTFcZ1:20030:0:99999:7:::
各字段含义为:
iwe2
:用户名称。$6$rounds=100000$bmopnLYXKiLJExew$RgFwLB78RAwg6651/G.oFRxVjrZm5rW11kkz1RwbdidFzzQgabBfH6In5UGOhBsc.YRvgWckqXl6ZZH8JTFcZ1
:用户密码(经过加密处理)。20030
:最后一次修改时间(从 1970 年 1 月 1 日起计算的天数)。0
:密码修改的间隔时间(默认单位:天)。99999
:密码有效期(默认单位:天)。7
:警告天数,提前 7 天提醒用户修改密码。::
:宽限时间,密码过期后留给用户的最后时间。::
:账号失效时间。:
:保留字段。修改用户信息使用usermod
命令,语法为usermod [选项] 用户名
。常见选项如下:
/sbin/nologin
或/bin/bash
)。例如,要锁定iwe3
账号,执行:
usermod -L iwe3
若要解锁,则执行:
usermod -U iwe3
在企业开发中,当员工离职或休假时,管理员可以通过锁定用户账号,确保系统安全。当员工回归岗位时,再进行解锁操作。
删除用户使用userdel
命令,语法为userdel [选项] 用户名称
。选项-f
用于强制删除,-r
选项用于删除家目录。例如,执行userdel -r iwe2
,会删除iwe2
用户及其家目录。在项目人员变动时,及时删除不再使用的用户账号,有助于保持系统的安全性和整洁性。
切换用户使用su
命令,语法为su [用户名称]
。需要注意的是,root
账号切换其他账号,不需要输入密码;而其他账号切换到root
账号,需要输入密码。例如,普通用户userwang
要切换到root
账号,执行su root
,然后输入root
密码即可完成切换。在日常开发与系统维护中,根据不同的操作需求,合理切换用户账号,确保操作在合适的权限下进行。
auditd
,对系统操作进行日志记录和分析。通过审计,及时发现权限滥用或权限不足的情况,进行调整,保障系统的安全性和稳定性。通过对 Linux 用户与用户组管理的学习,我们为深入理解 Linux 权限系统奠定了基础。在后续的学习中,我们将继续探索 Linux 权限系统的更多奥秘,以及软件安装的相关知识,不断提升自己在 Linux 环境下的操作技能和开发能力。