Linux账号与权限管理完全指南

1. Linux账号管理基础

Linux作为多用户操作系统,账号管理是其核心功能之一。每个用户都拥有独立的账号,系统通过UID(用户ID)和GID(组ID)来识别和管理用户权限。

1.1 用户账号类型

Linux系统主要包含三类用户账号:

  • 超级用户(root):UID为0,拥有系统最高权限
  • 系统用户:UID范围1-999,用于运行系统服务
  • 普通用户:UID从1000开始,由管理员创建

1.2 用户配置文件

用户信息主要存储在以下配置文件中:

  • /etc/passwd:存储用户基本信息
  • /etc/shadow:存储加密后的用户密码
  • /etc/group:存储用户组信息
  • /etc/gshadow:存储用户组密码

重要提示:直接编辑这些配置文件存在风险,建议使用专用命令修改

2. 用户管理实操

2.1 用户创建与删除

创建用户的基本命令:

useradd -m -s /bin/bash username # 创建用户并建立家目录 passwd username # 设置用户密码

删除用户的正确方式:

userdel -r username # -r参数会同时删除用户家目录

2.2 用户属性修改

常用修改命令:

usermod -l newname oldname # 修改用户名 usermod -d /new/home username # 修改家目录 usermod -s /bin/zsh username # 修改默认shell

3. 组管理技巧

3.1 组的基本操作

创建和删除组:

groupadd groupname groupdel groupname

将用户加入组:

usermod -aG groupname username # -aG保持原有组关系

3.2 有效组管理

查看用户所属组:

groups username

切换有效组:

newgrp groupname # 临时切换有效组

4. 权限管理详解

4.1 文件权限基础

Linux文件权限分为三类:

  • 所有者权限(user)
  • 所属组权限(group)
  • 其他用户权限(other)

每种权限包含:

  • 读(r,4)
  • 写(w,2)
  • 执行(x,1)

4.2 权限修改方法

使用chmod命令修改权限:

chmod 755 filename # 数字方式 chmod u+x filename # 符号方式

修改文件所有者:

chown user:group filename

5. 特殊权限设置

5.1 SUID/SGID权限

  • SUID:执行时以文件所有者身份运行
  • SGID:执行时以文件所属组身份运行

设置方法:

chmod u+s filename # 设置SUID chmod g+s filename # 设置SGID

5.2 粘滞位

常用于共享目录,防止用户删除他人文件:

chmod +t directory

6. 访问控制列表(ACL)

6.1 ACL基本概念

ACL提供更精细的权限控制,可以针对特定用户/组设置权限。

检查文件系统是否支持ACL:

mount | grep acl

6.2 ACL操作命令

设置ACL权限:

setfacl -m u:username:rwx filename

查看ACL权限:

getfacl filename

7. 安全最佳实践

7.1 密码策略设置

修改/etc/login.defs配置密码策略:

PASS_MAX_DAYS 90 PASS_MIN_DAYS 7 PASS_WARN_AGE 14

7.2 用户权限限制

使用sudo限制普通用户权限:

visudo # 编辑sudoers文件

7.3 登录安全

限制root直接登录:

# 修改/etc/ssh/sshd_config PermitRootLogin no

8. 常见问题排查

8.1 权限问题诊断

检查权限问题的步骤:

  1. 确认当前用户身份:whoami
  2. 检查文件权限:ls -l filename
  3. 检查用户所属组:groups username
  4. 检查ACL权限:getfacl filename

8.2 用户登录问题

排查流程:

  1. 检查账号是否锁定:passwd -S username
  2. 检查shell是否正确:cat /etc/passwd | grep username
  3. 检查家目录权限:ls -ld /home/username

9. 实用脚本示例

9.1 批量创建用户

#!/bin/bash for user in user1 user2 user3; do useradd -m -s /bin/bash $user echo "$user:password123" | chpasswd done

9.2 权限检查脚本

#!/bin/bash for file in /path/to/files/*; do if [ $(stat -c %a $file) -gt 755 ]; then echo "Warning: $file has overly permissive permissions" fi done

10. 进阶技巧

10.1 用户会话管理

查看当前登录用户:

who w

终止用户会话:

pkill -KILL -u username

10.2 资源限制

通过/etc/security/limits.conf限制用户资源:

username hard nproc 100 # 限制进程数 username hard fsize 50000 # 限制文件大小(KB)

掌握Linux账号与权限管理是系统管理员的核心技能。建议定期审计系统账号和权限设置,遵循最小权限原则,确保系统安全稳定运行。