linux学习笔记-文件与目录2

本文详细介绍了Linux文件的默认权限umask设置,包括文件与目录的区别,以及文件隐藏属性如chattr和lsattr的功能。此外,涵盖了SUID、SGID、SBIT的特殊权限概念,以及如何通过file命令观察文件类型和使用find、whereis、locate指令进行文件搜寻。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文件默认权限:umask

文件的默认权限由umask来决定,文件与目录的默认权限有所不同.

  • 创建为"文件"时,默认权限为:-rw-rw-rw-
  • 创建为"目录"时,默认权限为:drwxrwxrwx

如果umask为002,三个数分在代表在用户、群组、其他对应角色所需要减去的权限,当umask=022时:

  • 创建为"文件"时,默认权限为:-rw-r-r-
  • 创建为"目录"时,默认权限为:drwxr-xr-x

当我们想改变umask的默认值时,直接在umask后面设置指定舍弃权限:

umask 002

文件隐藏属性:chattr、lsattr

chattr:设置文件隐藏属性

charttr [±=] [ASacdistu] 文件名或目录名

  • + :增加某一个特殊参数
  • - :减去某一个特殊参数
  • =:设置一定,且仅有后面接的参数
  • A:当设置了A这个属性时,不会改变存取时间atime
  • S:进行任何文件的修改时,会“同步”写入磁盘。一般文件是非同步的
  • a:只能增加数据,不能删除或者修改,并且只有root可以设置这个属性
  • c:自动将文件进行压缩、并且在读取该文件时自动解压
  • d:当dump程序被执行的时候,使此文件不被dump备份
  • i:只有root才可以设置,任何人不能对此文件进行删除、改名、设置链接、无法写入、新增数据等,root也不能更改.如果想要修改,则去掉该属性chatter -i filename
  • s:将此文件从硬盘空间删除,无法恢复
  • u:与s相反,删除文件时,并没有从硬盘空间删除,可以从硬盘空间中恢复

lsattr:显示文件隐藏属性

lsatr [-adR] 文件或目录

  • a: 显示隐藏文件
  • d:如果连接的是目录,仅列出目录本身的属性而非目录内的文件名
  • R:连同子目录的数据也一并显示出来

文件特殊权限:SUID,SGID,SBIT(鸟叔的私房菜323p)

文件权限除了rwx权限外,还有s,t。例如/tmp目录、/usr/bin/passwd,

  • Set UID
    当s标志出现在user的x权限上时,例如/ussr/bin/passwd的权限状态为"-rwsr-xr-x",此时被称为:Set UID(SUID),而SUID对文件的特殊功能在于
    1. SUID权限仅对二进制程序有效
    2. 执行者对于程序需要具有x的可执行权限
    3. 本权限仅在执行该程序的过程有效(run-time)
    4. 执行者将具有该程序拥有者的权限

例子:

在linux中,所有的密码都存在/etc/shadow文件里面,权限为“---------- 1 root root”,意思仅有root可读,并且强制写入. 但是具有SUID的一般账户也可以修改密码 ,因为用户对于/usr/bin/passwd这个程序具有x权限,表示用户能执行passwd, 而passwd的拥有者是root,所以/etc/shadow就可以被用户所执行的passwd所修改.

如果用户使用cat读取/etc/shadow时,是会失败的,因为cat不具有SUID的权限

  • Set GID
    当s标识出现在群组的x位置时,则称为SGID.SGID有如下功能:

    1. SGID对二进制程序有用;
    2. 程序执行者对于该程序来说,需具备x的权限
    3. 执行者在执行的过程中将会获得该程序群组的支持!
  • Sticky Bit
    仅针对目录有效,针对目录的作用为:

    1. 当使用者对于此目录具有w,x权限,即具有写入的权限时
    2. 当使用者在该目录下创建文件或者目录时,仅有自己与root才有权力删除该文件
  • 权限设置
    假设要将一个文件改为“-rwsr-xr-x”,则在原先755之前还要加上4,即“chmod 4755 filename”。或者还可以使用u+s,g+s,o+t,例如:chmod u=rwxs,go=x filename; chmod g+s,o+t filename;

    1. 4为SUID,用于文件
    2. 2为SGID
    3. 1为SBIT,用于目录

观察文件类型:file

利用file命令,可以知道文件的基本数据,例如是否属于ASCII、data文件、binary、动态函数库(share library).eg: file ./bashrc

指令与文件搜寻

  • 指令搜寻

kylin@kylin:~$ which -a ls # 加上-a表示输出所有路径,去掉-a默认输出第一个路径
/usr/bin/ls
/bin/ls

  • 文件搜寻
    文件搜寻有三个命令:whereis、locate、find,前两者较快
    1. whereis:查找系统中特定目录下的文件而已,想知道whereis查询了哪些目录,则使用whereis -l来确认

      whereis [-bmsu] 文件或目录名
      -l :可以列出whereis会去查询的几个主要目录
      -b :只找binary格式的文件
      -m :只找在说明文档manual路径下的文件
      -s:只找source来源文件
      -u:搜寻不在上述三个项目当中的其它特殊文件

    2. locate利用数据库搜寻文件名,当忘记完整文件名则可使用该命令。(但是麒麟操作系统好像没有这个命令)

      locate [-iclSr] keyword
      -i :忽略大小写的差异
      -c:不输出文件名,仅计算找到的文件数量
      -l:仅输出几行的意思,例如输出五行则是 -l 5
      -S:输出locae使用的数据库文件的相关信息,包括该数据库记录的文件/目录数量等
      -r:后面可接正则表达式的显示方式

    3. find搜索硬盘内的文件系统,包括状态,所以上两种搜索较快

      find [PATH] [option][action]
      option:
      -mtime n : n为数字,表示在n天之前的,"一天之内"被更动过内容的文件文件名
      -mtime +n : 列出在n天之前,被更动过内容的文件名
      -mtime -n : 列出在n天之内(含n天本身)被更动过的文件名
      -newer file:列出比file还要新的文件名
      -uid n :n为数字,这个数字是使用者的账号ID,亦即UID
      -gid n:n为群组名字的ID
      -user name :name为使用者账号名称喔!例如dmtsai
      -group name:name为群组名,例如users
      -nouser:寻找文件的拥有者不存在/etc/passwd的人
      -nogroup:寻找文件的拥有者群在不在/etc/group的文件
      -name filename:搜寻文件名
      -size [±] SIZE:搜寻比SIZE要大或者小的文件,例如“-size +50k”找比50KB还要大的文件
      -type TYPE: 搜寻文件类型为type的文件,主要类型有:一般正规文件(f),设备文件(b,c)目录(d),链接文件(l), socket(s),及FIFO(p)等属性。
      -perm mode:搜寻文件刚好等于mode的文件,mode类似于chmod的属性值.
      -perm -mode:搜寻文件必须囊括mode的权限
      -perm /mode:搜寻文件权限"包含任一mode的权限"的文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值