3_Linux文件与目录管理

1.认识Linux中几个特殊符号代表的文件
特殊符号文件说明
.代表当前目录
..代表当前目录的父目录
-前一个工作目录
~家目录
2.介绍常见处理目录文件的命令
2.1 cd (变更目录)

例如:使用 cd - 从~目录切换回前一个工作目录 /my_dir
在这里插入图片描述

2.2 pwd (显示目前所在的目录)

例如:通过pwd命令显示当前目录路径,通过pwd -P显示当前目录真实路径,而不是超链接所在路径
在这里插入图片描述

2.3 mkdir(创建空目录)

mkdir [-mp] 目录名称
-m:配置目录文件的权限,不需要看预设权限(umask/umask -S)
-p:递归创建目录
在这里插入图片描述

2.4 rmdir(删除空目录)
3.关于执行文件路径的变量:$PATH

譬如:使用ls命令可以查看详细文件,但是如果$PATH下没有配置ls的所在路径,则只能通过绝对路径或者相对路径指定到ls的脚本进行执行。这也就是为什么通常,用户写的脚本要通过 ./xxx.sh 进行执行。
注:$表示后面接的是变量,此外如果存在多个ls执行文件,则在$PATH先匹配到的先执行。

4.目录与文件的查、增、改、删、读等操作
4.1 ls (文件与目录的查阅)

ls [-aAdfFhilnrRSt] 目录名称
选项与参数:
-a:全部的文件,包括隐藏的文件
-A:全部的文件,不包括(.和…目录)
-d:仅列出目录本身,而不是列出目录内的文件数据(例如:ls -d /my_dir则只显示/my_dir的详细内容)
-f:直接列出结果,而不进行排序(ls默认按照文件名排序)
-F:根据文件、目录等信息,给予附加数据结构,例如:*:代表可执行文件;/:代表目录;=:代表socket文件;|:代表FIFO文件
-h:将文件大小以人较为阅读的方式(例如:GB、KB)列出来
-i:列出inode号
-l:长数据串行出,包含文件的属性与权限等数据
-n:列出uid和gid而非使用者与群组的名称
-r:将排序结果反向输出
-R:连通字母下的文件一起输出
-S:以文件的大小排序,而不是以文件名排序
-t:按照时间排序,而不是以文件名排序

4.2 cp(复制文件或目录)

cp -[adfilprsu] 源文件 目标文件
选项与参数:
-a:想当于-pdr的意思
-d:如果源文件为链接文件的属性(link file),则复制链接文件属性而非文件本身
-f:(force),如果目标文件已经存在,且无法开启,则移除后再尝试一次
-i:如果目标文件存在,在覆盖时会先询问动作的进行(常用)
-l:进行硬式连结(hard link)的连结档建立,而非复制文件本身
-p:连通文件的属性一起复制过去,而非使用默认的属性(备份常用)
-r:递归持续复制,用于目录的复制行为(常用)
-s:复制成为符号链接文件(symbol link),就是对应window中的快捷键
-u:如果目标文件比源文件旧,才更新目标文件
注:可以将多个文件拷贝到一个文件夹下,但是最后一个参数一定得是个文件夹如:cp sourc1 source2 … dir

4.3 rm (删除文件或目录)

rm [-fir] 文件或目录
-f:就是force强制删除
-i:interaction,互动模式,删除前询问
-r:递归删除

4.4 mv (移动文件或目录,或重命名)

mv [-fiu] source destination
mv [options] source1 source2 … destination
选项与参数
-f:force,强制的意思,如果目标文件存在,不会询问而直接覆盖
-i:若目标文件已存在时,就会询问是否覆盖
-u:若目标文件已存在,且source文件比较新,才会更新(update)

注:此外在shell中可能常用的指令basename获取文件名,dirname获取目录名

5.文件的读操作
5.1 cat(concatenate)由第一行开始显示文件内容

cat [-AbEnTv]
选项与参数
-A:相当于-vET的整合
-b:列出行号,仅针对非空白行做行号显示,空白行不标行号
-E:将结尾的断行字符$显示出来
-n:连同空白行一起打印出行号,与-b不同
-T:将【tab】键以^I显示出来
-v:列出一些看不出来的特殊字符

5.2 tac 和cat相反,从最后一行到第一行显示文件内容
5.3 nl(添加行号打印)

nl [-bnw] 文件
选项与参数
-b:指定行号指定的方式,主要有两种
    -b a:表示不论是否为空行,也同样列出行号
    -b t:如果有空行,空的那一行不要列出行号(默认值)
-n:列出行号表示的方法,主要有三种
    -n ln:行号在屏幕的最左方显示
    -n rn:行号在字段的最右方显示,且不加0
    -n rz:行号在字段的最右方显示,且加0
-w:行号字段的占用的位数,默认6位占位符
例如:nl -b a -n rz -w 3 /list.txt

5.4 其他相关的读文件指令

more less head tail od 可以通过man more进行详细的查看各个指令的用法

6. touch可以修改文件的时间或者创建新的文件
7.umask 关于默认权限的设定

如下所示查看不要的默认权限可以通过umask直接查看,设置当前会话默认权限不要其他用户拥有写权限可以通过umask 0002
在这里插入图片描述

8.chattr(配置文件隐藏属性)

