Shell核心基础命令(下)——系统与权限操作

张开发
2026/4/9 22:29:30 15 分钟阅读

分享文章

Shell核心基础命令(下)——系统与权限操作
Shell核心基础命令下——系统与权限操作前言在Linux系统中权限管理是系统安全的基石。作为多用户多任务操作系统Linux通过精细的用户-组-权限模型来控制对系统资源的访问。本文将深入讲解Shell中与系统权限相关的核心命令包括用户管理、组管理以及文件权限控制帮助你掌握Linux系统管理的核心技能。一、理解Linux权限模型在深入命令之前我们需要理解Linux的三层权限架构用户User系统的使用者每个用户拥有唯一的UID组Group用户的集合用于批量管理权限每个组拥有唯一的GID其他Others系统中除文件所有者和所属组之外的所有用户每个文件或目录都关联着所有者Owner、所属组Group、其他用户Others三类权限。二、用户管理命令1. 查看当前用户# 查看当前登录用户名whoami# 查看当前登录用户的详细信息idusername# 查看当前登录的所有用户whow# 查看登录历史lastid命令可以显示用户的UID、GID以及所属的所有组是验证用户信息的利器。2. 用户创建与删除# 创建新用户带主目录和指定shellsudouseradd-m-s/bin/bash username# 设置用户密码sudopasswdusername# 删除用户-r 同时删除家目录和邮件池sudouserdel-rusername注意使用userdel -r前务必确认该用户的所有数据不再需要建议先执行find / -user username查找该用户所有文件。3. 修改用户属性usermodusermod是用户管理的瑞士军刀常用选项包括# 修改用户名sudousermod-lnewname oldname# 修改UIDsudousermod-u2001username# 修改主组sudousermod-gdevelopers username# 添加到附加组-a 表示追加不覆盖现有组sudousermod-aGdocker,sudo username# 修改家目录并移动文件sudousermod-d/home/newhome-musername# 修改登录shellsudousermod-s/bin/zsh username# 锁定/解锁用户密码sudousermod-Lusername# 锁定sudousermod-Uusername# 解锁重要提示使用-G而不加-a会替换所有附加组这是常见的操作失误务必使用-aG来追加组。三、组管理命令Linux通过组来简化权限管理。将权限分配给组再将用户加入组比单独为每个用户授权更高效。1. 组的类型主组Primary Group用户创建时自动建立与用户名同名用户创建的文件默认属于此组附加组Secondary Group用户可属于多个附加组获得额外的权限2. 组管理基本命令# 创建新组sudogroupadddevelopers# 创建组并指定GIDsudogroupadd-g600mygroup# 修改组名sudogroupmod-nnewname oldname# 修改组GIDsudogroupmod-g700mygroup# 删除组sudogroupdelmygroup# 查看用户所属组groupsusername# 查看系统所有组cat/etc/group# 查看组密码信息需要root权限cat/etc/gshadow3. 组成员管理# 添加用户到组gpasswd方式sudogpasswd-ausername groupname# 从组中移除用户sudogpasswd-dusername groupname# 批量设置组成员会替换现有成员sudogpasswd-Muser1,user2,user3 groupname# 设置组管理员sudogpasswd-Aadminuser groupname# 设置组密码sudogpasswd groupname4. 组文件检查# 检查组文件完整性grpck# 转换为shadow组格式提升安全性grpconv四、文件权限管理1. 查看权限ls -lls-lfilename# 输出示例-rwxr-xr-x 1 user group 1234 Jan 1 12:00 filename权限位解析第1位文件类型-文件d目录l链接第2-4位所有者权限rwx第5-7位组权限rwx第8-10位其他用户权限rwx2. chmod修改文件权限chmod支持两种表示法符号法和数字法。符号表示法chmodux file.txt# 给所有者添加执行权限chmodg-w file.txt# 移除组的写权限chmodor file.txt# 设置其他用户为只读chmodax script.sh# 给所有用户添加执行权限chmodurwx,grx,or file.txt# 组合设置数字表示法更常用# 权限数值r4, w2, x1chmod755file.txt# rwxr-xr-xchmod644file.txt# rw-r--r--chmod700private.key# rwx------仅所有者chmod777shared.txt# rwxrwxrwx不推荐常用权限组合755目录和可执行文件的标准权限644普通文件的标准权限600敏感配置文件如SSH私钥777极度危险任何人可修改执行3. chown修改文件所有者# 修改所有者sudochownnewuser file.txt# 同时修改所有者和组sudochownnewuser:newgroup file.txt# 仅修改组效果同chgrpsudochown:newgroup file.txt# 递归修改目录sudochown-Ruser:group /path/to/dir# 参考其他文件的所有者sudochown--referenceref.txt target.txt注意只有root用户可以使用chown这是为了防止用户绕过磁盘配额和伪造文件归属。4. chgrp修改文件所属组# 修改文件所属组sudochgrpdevelopers file.txt# 递归修改sudochgrp-Rdevelopers /path/to/dir# 用户可以将文件改为自己所属的组无需sudochgrpmygroup file.txt# 如果当前用户属于mygroup五、特殊权限位Linux还有三个特殊权限位位于传统rwx之前1. SUIDSet User ID- 4000chmodus /usr/bin/someprogram# 或chmod4755/usr/bin/someprogram执行该程序时以文件所有者的权限运行而非执行者。典型应用/usr/bin/passwd允许普通用户修改shadow文件。2. SGIDSet Group ID- 2000chmodgs /shared/directory# 或chmod2755/shared/directory对文件执行时获得文件所属组的权限对目录在该目录下创建的文件继承目录的组3. Sticky Bit - 1000chmodt /tmp# 或chmod1777/tmp目录设置了Sticky Bit后只有文件所有者、目录所有者或root才能删除/重命名该目录下的文件。/tmp目录默认启用此权限。4. 查看特殊权限ls-l/usr/bin/passwd# -rwsr-xr-x s表示SUID已设置ls-ld/tmp# drwxrwxrwt t表示Sticky Bit已设置六、权限管理最佳实践1. 最小权限原则只为用户和组分配完成任务所需的最小权限避免使用777。2. 定期审计# 查找系统中所有777权限的文件安全风险find/-typef-perm07772/dev/null# 查找并修复find/var/www-typef-perm0777-execchmod644{}\;find/var/www-typed-perm0777-execchmod755{}\;3. 使用sudo而非root通过sudo给用户临时管理权限避免直接使用root账户。4. 敏感文件保护# SSH密钥应该是600权限chmod600~/.ssh/id_rsa# 家目录应该是700chmod700~/5. 组策略管理通过组来管理权限新用户加入组即可获得相应权限离职时从组中移除即可。七、实战案例场景1Web服务器目录权限设置# 创建web用户组sudogroupaddwebteam# 添加用户到组sudousermod-aGwebteam developer1sudousermod-aGwebteam developer2# 设置网站目录sudochown-Rwww-data:webteam /var/www/htmlsudochmod-R775/var/www/htmlsudochmodgs /var/www/html# 新文件继承组# 确保日志目录可写sudochmod775/var/log/apache2场景2共享开发目录# 创建共享组sudogroupaddshareddev# 创建共享目录sudomkdir/opt/sharedsudochownroot:shareddev /opt/sharedsudochmod2775/opt/shared# SGID确保新文件属于shareddev组# 添加成员sudousermod-aGshareddev alicesudousermod-aGshareddev bob场景3查找异常权限文件# 查找SUID/SGID文件潜在安全风险find/-perm/6000-typef2/dev/null# 查找无所有者的文件find/-nouser-o-nogroup2/dev/null# 查找最近修改的权限find/etc-typef-perm/ow-ls2/dev/null总结掌握用户、组和权限管理是Linux系统管理的核心技能。关键要点命令用途常用选项useradd/userdel创建/删除用户-m创建家目录-r删除相关文件usermod修改用户-aG追加到组-s改shellgroupadd/groupdel创建/删除组-g指定GIDgpasswd管理组成员-a添加-d删除-M批量设置chmod修改权限755/644/700等数字模式chown修改所有者-R递归--reference参考文件chgrp修改所属组普通用户可操作自己所属的组记住权限管理的核心是平衡便利性与安全性。在生产环境中务必遵循最小权限原则定期审计权限设置避免777权限泛滥正确使用sudo代替root操作。参考资源- Linux chmod、chown 和 chgrp 文件权限指南

更多文章