学习Linux 4

直播课

inode讲解

1.inode是什么?
2 inode的内容
3.inode大小
查看每个硬盘分区的inode总数和已经使用的数量,可以使用df命令
4.inode号码
使用ls -i命令,可以看到文件名对应的inode号码
5. 目录文件
6. inode特殊作用
重点知识 特殊权限 软连接文件 find命令的掌握运用

预习课

2.17 隐藏权限lsattr_chattr

chattr 设置隐藏权限 使用man chattr查看用法

chattr常用的参数选项

A:即Atime,告诉系统不要修改对这个文件的最后访问时间。
S:即Sync,一旦应用程序对这个文件执行了写操作,使系统立刻把修改的结果写到磁盘。
a:当设置a后,文件只能增加数据,不能删除也不能修改数据,只有root才能设置这个属性 多用于服务器日志文件
b:不更新文件或目录的最后存取时间。 c:设置c属性 会自动将文件压缩,在读取时自动解压缩
d:当dump程序执行时,该文件或目录不会被dump备份。 D:检查压缩文件中的错误。
i:设置i属性文件不能被删除.改名设置连接。无法写入或添加数据 只有root用户可以设置
s:彻底删除文件,不可恢复,因为是从磁盘上删除,然后用0填充文件所在区域。
u:当一个应用程序请求删除这个文件,系统会保留其数据块以便以后能够恢复删除这个文件,用来防止意外删除文件或目录。
t:文件系统支持尾部合并(tail-merging)。 X:可以直接访问压缩文件的内容。

例如给1.txt加隐藏权限 chattr +i 文件不能被删除、改名、设定链接 同时不能写入或新增内容

[root@qklinux-01 ~]# chattr +i 1.txt
[root@qklinux-01 ~]# vi 1.txt
[root@qklinux-01 ~]# head -n2 /etc/passwd > 1.txt
-bash: 1.txt: 权限不够
[root@qklinux-01 ~]# ls -l 1.txt
-rw-rw-r--. 1 root root 0 3月  17 15:06 1.txt
[root@qklinux-01 ~]# lsattr 1.txt
----i----------- 1.txt
[root@qklinux-01 ~]# touch 2.txt
[root@qklinux-01 ~]# lsattr 2.txt
---------------- 2.txt
[root@qklinux-01 ~]# mv 1.txt 3.txt
mv: 无法将"1.txt" 移动至"3.txt": 不允许的操作
[root@qklinux-01 ~]# rm -f 1.txt
rm: 无法删除"1.txt": 不允许的操作

用命令 lsatter 查看隐藏权限

chattr -i 去掉 i权限 文件可操作可执行

[root@qklinux-01 ~]# chattr -i 1.txt
[root@qklinux-01 ~]# mv 1.txt 3.txt
[root@qklinux-01 ~]# vi 1.txt
[root@qklinux-01 ~]# ls
111  123  1.txt  234  2.txt  3.txt  anaconda-ks.cfg.1
[root@qklinux-01 ~]# cat 1.txt
hsdhgjaasd11

chattr +a文件可以追加内容 可以更touch文件更改时间 不能增加内容删除重命名

root@qklinux-01 ~]# chattr +a 1.txt
[root@qklinux-01 ~]# rm 1.txt
rm:是否删除普通文件 "1.txt"?y
rm: 无法删除"1.txt": 不允许的操作
[root@qklinux-01 ~]# vi 1.txt
[root@qklinux-01 ~]# head -n2 /etc/passwd > 1.txt
-bash: 1.txt: 不允许的操作
[root@qklinux-01 ~]# head -n2 /etc/passwd >> 1.txt
[root@qklinux-01 ~]# cat 1.txt
hsdhgjaasd11
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
[root@qklinux-01 ~]# head -n2 /etc/passwd >> 1.txt
[root@qklinux-01 ~]# cat 1.txt
hsdhgjaasd11
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
[root@qklinux-01 ~]# mv 1.txt 3.txt
mv:是否覆盖"3.txt"? y
mv: 无法将"1.txt" 移动至"3.txt": 不允许的操作
[root@qklinux-01 ~]# touch 1.txt
[root@qklinux-01 ~]# ls -l 1.txt
-rw-r--r--. 1 root root 143 3月  17 20:10 1.txt
[root@qklinux-01 ~]# ls -l 1.txt
-rw-r--r--. 1 root root 143 3月  17 20:10 1.txt
[root@qklinux-01 ~]# lsattr 1.txt
-----a---------- 1.txt

