linux文件权限详解

  1. 文件类型

    • -:普通文件
    • d:目录文件
    • l:软连接(类似windows中的快捷方式)
    • b:块设备文件
    • p:管道文件
    • c:字符设备文件(如猫等串口设备)
    • s:套接口文件/数据接口文件(例如启动一个MySQL服务时会产生一个mysql.sock文件)
  2. 基本权限

    rwx:可读(4)、可写(2)、可执行(1)

    user, group, others(分别使用字母u、g、o表示,a表示所有)都具有基本权限

  3. 更改文件的基本权限

    使用chmod命令,方式如下:

    chmod u+x test.txt //为user添加x权限

    chmod u=rwx,g=rx,o=r test.txt //设置文件权限为rwxr-xr--

    chmod 755 test.txt //设置文件权限为rwxr-xr-x

    chmod a+x test.txt //为文件添加可执行权限(所有人可执行)

  4. 默认权限

    umask:权限掩码,用来指定当用户在建立文件或者目录时的默认权限。可修改

    umask 0002:第一位代表特殊权限,后三位表示基本权限,但是对于文件来说,创建文件时会自动把文件的执行权限消除,即文件创建的默认权限是rw-rw-r--,而目录创建的默认权限是rwxrwxr-x

  5. ACL权限

    区别于ugo之外的权限,可以对某一用户单独设置一个基本权限,使它具有不属于user、group、others三者的权限

    getfacl 文件名:查看文件的acl权限

    setfacl -m u:lanhuhen:rx 文件名:为用户lanhuhen设置acl权限为可读可执行

    setfacl -m g:group1:rx 文件名:为组group1设置acl权限为可读可执行

    设置好acl权限之后,通过ls -l查看该文件时,在权限列中会多一个+号,证明该文件设置了acl权限

    最大有效权限:

    mask用来指定最大有效权限,默认值时rwx,我们设置acl权限时都要与mask进行与计算,然后得到文件真正的acl权限。我们一般不修改mask的值

    setfacl -m m:rx project : 设置msk权限为r-x,可通过getfacl project命令查看mask的值

    默认acl权限:如果给父目录设置了默认的acl权限,则父目录中所有新建的自文件都会继承父目录的acl权限,默认acl只对目录生效

    setfacl -m d:u:用户名:权限 目录名 : 为目录设置默认的acl权限

    我们既可以通过设置默认的acl权限来指定子文件的acl权限,也可以通过-R递归属性来指定,即setfacl -m u:lanhuhen:rx -R project命令设置project目录及子文件acl权限

    删除指定acl权限:setfacl -x u:lanhuhen project :指定删除project目录下lanhuhen用户的acl权限

    删除所有acl权限:setfacl -b project :删除project目录下所有acl权限

    acl常用属性:-m, -x, -b, -d, -R, -k(删除默认的acl权限)

  6. 特殊权限

    SetUID简称SUID,只适用于可执行文件,作用是:当用户执行此文件时,会以文件所有者的身份去执行该文件,一旦执行结束,身份会变回自身,如/etc/shadow文件-rwsr-xr-x

    SetGID简称SGID,同SUID,如文件/usr/bin/mlocate文件-rwxr-sr-x

    Sticky BIT简称SBIT,SBIT仅对目录有效,如果目录设置了SBIT权限,则用户在此目录下创建的文件或者目录就只有自己和root才有权利修改或者删除该文件

    如果使用者没有文件的执行权限,则对应的特殊权限也不会有

  7. 隐藏权限

    chattr [+-=] [属性] 文件/目录:设置文件的隐藏权限

    常用属性:

    • i:如果对文件设置i属性,不允许对文件进行删除、改名,也不能添加和修改数据;如果对目录设置i属性,只能修改目录下文件中的数据,但不允许建立和删除文件
    • a:如果对文件设置a属性,只能在文件中增加数据,但是不能删除和修改数据;如果对目录设置a属性,只允许在目录中建立和修改文件,但是不允许删除文件
    • u:设置此属性的文件或目录,在删除时,其内容会被保存,以保证后期能够回复,常用来防止意外删除文件或者目录
    • s:和u属性相反,删除文件或目录时,会被彻底删除,不可恢复(直接从硬盘上删除,然后用0填充所占用的区域)

    lsattr [options] 文件或目录

    常用选项:

    • a:后面不带文件或者目录名,表示显示所有文件和目录
    • d:如果目标是目录,只会列出目录本身的隐藏属性,而不会列出所含文件或子目录的隐藏属性
    • R:和d属性相反,会连同子目录的隐藏信息数据也一并显示出来
  8. 系统权限管理(sudo and su)

    • sudo命令是用来以非管理员的身份执行管理员相关命令的命令,前提是该用户必须拥有执行sudo命令的权限
    • su命令用来切换用户
posted @   蓝狐痕  阅读(352)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示