linux文件权限深入了解(下)

发布时间:2026/6/9 13:46:13

linux文件权限深入了解(下) 1.删除文件的权限逻辑结论删除文件看「文件所在父目录」的 w 权限和文件本身的 w 权限无关实战验证创建目录 文件mkdir test_dir touch test_dir/file.txt设置目录权限为 777所有用户有 w 权限文件权限 644其他用户无 wchmod 777 test_dir/ chmod 644 test_dir/file.txt切换为普通用户执行# 能删除文件父目录有 w rm test_dir/file.txt # 不能编辑文件内容文件本身无 w vim test_dir/file.txt现象能删文件但不能改文件内容。案例 1文件只读父目录权限正常 → 可以删除:# 创建目录与文件 mkdir dir1 touch dir1/a.txt # 父目录rwxr-xr-x有w、有x文件仅只读无写权限 chmod 755 dir1 chmod 444 dir1/a.txt # 测试1修改文件内容 → 失败文件无w权限 echo 123 dir1/a.txt # Permission denied # 测试2删除文件 → 成功只看父目录wx rm dir1/a.txt案例 2文件全开权限父目录无 w → 无法删除:mkdir dir2 touch dir2/b.txt chmod 555 dir2 # 目录 r-x去掉w权限 chmod 777 dir2/b.txt # 文件开放所有权限 rm dir2/b.txt # 报错 Permission denied案例 3目录有 w、无 x → 无法删除缺失准入权限:mkdir dir3 touch dir3/c.txt chmod 666 dir3 # 目录 rw-有w无x ls dir3 # 能看到文件名目录有r权限 cd dir3 # 无法进入无x rm dir3/c.txt # 无法删除无x不能访问目录条目2.默认权限umask 权限掩码新建文件 / 目录的默认权限由umask决定系统默认umask022。 计算规则目录最大权限777- umask 目录默认权限文件最大权限666文件默认无执行位 - umask 文件默认权限默认umask 022计算目录777 - 022 755文件666 - 022 644和我们日常看到的默认权限完全一致。查看 / 临时修改掩码umask # 查看当前掩码 umask 007 # 临时修改掩码为 0073.白名单配置一开始我们进入自己的服务器上时一般都是以root超级用户 用户登录的。root用户有可以随意查看其他用户的文件的权限。但是其他用户想要root权限的话就需要进行sudo免密执行命令这个用户能够执行这个命令的前提是他在服务器的白名单上。让特定用户无需密码执行 sudo 命令通过 visudo 编辑安全的 sudo 配置# 1. 安全编辑sudoers文件必须用visudo避免语法错误 sudo visudo # 2. 添加规则根据需求选一种 # 方式1允许user1无密码执行所有命令 user1 ALL(ALL) NOPASSWD: ALL # 方式2仅允许user2无密码执行特定命令推荐 user2 ALL(ALL) NOPASSWD: /bin/systemctl restart nginx, /usr/bin/lsblk # 3. 保存退出vi/vim按Esc输入:wq回车4.权限 “一次确认”文件执行的匹配规则Linux 内核按固定顺序匹配权限找到第一个匹配项后立即停止检查不再看后续权限位。1. 核心匹配顺序内核检查权限时严格遵循以下优先级匹配即停止root 用户特权如果进程 EUID0root直接拥有所有权限跳过后续检查属主匹配进程 EUID 与文件所有者 UID 一致 → 仅应用属主 (u) 权限忽略组和其他权限属组匹配进程 EGID 或附加组 GID 与文件所属组 GID 一致 → 仅应用属组 (g) 权限忽略其他权限其他匹配前两项都不匹配 → 应用其他用户 (o) 权限# 创建文件属主alice属组dev权限640urw-, gr--, o--- sudo touch test.txt sudo chown alice:dev test.txt sudo chmod 640 test.txt # 用alice用户操作属主匹配只看u权限 su - alice echo test test.txt # 成功u有w权限 exit # 用dev组其他用户操作属组匹配只看g权限 su - charlie # charlie属于dev组 echo test test.txt # 失败g无w权限 cat test.txt # 成功g有r权限 exit权限匹配的 “不叠加” 原则# 创建文件权限ur--, grwx, o--- touch test2.txt chmod 470 test2.txt # 用文件所有者操作只看u权限即使g权限更开放 cat test2.txt # 成功u有r echo 123 test2.txt # 失败u无w ./test2.txt # 失败u无x谢谢

相关新闻