chattr [±=][ASacdistu] 文件或目录
选项与参数
+:增加某一个特殊参数,其他原本参数不动
-:移除某一个特殊参数,其他原本参数不动
=:设定一定,且仅有后面接的参数
A:当设定了A这个属性时,若又存取此文件(或目录),访问时间的atime将不会被修改,可避免I/O较慢的机器过度的存取磁盘。
S:一般文件是异步写入磁盘的,如果加上S属性,当对文件进行任何的修改,该改动会同步的写入磁盘。
a:当设置a属性之后,文件只能添加数据,而不能删除修改数据,只有root才能设定这个属性。
c:这个属性设定后,将会自动的将文件压缩,在读取的时候将会自动解压缩,但是存储的时候,将会先进行压缩后再存储。
d:当dump程序被执行的时候,设定d属性将可使该文件(或目录)不会被dump备份。注:dump备份参考
i:这个i可就很厉害了,可以让一个文件不能被删除、重命名、设置连接点、新增、写入这对系统安全性有相当大的帮助。只有root能设定此属性
s:当文件设定为s属性时,如果这个文件被删除,文件将会被完全的移除硬盘,所以误删除了,就完全无法找回。
u:与s相反的,当使用u来配置文件时,如果该文件被删除了,则数据内容其实还存在硬盘上

9.lsattr (显示文件隐藏属性)

lsattr [-adR] 文件
选项与参数
-a:将隐藏文件的属性也显示出来
-d:如果是目录文件,仅列出目录本身的属性而非目录内的文件名
-R:连同子目录的数据也一并列出来

10.特殊权限

在这里插入图片描述

ls -ld /tmp; ls -l /usr/bin/passwd;输出的结果是中,发现文件除了有rwx权限外,还有t和s的权限。因为s和t这两个权限的意义与系统的账号以及系统程序有关系。

10.1 Set UID

当s这个标志出现在文件拥有者的x权限上时,例如:/usr/bin/passwd这个文件的权限状态是**-rwsr-xr-x**,此时就被称为Set UID,简称SUID的特殊权限。那么SUID的权限对于一个文件的特殊功能是什么呢?基本上SUID有这样的限制与功能:

  • SUID权限仅对二进制程序文件(binary program)有效;
  • 执行者(即登录用户)对该程序需要具有x的可执行权限;
  • 本权限仅在二进制文件执行的过程中有效;
  • 执行者(即登录用户)将具有该程序拥有者(创建者)的权限;

举例:说明上述的四点
在这里插入图片描述
在Linux系统中,所有账号的密码都记录在/etc/shadow这个文件里面,这个文件只有root可读且仅可以强制写入而已。这表明这个文件只有root用户可以修改,但是如果一般用户想要修改自己的密码呢?即总的来说passwd普通用户可以通过passwd命令来修改密码,但是passwd是root用户所拥有,所普通用户在执行passwd时,普通用户拥有root用户的权限,等passwd执行完,普通用户不在拥有root用户的权限可参考此博主的博文

10.2 Set GID

当s标志在群组的x时,则称为Set GID,SGID。
与SUID不同的是,SGID可以针对文件或者目录来设定。如果SGID针对文件有如下功能:

  • SGID对二进制文件有用;
  • 程序执行者对该程序来说,具备x的权限;
  • 执行者在执行的过程中将会获得该程序的群组支持
    除了用在binary program文件上,SGID还可以使用在目录上,这是一个非常常见的一种用途!当一个目录设定SGID权限后,将具有以下的功能:
  • 用户若对此目录拥有r与x的权限时,该用户能够进入此目录;
  • 用户在此目录下的有效群组(effective group)将会变成该目录的群组;
  • 用途:若用户在此目录下具有w的权限(可以新建文件),则使用者所建立的新文件,该新文件的群组与此目录的群组相同。
10.3 Sticky Bit

Sticky Bit,SBIT目前只针对目录有效,对文件已经没有效果了。SBIT对于目录的作用是:

  • 当用户对此目录具有w,x权限,亦即具有写入权限时;
  • 当用户在该目录下建立文件或者目录,仅有自己与root才有权利删除该文件。
10.4 SUID/SGID/SBIT权限的设定

SUID:4, SGID:2, SBIT:1
SUID权限设置的案例

  1. which cat查看cat的所在路径
  2. 使用root权限拷贝cat文件,这样mycat的创建者也是root
  3. 查看mycat的权限 -rwxr-xr-x
  4. 普通用户通过mycat查看shadow文件,此时无法访问
  5. 添加SUID权限
  6. 查看mycat的权限 -rwsr-xr-x
  7. 普通用户通过mycat查看shadow文件,此时可以访问。因为mycat此时添加了SUID权限,且mycat属于root用户,同时root用户可以访问shadow文件,所以普通用户此时通过mycat访问shadow文件时,拥有root的权限
    在这里插入图片描述
    注:这种情况会出现大写的S和T权限,S和T代表的是空权限。出现这种情况的原因是s和t都是取代x这个权限的但是这里将权限改为7666,即没有x的权限所以为空,对于SGID的目录来说x表示可以访问目录。
    在这里插入图片描述
    此外,还可以通过如下放是进行添加SUID(u+s) SGID(g+s) STID(o+t)权限
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值