用户与权限
2026/2/25原创大约 4 分钟约 1117 字
目录
暂无目录
一、用户与组基础概念
1.1 用户类型
Linux系统中有三种主要用户类型:
| 用户类型 | 描述 | 示例 |
|---|---|---|
| 超级用户(root) | 拥有系统最高权限,UID为0 | root |
| 系统用户 | 用于运行系统服务,UID通常在1-999之间 | www-data, mysql |
| 普通用户 | 日常使用的用户,UID通常从1000开始 | john, alice |
1.2 用户组
- 主组(Primary Group):用户默认所属的组,创建用户时自动创建同名组
- 附加组(Secondary Group):用户可以加入的其他组,用于共享权限
二、核心管理命令
2.1 用户管理
创建用户
# 创建基本用户
useradd username
# 创建用户并指定家目录和登录shell
useradd -d /home/username -s /bin/bash username
# 创建用户并设置过期日期
useradd -e 2023-12-31 username设置密码
passwd username修改用户属性
# 修改用户家目录
usermod -d /new/home/dir username
# 修改用户所属组
usermod -g new_primary_group username
# 添加用户到附加组
usermod -aG group1,group2 username删除用户
# 删除用户但保留家目录
userdel username
# 删除用户及家目录
userdel -r username2.2 组管理
创建组
groupadd groupname修改组
# 修改组名
groupmod -n new_groupname old_groupname删除组
groupdel groupname2.3 查看信息
# 查看当前用户信息
whoami
id
# 查看用户列表
cat /etc/passwd
# 查看组列表
cat /etc/group
# 查看用户密码信息(加密)
cat /etc/shadow三、文件权限管理
3.1 权限表示方法
符号表示
-rw-r--r-- 1 owner group size date filename- 第一位:文件类型(-:普通文件, d:目录, l:链接)
- 接下来三位:所有者权限(r:读, w:写, x:执行)
- 中间三位:组权限
- 最后三位:其他用户权限
数字表示
| 权限 | 数字 |
|---|---|
| r | 4 |
| w | 2 |
| x | 1 |
常见组合:
- 755:所有者读/写/执行,组和其他读/执行
- 644:所有者读/写,组和其他读
- 700:所有者读/写/执行,其他无权限
3.2 修改权限
# 符号方式修改
chmod u+x filename # 给所有者添加执行权限
chmod g-w filename # 移除组的写权限
chmod o=r filename # 设置其他用户只读权限
chmod a+x filename # 给所有用户添加执行权限
# 数字方式修改
chmod 755 filename
chmod 644 filename3.3 修改所有者
# 修改文件所有者
chown owner:group filename
# 递归修改目录所有者
chown -R owner:group directory四、特殊权限
4.1 SUID(Set User ID)
# 设置SUID
chmod u+s filename
# 示例:passwd命令拥有SUID权限,普通用户可以修改自己的密码
ls -l /usr/bin/passwd4.2 SGID(Set Group ID)
# 设置SGID
chmod g+s filename
# 目录设置SGID后,新创建的文件自动继承目录的组
chmod g+s directory4.3 Sticky Bit
# 设置Sticky Bit
chmod +t directory
# 示例:/tmp目录设置Sticky Bit,用户只能删除自己的文件
ls -ld /tmp五、实战案例
5.1 案例1:创建Web服务器用户
# 创建www组
groupadd www
# 创建nginx用户,不允许登录,家目录为空
useradd -r -s /sbin/nologin -g www nginx
# 设置网站目录权限
chown -R nginx:www /var/www/html
chmod -R 755 /var/www/html5.2 案例2:开发团队权限管理
# 创建开发组
groupadd dev-team
# 创建开发人员用户
useradd -g dev-team -G sudo developer1
useradd -g dev-team -G sudo developer2
# 设置项目目录权限
mkdir /opt/project
chown root:dev-team /opt/project
chmod 775 /opt/project六、最佳实践
6.1 安全原则
- 最小权限原则:用户只拥有完成工作所需的最小权限
- 定期审计:定期检查用户权限和文件权限
- 避免直接使用root:使用sudo代替直接登录root
- 强密码策略:设置复杂密码并定期更换
6.2 sudo配置
# 编辑sudo配置
visudo
# 允许用户执行所有命令
developer ALL=(ALL) ALL
# 允许用户执行特定命令
developer ALL=(ALL) /usr/bin/apt, /usr/bin/systemctl
# 不需要密码执行sudo
developer ALL=(ALL) NOPASSWD: ALL七、常见问题排查
7.1 权限拒绝错误
# 检查文件权限
ls -l filename
# 检查用户所属组
id username
# 检查SELinux状态(如果启用)
getenforce7.2 用户无法登录
# 检查用户shell是否有效
cat /etc/passwd | grep username
# 检查家目录权限
ls -ld /home/username
# 检查密码是否过期
chage -l username