Linux文件权限

权限

在 Linux 中,文件权限分为 三类用户三种权限: 

  1. 三类用户

    • Owner(文件所有者)

    • Group(所属用户组)

    • Others(其他用户)

  2. 三种权限

    • r(read):读权限

      • 对文件:读取内容

      • 对目录:列出目录内容

    • w(write):写权限

      • 对文件:修改文件内容

      • 对目录:新建、删除、重命名文件

    • x(execute):执行权限

      • 对文件:运行该文件(通常是脚本或二进制程序)

      • 对目录:进入该目录(cd


权限表示

  • 字符形式-rwxr-xr--

    • 第 1 位:文件类型(- 普通文件,d 目录,l 链接等)

    • 后 9 位:每三位一组,对应 Owner、Group、Others

  • 数字形式chmod 755 file

    • r=4, w=2, x=1

    • 例如 755 → Owner=7(rwx),Group=5(r-x),Others=5(r-x)


特殊权限位

  • suid (setuid):文件执行时临时获得文件所有者的权限(常见于 /usr/bin/passwd)。

  • sgid (setgid):目录中新建的文件自动继承目录的组。

  • Sticky Bit (t):目录下文件只能被文件所有者、目录所有者或 root 删除(典型 /tmp)。


设置权限

  • 修改权限:chmod

  • 修改所有者:chown

  • 修改所属组:chgrp

1. chmod(修改权限)
  • 注意数字和符号两种方式

    • 数字:chmod 755 file

    • 符号:chmod u+x file(给属主加执行权限)

  • 对目录的含义不同

    • r = 能列出目录内容

    • w = 能新建/删除/重命名目录里的文件

    • x = 能进入目录

  • 危险操作chmod 777 给所有人全部权限,常见但不安全。


2. chown(修改所有者)
  • 只有 root 能修改 文件的属主。普通用户不能把文件的所有权转移给别人。

  • 可以同时修改所有者和所属组:

    sudo chown user:group file
    
  • 批量修改时常用 -R 递归选项:

    sudo chown -R user:group dir/
    

    递归操作要小心,避免误改系统文件。


3. chgrp(修改所属组)
  • 普通用户只能把文件的 group 改为 自己所在的组;否则会报 Operation not permitted

  • 如果要改成别的组,必须是 root 或者先把用户加入该组。

  • 同样支持递归:

    sudo chgrp -R group dir/
    

chmod 调整权限时要区分目录和文件,chown 改属主只有 root 能做,chgrp 改属组时普通用户只能改成自己所在的组,否则要 root。三者结合控制 Linux 的访问控制模型。”

Linux 文件权限是通过 owner、group、others 三类用户以及 r/w/x 三种权限组合来控制的,同时还有 suid、sgid、粘滞位等特殊权限,常用命令有 chmod、chown、chgrp。

umask

  • 全称:user file-creation mode mask

  • 作用:决定新建文件/目录时的默认权限

  • 原理
    默认权限 & ~umask = 新建文件/目录权限

  • root下一般是022,普通用户是002。

2. 默认权限

  • 新建文件:最大权限 666(rw-rw-rw-),因为一般不自动给执行权限。

  • 新建目录:最大权限 777(rwxrwxrwx),因为目录必须要有执行权限才能进入。

3. 例子

假设 umask = 022

  • 新建文件:666 - 022 = 644rw-r--r--

  • 新建目录:777 - 022 = 755rwxr-xr-x

4. 怎么用

  • 查看当前 umask:

    umask
    
  • 临时修改 umask(只对当前 shell 有效):

    umask 027
    

    (新文件默认权限:640,新目录默认权限:750)

5. 能不能修改?如何永久修改

✅ 可以修改,有三种常见方法:

  1. 只改当前 shell

    umask 027
    

    (退出 shell 就失效)

  2. 改用户级别(永久)
    ~/.bashrc~/.bash_profile 里加:

    umask 027
    
  3. 改系统级别(全局)

    • Debian/Ubuntu 系:/etc/profile/etc/bash.bashrc

    • RedHat/CentOS 系:/etc/profile/etc/login.defs

6. 注意事项

  • umask掩码(要屏蔽的权限),不是直接设置权限。

  • 高安全性场景常用 umask 077,这样新建文件只有自己可读写。

  • 系统服务、守护进程可能单独在配置文件里指定 umask。

“umask 是新建文件和目录时的默认权限屏蔽值,可以在 shell 里用 umask 临时修改,也可以在 ~/.bashrc/etc/profile 里永久修改。常见默认值是 022(新文件 644,新目录 755),安全场景会用 077。”

粘滞位

粘滞位(Sticky Bit)主要用于目录。当一个目录对所有用户开放写权限时(比如 /tmp),如果没有粘滞位,任何用户都能删除或重命名别人的文件。加上粘滞位后,目录里的文件只能由文件的所有者、目录所有者或者 root 删除。这样就避免了多用户环境中互相删除文件的风险。

  • 权限表现形式drwxrwxrwt(最后一个 t

  • 设置方法chmod +t dirname

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_w_z_j_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值