尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Linux用户权限管理与文件权限配置详解

Linux用户权限管理与文件权限配置详解 1. Linux用户与权限管理基础概念在Linux系统中用户和权限管理是系统安全的核心机制。与Windows系统不同Linux采用了一种更加精细和灵活的权限控制方式。每个登录系统的用户都被分配了唯一的用户IDUID系统通过UID而非用户名来识别用户。用户账户信息主要存储在三个关键文件中/etc/passwd保存用户账户的基本信息/etc/shadow存储加密后的用户密码/etc/group定义用户组信息提示使用ls -l命令查看文件时输出的第一列就是权限信息例如-rwxr-xr--表示文件所有者有读、写、执行权限同组用户有读和执行权限其他用户只有读权限。Linux权限系统基于三种基本权限读r4写w2执行x1这些权限可以分别赋予三类用户文件所有者user文件所属组的成员group其他用户others2. 用户管理实战操作2.1 创建新用户创建用户的基本命令是useradd但实际工作中更常用的是adduser命令在大多数发行版中这是一个更友好的交互式脚本。以下是创建用户的详细步骤# 创建用户并同时创建家目录 sudo useradd -m username # 设置用户密码 sudo passwd username # 更完整的创建方式推荐 sudo useradd -m -s /bin/bash -c User Description username参数说明-m自动创建用户家目录-s指定用户默认shell-c添加用户描述信息2.2 用户组管理Linux使用组来简化权限管理。一个用户可以属于多个组其中一个是主组primary group其他是附加组supplementary groups。# 创建新组 sudo groupadd groupname # 将用户添加到组 sudo usermod -aG groupname username # 查看用户所属组 groups username注意使用usermod修改用户组时一定要加上-a参数append否则用户会被从其他组中移除。2.3 用户删除与修改# 删除用户但保留家目录 sudo userdel username # 完全删除用户包括家目录 sudo userdel -r username # 修改用户属性 sudo usermod -l newname oldname # 修改用户名 sudo usermod -d /new/home -m username # 修改家目录位置3. 文件权限深度解析3.1 权限表示方法Linux文件权限可以用三种方式表示符号表示rwxr-xr--八进制表示754二进制表示111 101 100权限计算示例rwx 421 7r-x 401 5r-- 400 43.2 修改文件权限chmod命令用于修改文件权限# 符号模式 chmod ux file # 给所有者添加执行权限 chmod g-w file # 移除组用户的写权限 chmod or file # 设置其他用户只有读权限 # 数字模式 chmod 755 file # rwxr-xr-x chmod 644 file # rw-r--r--3.3 特殊权限位除了基本的rwx权限外Linux还有三个特殊权限位SUIDSet User ID4文件执行时以文件所有者的权限运行典型应用/usr/bin/passwdSGIDSet Group ID2对目录新建文件继承目录的组对文件以文件所属组的权限运行Sticky Bit1对目录只有文件所有者才能删除/重命名文件典型应用/tmp目录设置特殊权限chmod us file # 设置SUID chmod gs dir # 设置SGID chmod t dir # 设置Sticky Bit # 数字表示法 chmod 4755 file # SUID rwxr-xr-x chmod 2775 dir # SGID rwxrwxr-x chmod 1777 dir # Sticky Bit rwxrwxrwx4. 高级权限管理技巧4.1 ACL访问控制列表基本权限系统有时不够灵活ACL提供了更精细的权限控制# 查看ACL getfacl file # 设置ACL setfacl -m u:username:rwx file # 给特定用户添加权限 setfacl -m g:groupname:r-x file # 给特定组添加权限 setfacl -x u:username file # 移除特定用户的ACL条目 # 默认ACL对新创建的文件生效 setfacl -d -m u:username:rwx dir4.2 权限继承与umaskumask决定了新建文件的默认权限# 查看当前umask umask # 设置umask umask 0022 # 目录权限755文件权限644umask计算方式目录权限 777 - umask文件权限 666 - umask因为新建文件默认没有执行权限4.3 sudo权限配置通过/etc/sudoers文件可以配置用户的管理员权限# 安全编辑sudoers文件 sudo visudo常见配置示例# 允许用户执行所有命令 username ALL(ALL:ALL) ALL # 允许组执行特定命令 %groupname ALL(ALL) /usr/bin/apt, /usr/bin/dpkg # 无需密码执行命令 username ALL(ALL) NOPASSWD: /usr/bin/systemctl5. 常见问题排查与解决5.1 权限不足错误处理当遇到Permission denied错误时可以按照以下步骤排查确认当前用户身份whoami id检查文件权限ls -l file检查文件所属用户和组ls -n file # 显示数字形式的UID/GID检查用户所属组groups username检查ACL如果有设置getfacl file5.2 特殊场景权限问题场景1脚本无法执行确保脚本有执行权限chmod x script.sh确保脚本第一行指定了正确的解释器#!/bin/bash如果脚本需要读写文件确保对目标文件有相应权限场景2用户无法删除文件检查文件所在目录的权限检查目录是否设置了Sticky Bit检查文件是否被设置为不可变immutablelsattr file sudo chattr -i file # 移除不可变属性场景3Docker容器内的权限问题容器内进程默认以root运行可能导致主机文件权限问题解决方案# 运行时指定用户 docker run -u $(id -u):$(id -g) ... # 在Dockerfile中创建特定用户 RUN useradd -u 1000 -ms /bin/bash appuser USER appuser6. 安全最佳实践最小权限原则只授予必要的权限服务账户应该使用非root用户限制sudo权限只允许执行必要的命令定期审计# 查找SUID/SGID文件 find / -perm /4000 -type f 2/dev/null find / -perm /2000 -type f 2/dev/null # 查找全局可写文件 find / -perm -2 -type f 2/dev/null密码策略设置密码过期时间使用强密码策略配置/etc/login.defs和PAM模块用户生命周期管理及时禁用或删除不再使用的账户定期检查/etc/passwd中的无效账户日志监控监控/var/log/auth.log配置fail2ban防止暴力破解在实际工作中我发现很多权限问题都源于对基础概念理解不深。比如我曾经遇到一个案例开发人员抱怨无法删除/tmp目录下的文件最终发现是因为目录设置了Sticky Bit。理解这些机制后解决问题就变得简单多了。
返回列表