chattr -a 去掉权限

[root@qklinux-01 ~]# chattr -a 1.txt
[root@qklinux-01 ~]# lsattr 1.txt
---------------- 1.txt

目录加i权限和文件加i权限,是一样的 ,但是对已存在目录下的文件限制不大,依然可以对目录下文件进行编辑,a权限也是只能限制目录本身。

lasttr命令格式
lsattr -R 递归列出目录及文件属性
lsattr -a列出目录中所有文件 包括隐藏文件
lsattr -d显示目录本身属性

2.18 特殊权限set_uid

set_uid权限就是让普通用户临时拥有该命令所有者的权限 ,前提 这个文件是二进制文件切实可执行文件

比如更改密码命令、/usr/bin/passwd 普通用户在使用这个命令时临时用了root的权限可以修改密码

[root@qklinux-01 ~]# which passwd
/usr/bin/passwd
[root@qklinux-01 ~]# ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 27832 6月  10 2014 /usr/bin/passwd

设置sey_uid权限chmod u+s

[root@qklinux-01 ~]# chmod u+s /usr/bin/ls
[root@qklinux-01 ~]# ls -l /usr/bin/ls
-rwsr-xr-x. 1 root root 117680 10月 31 03:16 /usr/bin/ls

去掉set_uid权限 chmod u-s /usr/bin/ls

[root@qklinux-01 ~]# chmod u-s /usr/bin/ls
[root@qklinux-01 ~]# !ls
ls -l /usr/bin/ls
-rwxr-xr-x. 1 root root 117680 10月 31 03:16 /usr/bin/ls

set_uid权限也可以这样设置 chmod u=rws /usr/bin/ls

[root@qklinux-01 ~]# chmod u=rws /usr/bin/ls
[root@qklinux-01 ~]# !ls
ls -l /usr/bin/ls
-rwSr-xr-x. 1 root root 117680 10月 31 03:16 /usr/bin/ls

发现rwS是大写权限 这是因为没有x权限,其实不受影响,普通用户照样可以执行,可以加上x权限,S就变成s

[root@qklinux-01 ~]# chmod u+x /usr/bin/ls
[root@qklinux-01 ~]# !ls
ls -l /usr/bin/ls
-rwsr-xr-x. 1 root root 117680 10月 31 03:16 /usr/bin/ls
2.19 特殊权限set_gid

set_gid 可以作用可执行文件和目录上 作用于文件时,作用效果与set_uid一样
set_gid作用于目录上时在该目录下创建的目录或文件的所属组与该目录的所属组一致

[root@qklinux-01 ~]# chmod g+s /usr/bin/ls
[root@qklinux-01 ~]# ls -l /usr/bin/ls
-rwxr-sr-x. 1 root root 117680 10月 31 03:16 /usr/bin/ls

设置set_gid权限作用于目录上 chmod g+s 234

[root@qklinux-01 ~]# chmod g+s 234
[root@qklinux-01 ~]# ls -ld 234
drwxrwsr-x. 2 root root 6 3月  17 14:50 234

更改用户组为user1

[root@qklinux-01 ~]# chown :user1 234
[root@qklinux-01 ~]# ls -ld 234
drwxrwsr-x. 2 root user1 6 3月  17 14:50 234

在234目录下创建文件,查看新建文件所属组也是user1

[root@qklinux-01 ~]# touch 234/qkailinux
[root@qklinux-01 ~]# ls -l 234/
总用量 0
-rw-r--r--. 1 root user1 0 3月  18 20:20 qkailinux

