Linux 服务器用户及用户组配置全攻略

作为互联网大厂的后端运维人员,日常工作中频繁与 Linux 服务器打交道。合理配置 Linux 服务器的用户以及用户组,对于保障服务器安全、提升运维效率起着至关重要的作用。今天,就来给大家详细讲讲这方面的操作,无论是初涉 Linux 服务器运维的新手,还是经验丰富的老鸟,相信都能从中收获实用的知识。

Linux 用户类型大揭秘

在深入了解用户及用户组配置之前,先得搞清楚 Linux 系统中用户的类型。Linux 系统主要有以下三种用户类型:

普通用户

这是最常见的用户类型,他们具备执行日常任务的权限,不过一般不能随意修改系统设置,也无法访问其他用户的文件。比如,公司里负责日常业务数据处理的同事,使用 Linux 服务器时可能就会以普通用户身份登录,他们能正常完成自己手头的数据处理工作,但不能去更改服务器的核心配置。

超级用户(root 用户)

root 用户拥有系统的最高权限,堪称 “王者” 一般的存在。系统维护和管理的诸多关键操作都离不开它,像安装、更新或删除软件包(特别是那些需要写入系统目录或更改系统配置的软件),修改系统文件和目录(例如/etc下的配置文件),管理用户账户和用户组(添加、删除用户或更改用户权限),执行系统级别的任务(如磁盘分区、格式化或挂载文件系统)等。

在进行故障排除和修复时,root 用户也起着关键作用,比如解决系统启动问题,编辑启动加载器的配置文件grub,修复文件系统错误或处理磁盘空间不足的情况,清除系统日志或重置系统设置以恢复系统正常运行等。在安全相关操作方面,安装或更新系统安全补丁,配置防火墙规则或 SELinux 策略,审查系统日志以监控潜在的安全威胁,都需要 root 用户的权限。

此外,执行需要大量系统资源的操作,如构建大型软件项目或进行系统备份,也会用到 root 用户权限。但由于 root 用户权限过高,一旦操作失误,可能会给系统带来严重后果,所以非必要时刻,应尽量避免使用 root 用户,更多时候是通过 sudo 命令让普通用户在需要时临时提升权限来执行特定管理任务。

系统用户

这类用户通常不是用来登录的,而是为了运行系统服务和应用程序而创建的。它们默默在后台工作,支撑着整个系统的稳定运行。

用户添加与管理

添加新用户

添加用户需要 root 权限,一般使用useradd命令。例如,要添加一个名为 “user1” 的用户,在终端输入:

sudo useradd user1

这里使用sudo命令,是因为普通用户默认没有添加用户的权限,sudo允许经过授权的用户以系统管理员(通常是 root 用户)的权限来运行程序或命令。sudo 使用时间戳文件来记录用户最近一次成功使用 sudo 的时间,默认有效期大约是 5 分钟,在这段时间内,用户再次使用 sudo 无需重新输入密码。

如果在添加用户时想要指定更多参数,各参数用法如下:

添加用户信息,使用-c或--comment "comment"选项,例如:

sudo useradd -c "This is user1" user1

指定用户的家目录,用-d或--home-dir directory选项,如:

sudo useradd -d /home/user1_dir user1

若未指定家目录,想创建默认的家目录,可加上-m或--create-home选项:

sudo useradd -m user1

指定用户的登录 shell 用-s或--shell shell选项,例如指定 bash 为登录 shell:

sudo useradd -s /bin/bash user1

指定用户的 UID 用-u或--uid uid选项,假设指定 UID 为 1001:

sudo useradd -u 1001 user1

将用户添加到额外的用户组用-G或--groups groups选项,如把用户添加到 “group2” 和 “group3” 组(假设组已存在):

sudo useradd -G group2,group3 user1

指定加密的密码用-p或--password password选项(实际操作中,不建议直接在命令中明文指定密码,通常使用passwd命令设置密码):

# 不推荐的示例,仅作参数说明
sudo useradd -p encrypted_password user1

指定账户的过期日期用-e或--expiredate date选项,日期格式为 YYYY - MM - DD,如设置 2025 年 12 月 31 日过期:

sudo useradd -e 2025 - 12 - 31 user1

指定密码过期后多少天内仍可登录用-L或--inactive days选项,假设设置为 7 天:

sudo useradd -L 7 user1

指定从密码过期开始,多少天后账户失效用-f或--inactive days选项,假设设置为 30 天:

sudo useradd -f 30 user1

不想创建家目录则用-M或--no - create - home选项:

sudo useradd -M user1

不记录到/var/log/lastlog和/var/相关日志用-N或--no - log - init选项 :

sudo useradd -N user1

添加完用户后,需要为用户设置密码,使用sudo passwd user1命令,按照提示输入新密码即可。有时可能会遇到 “密码未通过字典检查” 的提示,此时可直接忽略,再次输入一遍密码就行。

用户账户维护

修改用户信息

如果后续需要修改用户的相关信息,例如修改用户的家目录,可使用usermod命令。假设要将 “user1” 的家目录修改为 “/new/home/dir”,命令为:

sudo usermod -d /new/home/dir user1

删除用户

