2018.7.28第三次课及预习
课堂笔记:
LINUX下的目录与文件管理串讲
目录结构图:
http://www.apelearn.com/study_v2/linux_dir_tree.jpg
2018.7.26第三次课及预习
2.17 隐藏权限lsattr/chattr
1、lsattr 查看文件的特殊属性
lsattr -d 查看目录本身特殊属性
lsattr -R 级联,查看目录下子目录子文件的特殊属性
lsattr -a 查看目标目录所有文件(包含隐藏文件)的特殊属性
2、chattr 增加删除设定特殊属性
chattr +a 增加后只能追加,不能删除或者直接更改它的内容,非root用户不能设置该属性
chattr +i 增加后不能做任何操作,不能添加,删除,重命名,设定链接,修改属主,属组。
chattr +A 增加后文件或者目录的atime将不可被修改
chattr +S 增加后会将数据同步写入磁盘中
例1:给文件1.txt加上i权限,然后进行删除,修改、追加内容,修改文件属性,所有者,所属组。
删除i权限后就能正常修改了。
例2:给文件1.txt加上a权限,然后进行删除,修改、追加内容,修改文件属性,所有者,所属组。
注:1.txt加上a权限后,只能进行追加内容
给目录赋予i权限后,依旧可以对该目录下已存在的文件进行编辑
2.18 特殊权限set_uid
set_uid:该权限针对二进制可执行文件,使文件在执行阶段具有文件所有者的权限; 通俗一点讲就是,普通用户想要访问一个没有其他用户可执行权限的目录时,暂时借助二进制文件的所属主权限去访问这个目录,如果没有s权限,就不能访问; 注意:普通用户要有这个二进制文件的可执行权限。如果没有,那也是不能访问的。 我们系统中passwd命令就具有s权限。当普通用户执行passwd命令的时候,可以临时获得root权限,从而可以更改密码;
系统修改密码命令:passwd
系统密码文件:/etc/shadow
注意:这里所有者,所属组,其他用户都没有执行权限,但是root是超级用户,它具有至高无上的权限,所以root用户是可以修改密码的;按理说普通用户没有执行权限是没办法去修改密码的,但是我们passwd命令具有s权限,普通用户在使用命令passwd时,可以临时获取到passwd所属主的root权限,所以能修改密码。
例子:使用普通用户查看/root/目录:
我们怎样才能让普通用户lem打开/root/目录呢? 解:我们给ls命令加上一个s权限,让用户lem临时拥有ls的所有者权限;例如:
设置s权限:
chmod u+s 二进制文件名
chmod u=rws 二进制文件名
chmod 4755 二进制文件名 这个4是这样得出来的:
suid = 4
sgid = 2
stick_bit = 1
取消s权限:
chmod u-s
chmod u=rws
chmod 755
2.19 特殊权限set_gid
set_gid:该权限可以作用在二进制可执行文件上,也可以作用在目录上。当作用在文件上时,其功能和set_uid一样,它会使文件在执行阶段具有该文件所属组的权限。作用在目录上时,任务用户在此目录下创建的文件和目录都具有和该目录所属组相同的组(假设将123目录所属组设置为user,并对123目录赋予set_gid权限,当root用户在该目录下创建子目录或子文件的所属组也均为user)。
设置s权限:
chmod g+s 二进制文件名或目录
chmod g=rws 二进制文件名或目录
chmod 2755 二进制文件名或目录
例:作用在二进制文件上
例子:作用于目录上
2.20 特殊权限stick_bit
sticky_bit:防删除位。一个目录下的文件嫩不能被删除,不是取决于文件本身的属组属组还有其他权限, 而是在于这个文件所在目录的权限是否可读可写可执行,如果目录可写,那就意味着我们可以删除目录下的任何文件。当一个目录的权限为其他人可读可写可执行的时候,那么其他用户都可以删除这个目录下的文件,包括root文件,为了防止文件被其他用户删除,我们给这这个目录增加一种特殊权限:sticky,防删除位,要用root用户操作。这样一个用户就不能删除另一个用户创建的文件了。只有root和创建文件本人才能够删除。
设置t权限:
chmod o+t 目录
chmod o=rwt 目录
chmod 1755 目录
例子:
2.21 软链接文件
软链接:是建立一个独立的文件,当读取这个链接文件时,它会把读取的行为转发到该文件所链接的文件上。
软链接就相当于一个快捷方式
软链接的大小取决于软链接源文件的路径长短
软链接支持文件和目录
软链接的源文件不能被删除,如果删除源文件,软链接文件会失效;软链接删除,源文件不受影响。 创建软链接格式:
尽量使用绝对路径来做软链接 ln -s 源文件 目标文件(链接文件)
比较源文件和软链接的大小,软连接的大小与源文件的长度有关
du -sh 文件 \查看文件大小
df -h \查看磁盘情况
Tips:当目标文件所属磁盘剩余空间不足且需继续向该文件写入数据时,可采用软链接的方式,现将目标文件拷贝至新磁盘中,再将原磁盘中该文件删除,并在原磁盘的相同路径下做软链接文件,链接至拷贝到新磁盘中的该文件即可。
2.22 硬连接文件
硬链接:当系统要读取一个文件时,会先读取inode信息,然后再根据inode的信息到块区域将数据取出来。而硬链接就是直接在建立一个inode链接到文件放置的块区域,即进行硬链接时,该文件的内容没有任何变化,只是增加了一个指向这个文件的inode,并不会额外占用磁盘空间。
硬链接不能夸文件系统,不同的文件系统有不同的inode table;
硬链接不能链接目录; 格式: ln 来源文件 目标文件
注意:我们创建的硬链接和源文件的inode一样,大小一样。
2.23/2.24/2.25 find命令
搜索工具 which :用于查找可执行文件的绝对路径;
whereis:通过预先生成的一个文件列表库查找与给出的文件名相关的文件;
格式: whereis [选项] 文件名
-b:只查找二进制文件
-m:只查找帮助文件
-s:只查找源代码文件
locate:和whereis类似,也是通过查找预先生成的文件列表库来查找文件在哪里,后面直接跟文件名;需要安装mlocate软件包:
安装好后,第一次运行locate会报错,需要运行updatedb命令立即生成或者更新这个库文件;默认情况下这个库每周更新一次;locate不适合精准查找。
find命令
格式:find [路径] [参数]
-type 文件类型:f(文件)d(目录)l(软链接)s(sock)d(块设备)c(串口设备键盘鼠标等)
-name 文件名
-size 文件大小(10k;10M等)
-mmin +- 分钟数
-inum 跟inode,通过inode来查找一个文件的硬链接
-o 或者
-exec <执行指令>:假设find指令的回传值为True,就执行该指令。
-atime +n/-n 表示访问或执行时间大于或小于n天的文件。
-ctime +n/-n 表示更改inode属性(如更改所有者,权限或者链接)的时间大于或小于n天的文件。
-mtime +n/-n 表示创建或者修改文件时间大于或小于n天的文件,该参数用得最多
-1 小于1天;1天以内
+1 大于1天;1天以前
不能等于1
例子:
- 查找1天内创建或修改的后缀名为.conf的文件
- 查找root目录下1天内创建或修改的文件
- 查找root目录下10分钟内创建的文件
- 查找root目录下10分钟创建或修改的文件,并且显示出具体修改时间;
tips:{}表示前面列出来的文件,\脱意符号,;换行符
- 查找目录/root/下1天内修改的文件,并且备份一份。
- 查看root目录下小于6k的文件,并且列出它具体的大小
通过inode来查找一个文件的硬链接;
2.26 文件名后缀
stat命令可以列出文件的atime,mtime,ctime;
注:linux文件后缀名 在linux系统中,文件的后缀名没有具体的意义,加或者不加都无所谓。
2.27linux和windows互传文件
安装lrzsz包
Linux传文件给Windows
sz:(send)
Windows传文件给Linux
rz(received)
注:传送的文件所在的位置为Linux的当前目录
rz和sz使用ZModem协议进行文件传输