任务内容:
2.17 隐藏权限lsattr/chattr
2.18 特殊权限set_uid
2.19 特殊权限set_gid
2.20 特殊权限stick_bit
2.21 软链接文件
2.22 硬连接文件
2.23/2.24/2.25 find命令
2.26 文件名后缀
2.27linux和windows互传文件
chattr设置隐藏权限,常用参数i 和 a。lsattr查看隐藏权限,常用参数R。
chattr +i: 如果对文件设置i属性,那么不允许对文件进行删除、改名,也不能添加和修改数据;如果对目录设置i属性,那么只能修改目录下文件的数据,但不允许建立和删除文件。取消i属性,使用chattr -i命令。
首先,创建一个1.txt的文件,然后使用chattr命令赋予它i属性。
尝试在1.txt文件中写入内容,使用:wq命令保存的时候会提示此文件为只读文件,无法保存,只能使用q!命令强制退出。
查看1.txt的文件内容为空。
对1.txt文件进行删除和改名操作,系统提示没有权限。
那么将i参数作用在目录上是什么效果呢?
首先在/下创建一个dir1的目录,在dir1目录下创建一个2.txt的空文件。
并dir1赋予i权限。
接下来尝试修改2.txt的内容,成功!
尝试删除2.txt文件,失败!
尝试在dir1目录下新建一个3.txt的空文件,失败!
chattr +a:如果对文件设置a属性,那么只能在文件中增加数据,但是不能删除也不能修改数据;如果对目录设置a属性,那么只允许在目录中建立和修改文件,但是不允许删除。取消a属性,使用chattr -a命令。
在/下创建一个4.txt的空文件,并写入内容。
赋予4.txt a的属性
接下来尝试修改4.txt的内容,失败!会产生一个4.txt~的缓存文件,因为无法覆盖4.txt,所以只能与4.txt并存。
尝试追加内容到4.txt中,成功!
尝试删除4.txt文件, 失败!
lsattr -a :连同隐藏文件一同列出
lsattr -R :连同子目录一起列出。
set_uid
临时赋予普通用户文件所有者的身份执行文件,前提是该文件为可执行的二进制文件。
比如,在zsy123用户下,执行ls /root命令,发现没有权限。
如果让zsy123用户也可以使用ls命令查看/root目录的话,需要给ls命令设置一个set_uid。
然后再切换到zsy123用户下,执行ls命令。
执行成功!
因为在ls命令设置了uid的情况下,其他用户在使用ls命令式,会临时拥有该命令文件所有者,即root用户的权限。
我们先去除ls文件的s权限,然后执行,chmod u=rws /usr/bin/ls ,发现变成了大写S,是因为没有x权限。
再切换为zsy123用户,执行ls命令。发现也可以查看root目录下的文件,并不影响使用。
可以为目录设置set_uid,但是没有意义。
set_gid
临时赋予普通用户文件所属组的身份执行文件。作用在目录上的话,那么此目录下的子目录或子文件所属组会和作用目录一致。
首先,在root用户下,可以使用ls命令查看/root目录下的内容;切换到zsy123用户下,使用ls命令无法查看/root目录下的内容。
为ls命令文件的所属组添加一个s权限,然后切换到 zsy123用户下,使用ls命令查看/root目录下的内容,成功!
因为在ls命令设置了gid的情况下,其他用户在使用ls命令式,会临时拥有该命令文件所属组,即root组的权限。
那么作用在目录上是什么效果呢?
由此可见,为dir11目录设置gid以后,将所属组改为zsy123。之后在dir11目录下新建的文件和目录,他们的所属组都是zsy123。
stick_bit
防删除位。防止别人删除自己的文件,root除外。
首先,在/目录下创建一个dir22的目录并赋予此目录777权限。
使用zsy123用户,在dir22目录创建一个zsy123.txt
使用zsy456用户,尝试删除zsy123.txt ,成功!
将dir22目录设置stick_bit属性后。让zsy456用户再次尝试删除此目录下的zsy123.txt,失败!
软链接与硬链接
软链接类似于Windows的快捷方式,软链接是建立一个独立的文件,作用是节省空间。
系统中存在很多的软链接,比如/bin其实是usr/bin。
我们可以自己创建软链接,格式:ln [-s] [源文件][目标文件(快捷方式)]。尽量使用绝对路径,不然如果源文件不存在,就会出错。
我们在/dir33/dir44下新建一个5.txt的文件,并写入内容
然后为此文件,做一个软链接。目标文件是/etc/55.txt
我们查看/etc/55.txt,发现内容是一样的。
我们将55.txt追加一部分内容,查看源文件。可以看到内容也被追加了。
软链接也可以作用于目录:将/home做软链接到/aaa
硬链接:创建的文件与另外一个文件有相同的inode号,这两个文件相互为硬链接文件,删除源文件,不影响硬链接文件,软链接则不可以。硬链接也不会占用磁盘空间。但是硬链接不可以作用于目录。
对/1.txt做硬链接到/etc/2.txt
可以发现两者的inode号相同。
删除/1.txt以后,并没有对/etc/2.txt产生影响。
尝试对目录做硬链接,失败!
find命令
讲find命令之前,先归纳一下其他查找功能的命令。
which命令只能用来查找PATH环境变量中出现的路径下的可执行文件。
whereis命令是通过预先生成的一个文件列表数据库(每天固定时间更新)找与给出的文件名相关的文件,格式为whereis [-bms] [文件名称],
-b:只查找二进制文件;
-m:只查找帮助文件;
-s:只查找源代码文件。
locate命令类似于whereis,通过查找预生成的文件列表数据库(每天凌晨4点自动生成)来告诉用户要查找的文件在哪里。一般机器上没有安装这个软件包,使用yum install -y mlocate 安装。在安装完毕之后第一次使用会报错,因为系统上没有生成文件列表库,可以通过使用updatedb命令立即生成这个库。该命令不精准,所以不常用。
常用快捷键:ctrl+l清屏,ctrl+d(相当于exit,log out)退出终端,ctrl+c终止当前命令,ctrl+u光标之前的字符全被删掉,ctrl
+e光标移至最末端,ctrl+a光标移至最开始。
接下来就叙述最常用的find命令。
find 目录 参数 -name "要查找的文件名"
在/etc目录下查找名为sshd_config的文件
在/etc目录下查找名为sshd开头的所有文件 ,*是通配符,表示所有文件。
还可以用-type +参数 指定文件类型
d 目录
在/下查找所有yum目录
f 文件
查找/目录下 文件名是passwd的所有文件
l 软链接文件
s socket文件
c 字符串设备
b 块设备
find /
-atime (访问时间)+n /-n:表示访问或执行时间大于(+)、或小于(-)n天的文件
-ctime (状态修改时间)+n /-n:表示写入、更改inode属性(所有者,权限,链接等)的时间大于(+)、或小于(-)n天的文件
-mtime (修改时间)+n/-n :表示写入时间大于或小于n天的文件;还有一种写法是 -mmin -10 ,这就表示10分钟以内的文件;同理 -mmin +10 这就表示10分钟以上的文件
在选项之间加 -o,表示或者的意思
在/etc目录下查找修改时间小于一天,或者名字带有.conf的文件。由于结果太多就不截图了。
还可以使用find命令查找inode号所对应的文件
查找符合条件的文件并用exec命令执行其他操作
在/etc目录下查号修改时间小于1500分钟以内的文件,并将符合条件的文件的后缀名改为.bat
查看效果
还可以按照文件大小查询。
在/etc目录下 查找大于4000k的文件,并显示其详细信息。
文件名后缀
命令区分大小写。
加后缀名是为了便于区分,当用户看到这个文件名时候,就知道这是什么文件,比如sh代表它是一个shell脚本,gz代表它是一个压缩包,conf代表它是一个配置文件,zip代表它是一个压缩文件。
date 显示当前日期
echo $LANG 显示当前语言
Linux和Windows互传文件
除samba和ftp服务外,可以使用xshell。PuTTY不行。
首先安装lrzsz
使用sz a.txt ,可以使a.txt传输到Windows中。
使用rz命令,可以使文件传输到Linux中。