当某个用户不再需要时,可以使用userdel命令删除用户。比如要删除 “user1”,命令为:

sudo userdel user1

若要同时删除该用户的家目录,可加上-r选项,即:

sudo userdel -r user1

系统用户组的管理

用户组的概念

组群是具有相同特性的用户的逻辑集合,合理使用组群能极大地提高系统管理员组织和管理用户的工作效率。在为资源授权时,把权限赋予某个组群,比给每个用户单独授权要方便得多。当一个用户属于多个组群时,其中有一个组群是该用户的主组群(私有主群),其他组群则是附属组群(标准组群)。每个组群都有一个唯一的组群标识(GID),就如同每个用户都有唯一的用户标识(UID)一样。

创建和管理用户组

创建新用户组

使用sudo groupadd命令来创建新的用户组。例如,要创建一个名为 “group1” 的用户组,在终端输入:

sudo groupadd group1

为用户组添加用户

若要将用户添加到已有的用户组中,使用sudo usermod命令。比如要把 “user1” 添加到 “group1” 组,命令为:

sudo usermod -aG group1 user1

这里的-a选项表示追加,-G指定要加入的组群。

查看用户组信息

可以通过cat /etc/group命令查看系统中所有的用户组信息。该文件中每一行代表一个用户组,格式为 “组名:密码:GID: 组成员” 。执行命令如下:

cat /etc/group

修改用户组信息

如果要修改用户组的名称,使用groupmod命令。假设要将 “group1” 改名为 “new_group1”,命令为:

sudo groupmod -n new_group1 group1

其中-n选项表示新的名称。

理解用户账户和组群的配置文件

在 Linux 系统中,与用户账户和组群相关的配置文件主要有/etc/passwd、/etc/shadow和/etc/group 。

/etc/passwd

这个文件存储了系统中所有用户的基本信息,每行代表一个用户,格式为 “用户名:密码占位符:UID:GID: 用户信息:家目录:登录 Shell” 。虽然密码占位符通常显示为 “x”,但实际密码信息存储在/etc/shadow文件中。通过cat /etc/passwd命令可以查看所有用户信息,新建用户的信息会出现在文件的最后一行。执行命令:

cat /etc/passwd

/etc/shadow

该文件用于存储用户的密码及相关密码策略信息,只有 root 用户有权限查看。文件中每行格式为 “用户名:加密密码:上次修改密码的时间:密码最小使用期限:密码最大使用期限:密码过期警告天数:密码过期后宽限天数:账户失效日期:保留字段” 。由于权限限制,普通用户无法直接查看该文件内容,若以 root 用户查看,可执行:

sudo cat /etc/shadow

/etc/group

前面提到过,此文件记录了系统中所有用户组的信息,每行格式为 “组名:密码:GID: 组成员” 。查看命令与上述查看用户组信息命令相同:

cat /etc/group

权限设置与管理

在 Linux 系统中,权限设置对于保障服务器安全和资源合理访问至关重要。权限分为三个类别:所有者(user)、组(group)和其他人(others),可以针对文件、目录和命令进行权限调整以控制访问。

查看文件或目录的权限

使用ls -l命令可以以长格式显示文件和目录信息,其中就包含权限信息。例如,-rw-r--r--这样的权限表示文件所有者有读和写的权限,所属组群的成员只有读权限,其他用户也只有读权限。第一位的 “-” 表示这是一个文件,如果是 “d” 则表示目录。从第二位开始,每三位一组,分别对应所有者、组群和其他人的权限,“r” 代表读,“w” 代表写,“x” 代表执行。执行命令查看文件 “file.txt” 权限:

ls -l file.txt

修改权限 - chmod 命令

chmod命令用于修改文件或目录的权限。可以使用数字模式或符号模式来修改权限。

数字模式下,读权限对应 4,写权限对应 2,执行权限对应 1。比如要将一个文件 “file.txt” 的权限设置为所有者有读、写、执行权限,组群成员和其他用户只有读权限,命令为:

sudo chmod 744 file.txt

符号模式下,例如要给文件所有者添加执行权限,给组群成员和其他用户删除写权限,命令为:

sudo chmod u+x,g - w,o - w file.txt

其中 “u” 代表所有者,“g” 代表组群,“o” 代表其他人,“+” 表示添加权限,“-” 表示删除权限。

修改文件所有者和所属组群 - chown 和 chgrp 命令

chown命令用于修改文件或目录的所有者。例如,要将 “file.txt” 的所有者改为 “user1”,命令为:

sudo chown user1 file.txt

如果同时要修改所属组群为 “group1”,命令为:

sudo chown user1:group1 file.txt

chgrp命令专门用于修改文件或目录的所属组群,比如要将 “file.txt” 的所属组群改为 “group2”,命令为:

sudo chgrp group2 file.txt

合理配置 Linux 服务器的用户及用户组,再结合恰当的权限管理,能让我们的服务器运行得更加安全、高效。希望大家通过这篇文章,能熟练掌握相关操作,在日常的 Linux 服务器运维工作中更加得心应手。如果在实际操作过程中有任何问题,欢迎在评论区留言交流。

原文链接:,转发请注明来源!