欢迎光临
我们一直在努力

Linux账号与权限管理

在Linux系统的运维工作中,账号与权限管理是保障系统安全的第一道防线,Linux通过严谨的账号分类、权限机制和配置文件,实现了对用户操作的精细化管控。

一、先搞懂:Linux账号体系的底层逻辑

Linux是一个多用户、多任务的操作系统,每一个能登录系统的用户,都对应着一个唯一的账号。这些账号不是孤立存在的,而是通过“用户-组”的关联方式,实现权限的批量管理。

1. 用户账号的三种类型

Linux里的用户账号主要分为三类,各自的权限和用途完全不同:

超级用户(root):这是系统的“管理员账号”,拥有对整个系统的最高权限,可以执行任何操作,比如删除系统文件、修改核心配置。它就像Windows里的Administrator账号,但权限更大。日常操作中我们应该避免直接用root登录,否则一个误操作就可能导致系统崩溃。

普通用户:这类账号需要由root或其他管理员创建,权限受到严格限制。普通用户只能在自己的“家目录”(比如 /home/zhangsan )里拥有完整的读写权限,对系统其他目录的访问则需要额外授权。

程序用户:这类账号并不是给人用的,而是给系统服务或程序运行时使用的,比如 nginx 、 mysql 账号。它们通常不能登录系统,主要作用是让服务以最低权限运行,避免程序漏洞被黑客利用后获取系统最高权限。

2. 组账号:批量管理权限的利器

为了更高效地管理用户权限,Linux引入了“组账号”的概念。我们可以把多个用户加入同一个组,然后给这个组设置权限,组里的所有用户都会自动继承这些权限。

基本组:每个用户创建时,系统会自动创建一个和用户名同名的组,这个组就是该用户的基本组。用户的文件默认都会归属到这个基本组。

附加组:除了基本组,用户还可以被加入其他组,这些组就叫附加组。比如技术部的员工 zhangsan ,基本组是 tech ,后来因为工作需要被加入邮件管理员组 mailadm ,那么 mailadm 就是他的附加组。

3. UID与GID:系统识别用户的“身份证”

在Linux系统内部,其实并不是通过用户名来识别用户的,而是通过数字形式的UID(用户标识号)和GID(组标识号)。

UID规则:root用户的UID固定为0,程序用户的UID默认在1~499之间,普通用户的UID则从500开始分配。

GID规则:和UID对应,root组的GID固定为0,程序组的GID默认在1~499之间,普通组的GID从500开始分配。

二、核心配置文件:账号信息的“数据库”

Linux的账号信息都保存在几个核心配置文件里,理解这些文件的结构,是深入掌握账号管理的基础。

1.  /etc/passwd :用户基本信息文件

这个文件里保存了所有用户的基本信息,包括用户名、UID、GID、家目录等,任何用户都可以读取它的内容。每一行对应一个用户,用冒号 : 分隔成7个字段:

1. 用户名:登录系统时使用的名称,比如 root 、 zhangsan 。

2. 密码占位符:这里默认显示 x ,表示密码已经被加密并转移到 /etc/shadow 文件中。

3. UID:用户的唯一标识号。

4. GID:用户所属基本组的标识号。

5. 用户说明:可以填写用户的全名或备注信息。

6. 家目录:用户登录后的默认工作目录,普通用户一般是 /home/用户名 。

7. 登录Shell:用户登录后使用的命令解释器,默认是 /bin/bash ,如果设置为 /sbin/nologin 则表示该用户不能登录系统。

 举个列子, root:x:0:0:root:/root:/bin/bash 这一行就表示:用户名是root,密码存在 /etc/shadow 里,UID和GID都是0,用户说明是root,家目录是 /root ,登录Shell是 /bin/bash 。

2.  /etc/shadow :用户密码信息文件

这个文件是 /etc/passwd 的“安全升级版”,保存了用户的加密密码、密码有效期等敏感信息,只有root用户才能读取。每一行同样用冒号分隔,包含9个字段,其中最关键的是:

第2个字段:经过SHA-512加密的密码字符串,如果是 !! 或 * 则表示该用户没有密码,无法登录。

第5个字段:密码的最长有效天数,默认是99999,表示不限制。

第7个字段:密码过期后多少天内禁用该用户。

3.  /etc/group :组信息文件

这个文件保存了所有组的信息,包括组名、GID、组成员等,每一行用冒号分隔成4个字段:

1. 组名:组的名称,比如 root 、 tech 。

2. 组密码占位符:通常显示 x ,组密码保存在 /etc/gshadow 中(很少使用)。

3. GID:组的唯一标识号。

4. 组成员:属于这个组的用户列表,多个用户用逗号分隔。

比如 root:x:0:root 这一行表示:组名是root,GID是0,组成员是root用户。

三、用户账号管理:创建、修改与删除

了解了基本概念和配置文件,我们就可以动手管理用户账号了。Linux提供了一系列命令来完成这些操作,下面是最常用的实战命令。

1. 创建用户: useradd 

这是创建用户的核心命令,最简单的用法就是直接跟用户名:

useradd zhangsan

执行这个命令后,系统会自动完成以下操作:

在 /etc/passwd 和 /etc/shadow 文件末尾添加该用户的记录。

创建一个和用户名同名的基本组。

在 /home 目录下创建用户的家目录 /home/zhangsan ,并复制初始配置文件(比如 .bashrc )。

