文件属性和权限
tips
man -k name
//可在man page中搜索字符串
sync
#强制将数据(可能在缓冲区)写入硬盘
文件相关属性
d:目录
-:文件
l:链接
b:接口设备
c:串行端口设备,例键盘鼠标
访问文件过程:
1.系统通过目录项找到文件名对应的节点号
2.通过节点号获取节点信息
3.根据节点号信息找到真正存储数据的数据块
查看文件节点信息:
stat 文件名
文件以及目录权限
chgrp:
//修改文件所属群组
chgrp -R hn test.txt
chown:
//修改文件拥有者,也可以修改所属群组
chown -R hn:hn test //-R表示如果test是目录则递归其下的所有子文件夹及其文件
chown -R hn.hn test
chown .zd test//仅修改群组
chmod:
//修改文件权限
chmod 777 test.txt//rwx 分别用 421 代表
chmod u|g|o +|-|= r|w|x test.txt
权限实例:
/dir/file1
/dir2
删除不需要r权限,只要对目录有wr权限并知道目录下有这个文件,就可以删除//就像闭上眼睛开门杀人
常用的几个命令
cp :加上-a可以将文件的所有特性复制过来//备份时用
ls : ls -lrt //常用,按修改时间查看
mtime:(modify-time)文件内容最后一次改变的时间
ctime:(change-time)状态(inode节点)修改的时间,包括修改文件内容
atime:(access-time)最后一读取或执行的时间
//ls默认显示时间是创建时间或最近的修改日期
od : 以二进制方式读取文件内容
more或less : 按页查看//less可以向前翻页
head或tail : 查看前几行或后几行//-n 10
find:
后加指令:find ../ -name nothing -exec ls -lrt {} \;
//指令放在 -exec 与 {}\ 之间
find [PATH] -name filename //常用
dd:
dd if=“in_filename” of=“out_filename” bs=“block_size” count=“number”
文件和目录的默认权限和隐藏权限
umask : 预设权限
设置隐藏属性:
chattr [±=] [ASacdistu] 文件名或目录名
a:不删不修只能增(root)
i:不删不改名不链接不写不增(root)
显示隐藏属性:
lsattr -[adR] 文件或目录
-a:隐藏文件也显示
-d:只显示本身的属性
-R:子目录也显示
文件特殊权限SUID,SGID,SBIT
SUID:显示为rws,如果没有x的权限,显示为大写S
仅对二进制程序有效
执行者对该程序要有x的权限
只在执行过程中有效
执行过程中具有拥有者的权限
SGID:显示为rws,如果没有x的权限,显示为大写S
对文件:
对二进制程序有效
执行者对该程序要有x的权限
执行过程中拥有该程序群组的支持
对目录:
具有r和x的权限可以进入此目录//前提
用户在此目录下的有效群组将变成该目录的群组
用途:若用户在此目录下有w权限,则使用者所建立的新文
件,群组为目录的群组
SBIT:显示为rwt,如果没有x的权限,显示为大写T
对目录:
当用户对于此目录具有W,X权限,即具有写入权限时:
当该用户在该目录下新建文件或目录时,仅有自己与root才能删除
chmod o+t file_name
权限设定:
SUID : 4
SGID : 2
SBIT : 1
chmod 4755 test;//加在普通权限前边
文件系统特性
1.superblock:记录此文件系统得整体信息,包括inode/block的总量、使用量、剩余量,以及文件系统的格式和相关信息等;
2.inode:记录文件的权限等属性,一个文件占用一个inode,同时记录此文件的数据所在的block号码;
3.block:实际记录文件的内容的地方,文件太大时占用多个block;
索引式文件系统:
通过inode中记录的block号码访问数据
FAT格式
例如U盘,该格式没有inode存在,访问数据时,每个block号码放在前一个block中,类似于链表式访问数据。
Linux的EXT2格式
如此小的inode怎么访问到磁盘上所有的数据?
简单说明例:
//inode(128bytes)
//block按1k计算,每笔block号码占用4bytes
//所以1K的block可以记录256笔block号码
一个inode除了权限等属性外有:
12个直接block号码 :12x1k
1个间接block号码 :256x1K
1个双间接block号码 : 256x256x1K
1个三间接block号码 : 256x256x256x1K
总共:16GB
硬链接
多个档名链接到同一个inode号码
删除任何一个,inode和block还在,所以数据不会丢失
修改任何一个,另一个访问时是修改后的数据
不会占用inode和block//特殊情况,新档名刚好将目录的block填满时,会新加一个block
不能跨文件系统
不能链接目录
实例:ln 源档名 链接档名
软链接
等于windows快捷方式
档名指向被链接的文件的档名
删除软链接不影响源文档
删除源文档,软链接会访问不到原始档名
实例:ln -s 源档名 链接档名
文件的压缩、打包和备份
压缩与解压缩:
gzip 【-v】 filename 生成.gz压缩文件,源文件被删除
//-v:显示压缩比等信息
gzip -d filename.gz 解压缩恢复成源文件
bzip2 同上
xz 同上
压缩并打包tar:
1压缩:tar -jcv -f filename.tar.bz2 filename …
//查看包内文件:tar -jtv -f filename.tar.bz2
2解压缩:tar -jxv -f filename.tar.bz2 【-C 指定的解压目录】
-c:建立打包文件
-x:解压缩
//以下三种压缩方式能力依次提升,压缩时间也一样提升
-z:通过gzip压缩或解压
-j:通过bzip2压缩或解压缩
-J:通过xz进行压缩或解压缩
-v:显示正在处理的文件名
-f:后面要直接接被处理的文件名
-p:权限不变
-P:可以带上根目录 /
--exclude=filename :排除此文件
linux和windows换行格式转换:
dos2unix或unix2dos
转换文本的编码格式:
iconv -f [原本编码] -t utf8 filename to new_filename