三、Linux文件与目录管理

一、可执行路径的变量:$PATH

echo $PATH显示出目前PATH
在这里插入图片描述
每个目录之间用冒号隔开。可以看到/usr/bin在PATH变量中,所以在任何地方都能执行ls。
添加目录:

PATH="${PATH}:/root"

以上语句将/root加入PATH。

二、修改文件时间或出创建新文件:touch

每个文件在linux下都会记录许多时间参数,其中有三个主要的变动时间:

  • modification time(mtime) :文件内容最近一次变更的时间
  • status time(ctime):文件状态最近一次变更的时间
  • access time(atime):文件内容最近一次被取用的时间(如cat)

touch常被用来创建一个空的文件或者将文件mtime和ctime设为当前时间

三、文件默认权限:umask

默认权限属性:

  • 创建文件(默认没有可执行权限):最大为666,即 - rw- rw- rw-
  • 创建目录(默认可进入(x)): 777,即 d rwx rwx rwx
# umask
0022

类似掩码,去除对应权限。例如上述0022,第一个是特殊权限,先不管。此时,
创建文件时:
(- rw- rw- rw-) - (- — -w- w-) -> - rw- r-- r–
创建目录时:
(d rwx rwx rwx)- (- — -w- w-) -> d rwx r-x r-x
设置(修改)umask:

# umask 002 //将umask设置为002

四、文件特殊权限:SUID, SGID, SBIT

除了rwx外,还有一些特殊权限:
在这里插入图片描述

  • Set UID
    当s标志出现在文件拥有者的’x’位置时,如上图,’- rws r-x r-x’此时被称为Set UID,简称为SUID的特殊权限,其基本的限制和功能:
    (1)仅对二进制程序(binary program)有效
    (2)执行者对于该程序需要具有x的可执行权限
    (3)本权限仅在执行该程序的过程中有效
    (4)执行者将具有该程序拥有者(owner)的权限

例如linux中所有账号的密码都放在 /etc/shadow文件中,权限为
‘- — --- — 1 root root’,即只有root可读可写。那当前登录的非root账户(syf)能否修改密码呢?
当然是可以的:首先我自己对/usr/bin/passwd 这个程序是有x权限的,而passwd的拥有者是root,syf执行passwd的过程中,会暂时获取root的效果,那么/etc/shadow 就可以被syf所执行的passwd所修改。
而使用cat时无法读取/etc/shadow的,因为/bin/cat是不具有SUID权限的,此外,SUID只可用于二进制程序,而不能用于shell script(调用一系列binary program)

  • Set GID
    当s标志出现在群组的’x’位置时,被称为SGID。
    与SUID不同的是,SGID可以针对文件或目录。
    对于文件:
    (1)对二进制程序有用
    (2)程序执行者对于该程序来说,需要具备x的权限
    (3)执行者在执行过程中会获得该程序群组的支持
    对于目录:
    (1)使用者对此目录有r与x权限时,能够进入此目录
    (2)使用者在此目录下的有效群组将会变成该目录的群组
    (3)用途:若使用者在此目录下有w权限,则使用者所创建的新文件的群组与此目录群组相同
  • Sticky Bit
    仅对目录有效。
    (1)使用者对此目录有w与x权限
    (2)当使用者在该目录下创建文件或目录,仅有自己和root才有权力删除该文件

SUID/SGID/SBIT权限设置
4:SUID
2:SGID
1:SBIT
假设要将一个文件权限改为’- rws r-x r-x’:chmod 4755 filename,即755前加上4。

五、指令与文件搜索

5.1 指令文件名搜索
  • which(寻找可执行文件)
# which [-a] command

-a:将所有PATH目录中可以找到的指令均列出

5.2 文件的文件名搜索
  • whereis(在一些特定的目录中寻找)
# whereis [-bmu] filename/dirname
  • locate/updatedb
# locate [-ir] keyword

-i :忽略大小写差异
-r :后面可接正则表达式的显示方式
locate速度很快,因为它是从已创建的数据库“var/lib/mlocate/”里面的数据所搜寻到的。其限制是:数据库的创建默认是每天执行一次,所以新创建的文件在数据库更新之前找不到。
手动更新数据库

# uodatedb //读取/etc/updatedb.conf,然后去硬盘中搜索文件名
  • find
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值