删除set_gid权限chmod g-s 234 新建文件发现所属组变为root

[root@qklinux-01 ~]# chmod g-s 234
[root@qklinux-01 ~]# touch 234/qkailinux111
[root@qklinux-01 ~]# !ls
ls -l 234
总用量 0
drwxr-sr-x. 2 root user1 6 3月  18 20:21 am
-rw-r--r--. 1 root user1 0 3月  18 20:20 qkailinux
-rw-r--r--. 1 root root  0 3月  18 20:22 qkailinux111

设置set_uid后所创建的子文件子目录会所属组和父目录所属组保持一致

2.20 特殊权限set_bit

系统目录/tmp/有 set_bit权限 也就是t权限 叫做防删除位 防止别人删除这个文件 root用户可以删除文件

[root@qklinux-01 ~]# ls -ld /tmp/
drwxrwxrwt. 15 root root 4096 3月  18 19:16 /tmp/
[root@qklinux-01 tmp]# su - user1
上一次登录:一 3月 18 20:52:24 CST 2019pts/1 上
[user1@qklinux-01 ~]$ cd /tmp/
[user1@qklinux-01 tmp]$ vi qkai
[user1@qklinux-01 tmp]$ rm -f qkai
rm: 无法删除"qkai": 不允许的操作

在/tmp/ 目录下,新建目录 user 增加777权限 切换用户 在目录下创建文件和子目录
在主目录下可以查看到所创建的子目录和文件所属组和用户

[user1@qklinux-01 tmp]$ mkdir user1
[user1@qklinux-01 tmp]$ chmod 777 user1
[user1@qklinux-01 tmp]$ ls -l
总用量 16
-rw-r--r--. 1 root  root  5556 3月  16 18:23 anaconda-ks.
-rwx------. 1 root  root   836 3月  11 00:58 ks-script-Gq
-rw-r--r--. 1 root  root     0 3月  16 18:06 ls2
-rwxrwxrwx. 1 qkai  qkai    28 3月  19 17:42 qkai
drw-r--r--. 2 user1 qkai    19 3月  16 18:10 qkai2
drwxr-xr-x. 4 root  root    28 3月  16 18:09 qkailinux
drwx------. 3 root  root    17 3月  19 17:33 systemd-priv
drwxrwxrwx. 2 user1 user1    6 3月  19 17:52 user1
 [user1@qklinux-01 tmp]$ cd user1
[user1@qklinux-01 user1]$ ls
1.txt  234
[user1@qklinux-01 user1]$ ls -l
总用量 0
-rw-rw-r--. 1 user1 user1 0 3月  19 17:55 1.txt
drwxrwxr-x. 2 user1 user1 6 3月  19 17:55 234
[user1@qklinux-01 user1]$ rm 1.txt
[user1@qklinux-01 user1]$ ls
234
[user1@qklinux-01 user1]$ rm -r 234
[user1@qklinux-01 user1]$ ls
[user1@qklinux-01 user1]$ pwd
/tmp/user1
[user1@qklinux-01 user1]$ ls -ld
drwxrwxrwx. 2 user1 user1 6 3月  19 17:56 .

文件能不能删除是看该文件的父目录的权限,如果是普通用户1创建的目录,用户2在下面创建子文件或目录是可以修改但不能删除 是因为加了stick_bit权限

stick_bit权限是用于防止自己的文件被其他用户删除的设置了权限后除了这文件的所有者和所属组之外的用户是不能删除的

2.21 软连接文件

软链接类似于windows系统中的快捷方式软链接是一个普通文件,只是数据块内容有点特殊,文件用户数据块中存放的内容是另一文件的路径名的指向,通过这个方式可以快速定位到软连接所指向的源文件实体。软链接可对文件或目录创建。

比如/bin -> usr/bin 这就是一个软连接文件