如果需要自定义用户属性,可以添加各种选项:

-u :指定用户的UID,比如 useradd -u 1005 lisi 。

-d :指定用户的家目录,比如 useradd -d /opt/wangwu wangwu 。

-e :指定用户的失效日期,格式为 YYYY-MM-DD ,比如 useradd -e 2026-12-31 ftpuser 。

-g :指定用户的基本组,比如 useradd -g tech zhaoliu 。

-G :指定用户的附加组,多个组用逗号分隔,比如 useradd -G tech,mailadm sunqi 。

-s :指定用户的登录Shell,比如 useradd -s /sbin/nologin mysql (创建程序用户)。

举个例子,创建一个管理员账号 admin ,基本组为 wheel ,附加组为 root ,家目录为 /admin :

useradd -d /admin -g wheel -G root admin

2. 设置密码: passwd 

创建用户后,必须设置密码才能登录,使用 passwd 命令:

passwd zhangsan

执行后会提示你输入两次密码,输入时不会显示任何字符,这是正常的安全机制。如果是root用户,可以直接修改其他用户的密码,不需要验证旧密码。

3. 修改用户: usermod 

如果需要修改已存在用户的属性,使用 usermod 命令,选项和 useradd 基本一致:

修改用户的附加组: usermod -G tech,dev zhangsan 。

锁定用户账号(禁止登录): usermod -L zhangsan 。

解锁用户账号: usermod -U zhangsan 。

4. 删除用户: userdel 

删除用户的命令是 userdel ,加上 -r 选项可以同时删除用户的家目录和邮件文件:

userdel -r zhangsan

⚠️ 注意:如果用户当前正在登录系统,无法直接删除,需要先让用户退出登录。

四、组账号管理:批量权限的高效配置

组账号的管理命令和用户账号类似,下面是核心操作:

1. 创建组: groupadd 

创建一个新组的命令很简单:

groupadd tech

如果需要指定GID,可以用 -g 选项:

groupadd -g 1008 dev

2. 修改组: groupmod 

修改组的名称或GID:

修改组名: groupmod -n department tech (把tech组改名为department)。

修改GID: groupmod -g 1009 dev 。

3. 删除组: groupdel 

删除一个空组(组里没有用户):

groupdel tech

⚠️ 注意:如果组是某个用户的基本组,无法直接删除,需要先删除该用户或修改用户的基本组。

4. 添加组成员: gpasswd 

把用户加入组或从组中移除:

把用户加入组: gpasswd -a zhangsan tech (把zhangsan加入tech组)。

把用户从组中移除: gpasswd -d zhangsan tech 。

设置组管理员: gpasswd -A zhangsan tech (让zhangsan管理tech组,可以添加/删除成员)。

五、账号信息查询:快速定位用户与组

有时候我们需要快速查询用户或组的信息,下面几个命令可以帮你高效完成:

1.  groups :查询用户所属的组

比如查询 zhangsan 属于哪些组:

groups zhangsan

输出结果会显示该用户的基本组和附加组,比如 zhangsan : tech mailadm 。

2.  id :查询用户的UID、GID和组信息

查询 root 用户的标识信息:

id root

输出结果会显示UID、GID以及所属的所有组,比如 uid=0(root) gid=0(root) groups=0(root),1(daemon) 。

3.  w :查询当前登录的用户信息

这个命令可以查看当前有哪些用户登录了系统,以及他们的操作:

w

输出结果会包含用户名、登录终端、登录时间、来源IP以及当前正在执行的命令。

4.  grep :从配置文件中筛选信息

比如从 /etc/group 中查询包含 root 的组:

grep "root" /etc/group

这在排查用户组归属时非常有用。

六、新手避坑指南:常见问题与解决思路

1. 创建用户时提示“UID已被使用”

这是因为指定的UID已经被其他用户占用了,解决方法是换一个未被使用的UID,或者不指定UID让系统自动分配。

2. 普通用户无法执行管理员命令

普通用户需要在命令前加 sudo 来临时获取root权限,比如:

sudo useradd lisi

执行后需要输入当前用户的密码,验证通过后就能以root权限执行命令。

3. 删除用户时提示“用户已登录”

可以用 pkill -u 用户名 强制终止该用户的所有进程,然后再删除用户:

pkill -u zhangsan

userdel -r zhangsan

4. 忘记root密码怎么办

重启系统,在开机引导界面按 e 进入编辑模式,找到以 linux16 开头的行,在末尾添加 init=/bin/bash ,然后按 Ctrl+X 启动系统,进入单用户模式后,用 passwd root 重置密码。

七、总结:账号与权限管理的核心原则

1. 最小权限原则:给用户分配刚好够用的权限,不要用root账号日常操作。

2. 组权限优先:尽量通过组来管理权限,避免给每个用户单独设置权限,提高管理效率。

3. 定期审计:定期检查 /etc/passwd 、 /etc/shadow 等文件,删除不再使用的账号,避免安全隐患。

4. 密码安全:设置复杂的密码,定期更换,避免使用弱密码。

掌握这些知识,你就能应对绝大多数Linux账号与权限管理的场景了。记住,实践是最好的老师,建议你在虚拟机里反复练习这些命令,熟悉每个操作的效果和报错场景,这样在遇到问题时才能快速定位和解决。

赞(0)
未经允许不得转载:171主机测评 » Linux账号与权限管理
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址