修改文件时间或创建文件
每个文件在Linux 下面都会记录许多的时间参数,其实有三个主要的变动时间。
- 修改时间
- 状态时间
- 读取时间
touch [-acdmt] 文件
-a :仅自定义access time
-c :仅修改文件的时间,若该文件不存在就创造新的文件
-d :后面可ui接欲自定义的日期而不是目前的日期
-m :仅修改mtime
-t :后面可以接欲自定义的时间不用目前的时间,格式为【YYYYMMDDhhmm]
liangguolong-a@liangguolonga-virtual-machine:/tmp$ touch testtouch
如果文件存在,则3个时间会更新为目前的时间,若文件不存在,则会创建一个空的文件
date; ls -l /tmp/text.text ;ls -l --time=atime /tmp/text.text ; ls -l --time=ctime /tmp/text.text
建立内容的时间 mtime
读取过内容时间 atime
更新状态时间 ctime
liangguolong-a@liangguolonga-virtual-machine:/tmp$ touch -t 201506150202 text.text
- 建立一个空文件
- 将某个文件日期自定义为目前mtime和atime
文件与目录的默认权限与隐藏权限
liangguolong-a@liangguolonga-virtual-machine:/tmp$ umask
0002 ---与一般权限有关的后面三个数字
liangguolong-a@liangguolonga-virtual-machine:/tmp$ umask -S
u=rwx,g=rwx,o=rx
- 若用户建立为文件则默认没有可执行的x权限,只有rw这两个项目,也就是最大为666,默认权限如下:-rw-rw-rw-
- 若用户建立为目录,则由于x与是否可以进入此目录有关,因此默认若有权限均为开放,即777,默认权限如下:drwxrwxrwx
liangguolong-a@liangguolonga-virtual-machine:/tmp$ touch test1
liangguolong-a@liangguolonga-virtual-machine:/tmp$ mkdir test2
liangguolong-a@liangguolonga-virtual-machine:/tmp$ ls -l -d test*
-rw-rw-r-- 1 liangguolong-a liangguolong-a 0 12月 18 19:31 test1
drwxrwxr-x 2 liangguolong-a liangguolong-a 4096 12月 18 19:31 test2
文件隐藏属性
chattr [+-=] [ASacdistu] 文件或目录名称
+ :增加某一特殊参数,其他原本存在的参数不动
- :删除某一特殊参数,其他原本存在的参数不动
= : 直接设置参数,且仅有后面接的参数
A :当设置A这个属性时,若你在存取此文件或者目录时候,它的存取时间将不会被修改
S :一般文件是非同步写入磁盘的,当进行任何文件的修改时候,该修改会同步写入磁盘
a :当设置a之后,这个文件只能增加数据,而不能删除或者修改,只有root权限才能用此操作
c :这个属性设置之后,会将文件进行压缩,在读取的时候将会自动解压
d :当dump程序被执行的时候,设置d属性可以是目录或文件不被dump备份
i :可以让一个文件不能被删除,该名,设置连接也无法写入或新增数据,只有root权限才能由此操作
s :当文件设置了s属性的时候,如果文件删除就会从磁盘里面直接删除不会复原
u :与s相反,当使用u来配置文件时候,如果该文件被删除了,数据内容则还在磁盘中,可以使用来恢复该文件
liangguolong-a@liangguolonga-virtual-machine:/tmp$ chattr +i test1
chattr: 不允许的操作 设置 test1 的标志时
liangguolong-a@liangguolonga-virtual-machine:/tmp$ su --
密码:
root@liangguolonga-virtual-machine:/tmp# chattr +i test1
root@liangguolonga-virtual-machine:/tmp# rm test1
rm: 无法删除'test1': 不允许的操作
root@liangguolonga-virtual-machine:/tmp# chattr -i test1
lsattr [-adR] 文件或者目录
-a :将文件的隐藏属性显示出来
-d :如果接的是目录,仅列出目录本身属性而非目录的文件名
-R :连同子目录的数据一起列出来
root@liangguolonga-virtual-machine:/tmp# chattr -aiS test1
root@liangguolonga-virtual-machine:/tmp# lsattr test1
--------------e----- test1
root@liangguolonga-virtual-machine:/tmp# chattr +iS test1
root@liangguolonga-virtual-machine:/tmp# lsattr test1
--S-i---------e----- test1
文件特殊权限:SUID,SGID,SBIT
oot@liangguolonga-virtual-machine:/# ls -ld /tmp ;ls -l /usr/bin/passwd
drwxrwxrwt 21 root root 4096 12月 18 19:59 /tmp
-rwsr-xr-x 1 root root 68208 5月 28 2020 /usr/bin/passwd
set UID
当s这个标志出现在文件拥有者x权限上时候,这时候被称为SUID。SUID功能与限制如下:
- SUID权限仅对二进制程序有效
- 执行者对于该程序具有x的可执行权限
- 本权限仅在执行该程序过程中有效
- 执行者将具有该程序拥有者的权限
set GID
当s标志在文件拥有者x项为SUID,那么s在用户组的x时被称为set GID
- SGID对二进制程序有用
- 程序执行者对于该程序来说,需要具备x权限
- 执行者在执行的过程中将会获得该程序用户组的支持
GID也能够用在目录中,当一个目录设置SGID的权限后,它将具备如下功能。
- 用户若对于目录具有r和x的权限时候,该用户能够进入此目录
- 用户在此目录下的有效用户组,将会变成该目录的用户组
- 用途:若用户在此目录下具有w的权限,可以新建文件夹,则用户所建立的新文件,该新文件的用户组与此目录的用户组相同
Sticky Bit
这个Sticky Bit目前只针对目录有效,对于文件已经没有效果了,Bit对于目录的作用是:
- 当用户对于此目录具有wx权限,则具有写入的权限
- 当用户在该目录下建立文件或目录时候,仅有自己与root才有权力删除文件
root@liangguolonga-virtual-machine:/tmp# touch test
root@liangguolonga-virtual-machine:/tmp# chmod 777 test
root@liangguolonga-virtual-machine:/tmp# exit
exit
liangguolong-a@liangguolonga-virtual-machine:/tmp$ rm test
rm: 无法删除'test': 不允许的操作
liangguolong-a@liangguolonga-virtual-machine:/tmp$
如果将A目录加上Sbit的权限选项时,则甲只能够针对自己建立的文件或目录进行删除,更名,移动等操作。而无法删除它人的文件
SUID SGID SBIT权限设置
- 4SUID
- 2SGID
- 1SBIT
root@liangguolonga-virtual-machine:/tmp# chmod 4775 test; ls -l test
-rwsrwxr-x 1 root root 0 12月 18 21:46 test
root@liangguolonga-virtual-machine:/tmp# chmod 2775 test; ls -l test
-rwxrwsr-x 1 root root 0 12月 18 21:46 test
root@liangguolonga-virtual-machine:/tmp# chmod 7775 test ;ls -l test
-rwsrwsr-t 1 root root 0 12月 18 21:46 test
观察文件类型:file
想要知道某个文件的基本信息,如是属于ASCll或是数据文件或是二进制文件,且其中有没有使用动态连接库等,就可以利用file这个命令来查看
root@liangguolonga-virtual-machine:/tmp# file /tmp/tes1/tes1
/tmp/tes1/tes1: UTF-8 Unicode text
脚本文件的查找
which 查找执行文件
root@liangguolonga-virtual-machine:/# which -a ls
/usr/bin/ls
/bin/ls
只会寻找环境变量里面的
这个命令是根据PATH这个环境变量所规范的路径,去查找执行文件的文件名。
whereis 由一些特定的目录中查找
whereis [-bmsu] 文件或目录名
-l :可以列出whereis 会去查询的几个主目录
-b :只找binary二进制文件
-m :只找说明文件manual 路径下的文件
-s :只找source 的源文件
-u :查找不在上述三项目中的其他特殊文件
root@liangguolonga-virtual-machine:/# whereis passwd
passwd: /usr/bin/passwd /etc/passwd /usr/share/man/man1/passwd.1ssl.gz /usr/share/man/man1/passwd.1.gz /usr/share/man/man5/passwd.5.gz
locate/upatedb
locate [-it] key word
-i :忽略大小写的差异
-c :不输出文件名,仅计算找到文件的数量
-l :控制输出几行 -l 5
-S :输出 locate 所使用的数据库文件的相关内容,数据库记录的文件目录数量等
-r :后面可接正则的显示方式
root@liangguolonga-virtual-machine:/# updatedb
root@liangguolonga-virtual-machine:/# locate text.text
/home/liangguolong-a/sword/text.text
发行版本不同数据库更新的时间不同,有时候数据库没有更新需要使用updatedb更新
- updatedb:根据/etc/updatedb.conf设置去查找系统硬盘内的文件,并更新/var/lib/mlocate内的数据库内容
- locate: 依据/var/lib/mlocate 内的数据库记录,找出用户输入关键词的文件名
find [PATH] [option] [action]
与时间有关的选项,共有-atime -mtime -mtime
-atime n :n代表为数字,n到前一天的的时间 修改过内容的文件
-mtime +n :列出n天之前不含n本身被修改过的内容文件
-mtime -n :列出n天之内含n本身被修改过的文件
-newer file :file 为一个存在的文件,列出比file还要新的文件
用于辨别新旧文件
root@liangguolonga-virtual-machine:/home/liangguolong-a# find / -mtinme 0
0代表当前时间到24小时之前
与使用者或用户组名称有关的参数
-uid n :n为数字,这个数字是使用者的账号ID ,UID,UID记录在/etc/passwd
-gid n : n为数字,这个数字是用户组的账号ID,GID ,GID 记录在/etc/group
-user name :name为使用者账号名称
-group name :name为用户组的名称
-nouser :查找文件的拥有者在不在/etc/passwd中
-nogroup :查找文件拥有组不存在与/etc/group的文件
liangguolong-a@liangguolonga-virtual-machine:~$ find /home -user liangguolong-a
查找home下面属于liangguolong-a的文件
liangguolong-a@liangguolonga-virtual-machine:~$ find / -nouser
查找系统中不属于任何人的文件,也可以找出不太正常的文件