[root@qklinux-01 ~]# ls -l /bin
lrwxrwxrwx. 1 root root 7 3月  11 00:52 /bin -> usr/bin
[root@qklinux-01 ~]# ls -l /lib64
lrwxrwxrwx. 1 root root 9 3月  11 00:52 /lib64 -> usr/lib64

软连接创建实例
ln -s 源文件 创建软连接的文件

[root@qklinux-01 ~]# ln -s /tmp/yum.log /root/
[root@qklinux-01 ~]# ls -l
总用量 12
drwxrwxr--. 3 root root    87 3月  17 20:21 111
drwxr-xr-x. 2 root root     6 3月  17 14:49 123
-rw-r--r--. 1 root root   143 3月  17 20:10 1.txt
-rw-r--r--. 1 root root    13 3月  17 20:08 1.txt~
drwxrwxr-x. 4 root user1   64 3月  18 20:22 234
-rw-r--r--. 1 root root     0 3月  17 19:57 2.txt
-rw-rw-r--. 1 root root     0 3月  17 15:06 3.txt
-rw-------. 1 root root  1257 3月  11 00:58 anaconda-ks.cfg.1
lrwxrwxrwx. 1 root root    12 3月  20 10:03 yum.log -> /tmp/yum.log

目录创建软连接

root@qklinux-01 ~]# ln -s /root/qkai2 /root/123/qkai3
[root@qklinux-01 ~]# ls -l /root/123/qkai3
lrwxrwxrwx. 1 root root 11 3月  20 10:15 /root/123/qkai3 -> /root/qkai2

相对路径创建软连接文件有弊端,一般用绝对路径创建,在同一路径下创建软连接是相对路径
所以如果把文件移动到另一台机器那么链接就会失效,所以劲量使用绝对路径

[root@qklinux-01 tmp]# mv qkailinux.log /root/111/
[root@qklinux-01 tmp]# cd /root/111/
[root@qklinux-01 111]# ls -l
总用量 8
-rw-r--r--. 1 root root   65 3月  17 20:24 12.txt
-rw-r--r--. 1 root root 4096 3月  17 20:21 12_txt.swp
drwxr-xr-x. 2 root root    6 3月  17 20:14 222
lrwxrwxrwx. 1 root root    7 3月  20 10:19 qkailinux.log -> yum.log

可以看到yum.log一直闪 说明文件不存在 我们重新创建一个yum.log正常

[root@qklinux-01 111]# touch yum.log
[root@qklinux-01 111]# ls -l
总用量 8
-rw-r--r--. 1 root root   65 3月  17 20:24 12.txt
-rw-r--r--. 1 root root 4096 3月  17 20:21 12_txt.swp
drwxr-xr-x. 2 root root    6 3月  17 20:14 222
lrwxrwxrwx. 1 root root    7 3月  20 10:19 qkailinux.log -> yum.log
-rw-r--r--. 1 root root    0 3月  20 10:29 yum.log
2.22硬链接文件

硬链接是具有相同inode号的文件名,意思就是不同文件名可以访问同样的内容,对文件的内容修改会影响到所有同名文件,但是删除一个文件名,不影响其他文件名访问
硬链接不支持对目录做硬链接文件,只支持文件做硬链接且不能跨分区

 [root@qklinux-01 ~]# ln 1.txt 1_heard.ttx
 [root@qklinux-01 ~]# ls -i
     555 111          50770396 234
33631999 123          33632001 2.txt
33632003 1_heard.ttx  33631982 3.txt
33631976 1_sorft.txt  33582978 anaconda-ks.cfg.1
33632003 1.txt        33632009 qkai2
33632004 1.txt~       33631978 yum.log
 1_heard.ttx和1.txt inode相同

硬链接总结:
硬链接不能对目录创建,只能做用于文件硬链接
只能对存在的文件创建
硬链接不会占用两份空间
硬链接不受原文件影响,及时删除原文件,链接文件依然有效

2.23-2.25 find命令

find 用来搜索文件和目录的命令
相同命令还有which whereis(用于程序名搜索)
locate 搜索一个数据库 使用前用updatedb更新数据库

