作为互联网大厂的后端运维人员,日常工作中频繁与 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 服务器运维工作中更加得心应手。如果在实际操作过程中有任何问题,欢迎在评论区留言交流。