root@qklinux-01 ~]# locate
locate: 没有指定任何搜索模式
[root@qklinux-01 ~]# updatedb
[root@qklinux-01 ~]# locate 123
/root/123
/root/123/qkai3
/usr/lib/modules/3.10.0-957.el7.x86_64/kernel/drivers/media/dvb-frontends/cx24123.ko.xz
/usr/lib64/gconv/IBM1123.so

快捷方式总结:
ctrl+l清屏 ctrl+d退出终端 ctrl+c 终止命令 ctrl+u删除光标前面内容
ctrl+e 光标挪到后面 ctrl+a 重头开始

find语法
find (选项)(参数)
举例 查找一个/etc/下的sshd_config文件

root@qklinux-01 ~]# find /etc/ -name "sshd_config"
/etc/ssh/sshd_config
如果没有具体文件名*号查找代表所有文件
[root@qklinux-01 ~]# find /etc/ -name "sshd*"
/etc/systemd/system/multi-user.target.wants/sshd.service
/etc/sysconfig/sshd
/etc/pam.d/sshd
/etc/ssh/sshd_config 
 -type d 代表查找文件类型

find选项

-amin<分钟>:查找在指定时间曾被存取过的文件或目录,单位以分钟计算;
-anewer<参考文件或目录>:查找其存取时间较指定文件或目录的存取时间更接近现在的文件或目录;
-atime<24小时数>:查找在指定时间曾被存取过的文件或目录,单位以24小时计算;
-cmin<分钟>:查找在指定时间之时被更改过的文件或目录;
-cnewer<参考文件或目录>查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录;
-ctime<24小时数>:查找在指定时间之时被更改的文件或目录,单位以24小时计算;
-daystart:从本日开始计算时间;
-depth:从指定目录下最深层的子目录开始查找;
-expty:寻找文件大小为0 Byte的文件,或目录下没有任何子目录或文件的空目录;
-exec<执行指令>:假设find指令的回传值为True,就执行该指令;
-false:将find指令的回传值皆设为False;
-fls<列表文件>:此参数的效果和指定“-ls”参数类似,但会把结果保存为指定的列表文件;
-follow:排除符号连接;
-fprint<列表文件>:此参数的效果和指定“-print”参数类似,但会把结果保存成指定的列表文件;
-fprint0<列表文件>:此参数的效果和指定“-print0”参数类似,但会把结果保存成指定的列表文件;
-fprintf<列表文件><输出格式>:此参数的效果和指定“-printf”参数类似,但会把结果保存成指定的列表文件;
-fstype<文件系统类型>:只寻找该文件系统类型下的文件或目录;
-gid<群组识别码>:查找符合指定之群组识别码的文件或目录;
-group<群组名称>:查找符合指定之群组名称的文件或目录;
-help或——help:在线帮助;
-ilname<范本样式>:此参数的效果和指定“-lname”参数类似,但忽略字符大小写的差别;
-iname<范本样式>:此参数的效果和指定“-name”参数类似,但忽略字符大小写的差别;
-inum<inode编号>:查找符合指定的inode编号的文件或目录;
-ipath<范本样式>:此参数的效果和指定“-path”参数类似,但忽略字符大小写的差别;
-iregex<范本样式>:此参数的效果和指定“-regexe”参数类似,但忽略字符大小写的差别;
-links<连接数目>:查找符合指定的硬连接数目的文件或目录;
-iname<范本样式>:指定字符串作为寻找符号连接的范本样式;
-ls:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出;
-maxdepth<目录层级>:设置最大目录层级;
-mindepth<目录层级>:设置最小目录层级;
-mmin<分钟>:查找在指定时间曾被更改过的文件或目录,单位以分钟计算;
-mount:此参数的效果和指定“-xdev”相同;
-mtime<24小时数>:查找在指定时间曾被更改过的文件或目录,单位以24小时计算;
-name<范本样式>:指定字符串作为寻找文件或目录的范本样式;
-newer<参考文件或目录>:查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录;
-nogroup:找出不属于本地主机群组识别码的文件或目录;
-noleaf:不去考虑目录至少需拥有两个硬连接存在;
-nouser:找出不属于本地主机用户识别码的文件或目录;
-ok<执行指令>:此参数的效果和指定“-exec”类似,但在执行指令之前会先询问用户,若回答“y”或“Y”,则放弃执行命令;
-path<范本样式>:指定字符串作为寻找目录的范本样式;
-perm<权限数值>:查找符合指定的权限数值的文件或目录;
-print:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式为每列一个名称,每个名称前皆有“./”字符串;
-print0:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式为全部的名称皆在同一行;
-printf<输出格式>:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式可以自行指定;
-prune:不寻找字符串作为寻找文件或目录的范本样式;
-regex<范本样式>:指定字符串作为寻找文件或目录的范本样式;
-size<文件大小>:查找符合指定的文件大小的文件;
-true:将find指令的回传值皆设为True;
-typ<文件类型>:只寻找符合指定的文件类型的文件;
-uid<用户识别码>:查找符合指定的用户识别码的文件或目录;
-used<日数>:查找文件或目录被更改之后在指定时间曾被存取过的文件或目录,单位以日计算;
-user<拥有者名称>:查找符和指定的拥有者名称的文件或目录;
-version或——version:显示版本信息;
-xdev:将范围局限在先行的文件系统中;
-xtype<文件类型>:此参数的效果和指定“-type”参数类似,差别在于它针对符号连接检查。

使用stat命令查看文件的时间

[root@qklinux-01 ~]# stat 2.txt
最近访问(atime):2019-03-17 19:57:19.027536660 +0800
最近更改(mtime):2019-03-17 19:57:19.027536660 +0800
最近改动(ctime):2019-03-17 19:57:19.027536660 +0800  修改权限等

查找 最近一天内有更改的文件

find /etc/ -type f -mtime -1

查找最近一天以前有变化的文件

find /etc/ -type f -mtime +1

搜索最近一天内有更改的文件 且文件名为 .conf

find /etc/ -type f -mtime -1 -name “*.conf”

搜索最近一天内有更改的文件 或者文件名为 .conf

find /etc/ -type f -mtime -1 -o -name “*.conf”

使用find查找有相同inode的文件 find / -inum

[root@qklinux-01 ~]# ls -i 1_heard.ttx
33632003 1_heard.ttx
[root@qklinux-01 ~]# find / -inum 33632003
/root/1_heard.ttx
/tmp/1.txt.bak

查找当前目录下200分钟更改的文件并且列出

find /root/ -type f -mmin -200 -exec ls -l {} ;

查找当前目录下200分钟更改的文件并且更改名字

find /root/ -type f -mmin -200 -exec mv {} {}.bak ;

查找目录下小于10k的文件

find /root/ -type f -size -10k -exec ls -lh {} ;

查找大于10k的文件

find /root/ -type f -size +10k -exec ls -lh {} ;

2.26文件后缀名

linux系统是区分大小写的,文件后缀名不代表是什么样的文件
,只是习惯使用方便我们来区分
linux中,带有扩展名的文件,只代表程序的关联,并不能说明文件是可执行的,所以linux的扩展名没有太大意思

linux中文件的扩展名
*.sh 脚本或批处理文件 .tar tar.gz等压缩文件 常用的文件种类 *

普通文件-

  • 目录 d
    链接文件 l
    管道文件p
    套接口通信文件 s
    字符设备 c
    块设备文件b
2.27 linux和windows互传文件

在xshell中使用 或者crt putty不能用
安装

yum install -y lrzsz

linux向windows传文件

sz 3.txt

在这里插入图片描述
windows向linux传文件

[root@qklinux-01 ~]# rz

在这里插入图片描述
传送完查看

[root@qklinux-01 ~]# ls
111          1.txt~  anaconda-ks.cfg.1
123          234     qkai2
1_heard.ttx  2.txt   yum.log
1_sorft.txt  3.txt   新建文本文档.txt
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值