Linux里面,每个文件都有User,Group,Other三个身份权限。
su 可以用于切换用户,后面不加命令时为切换到root
Linux的文件属性:
-ls list的意思。显示文件名和相关属性。一般会显示7项。
从左到右如下:
-rw-r--r-- 1 root root 1024 sep 4 19:00 hello.txt
文件权限 连接数 文件所有者 所属用户组 文件大小 最后修改日期 文件名
其中文件权限是最复杂的部分。一共有10个字符。
第一个表示这个文件是目录,文件或者链接文件等:
d代表目录;-代表是文件;l代表是连接(不是链接)文件(类似与快捷方式的东西);b代表是设备文件里面的可供应的接口设备;
c代表设备文件里面的串行端口设备,如键盘鼠标等一次性读取设备。
接下来的九个字符,以每三个为一组‘rwx’的组合,代表可读,可写,可执行三种权限。三个组分别是 所有者的权限;同用户组的权限;其他的权限。
chgrp 改变所在用户组
chown 改变文件所有者
chmod 改变文件权限 :r 4;w 2; x 1.利用数字修改 当然可以直接用符号改变
例如: chmod 771 test.txt 或 chmod ug=rwx,o=x test.txt
目录的权限
目录的权限与文件的稍有不同:
r代表具有读取该目录结构列表的权限,即查询该目录下的文件名,而且仅仅只是查询文件名。
w代表你具有更改该目录结构列表的权限:新建新的文件和目录;删除文件与目录(不管该文件的 权限如何);重命名;转移位置。总之,就是与该目录下面的文件名变动有关。
x代表的是用户能否进入该目录,成为工作目录。即是切换cd到该目录下。
FHS linux目录配置标准。规范每个特定的目录下应该要放置什么样子的数据。
/ :root根目录,与开机系统有关。
/usr :unix software resource 与软件安装执行有关
/var :与系统运行过程有关
有5个必须与根目录不能分开:
/etc 配置文件
/bin 重要执行文件,单用户维护模式下还能被执行的指令
/dev 设备文件
/lib 执行文件所需的函数库与内核所需的模块
/sbin 重要的系统执行文件 如开机,修复,还原系统所需的指令
根目录的上一层 . .和根目录自己 . 是同一个目录
mkdir 创建一个目录 :-m 添加权限,-p递归创建目录
pwd :print working directory :打印当前目录
rmdir :删除目录,只能删除空的
cp :复制
rm : 删除
mv:移动
打开文件的相关指令:cat,tac,nl.more.less.head,tail.od.
man就是调用less 来显示说明文件的内容的。
touch指令用于:创建一个空个的文件 或者 将某个文件日期修改为目前日期(mtime和atime)
umask 文件默认权限,四个数字,第一个是特殊权限,后三个是普通权限,一般看后三个。
这些数字分别表示要去掉的权限。如2就是去掉w,这里涉及文件和目录的默认权限。
文件的默认权限为666 -rw-rw-rw umask为022则表示 现在的权限应该为 -rw-r--r--
目录的默认权限为777 同理。
要设置umask的话直接设置输入 umask 022
文件隐藏属性:chattr +a表示只能新增数据,+i表示完全不能改动文件。lsattr显示隐藏属性。
SUID,SGID,SBIT略繁琐 以后再看。
查看文件类型 : file指令
查找执行文件 : which which是通过PATH目录下的路径去查找相应的可执行文件名。
查找文件名: whereis 或者 locate 都是通过查找系统中的数据库文件 速度较快
其中locate寻找的是/var/lib/mlocate 所以查找的内容可能和实际硬盘有误差,可以使用updatedb来更新数据库文件。
find指令则是直接查找硬盘,而且可以使用更复杂的参数,还能嵌套使用额外的命令。
super block 记录文件系统的整体信息。
inode 记录文件的属性,一个文件占用一个inode
block 实际记录文件的地方,一个文件可占用多个block
把super block当成一个登记本,记录这户人家的整体信息,有多少间房,有多少人,房间使用量还有其他相关信息。
把inode当成类似于户口的每一页,记录每个人的属性,所住的房间号
把block当成房间号,即人实际住的地方,去找人的地方。一个人可能有两个block及以上。
把文件当成人。
所以查找文件(人)时,就去找inode(户口),通过里面inode的block(房间)号,去找到文件。
经常使用的磁盘碎片管理就是因为文件写入的多个block太过离散了,需要把他们重新汇合在一起,这样读取比较容易。
文件名并不是记录在文件的inode中,而是记录在目录的block中,因此才有了文件的增删与该文件所在目录的w权限有关。
将文件系统与目录树结合的操作我们称为挂载。文件系统要能够链接到目录树才能被我们使用。挂载点一定是目录,该目录为进入该文件系统的入口。
linux里,没有盘符这个概念,我们用目录的形式进行管理,把每一个分区和某一个目录对应.
那么,我们对这个目录的操作就是对这个分区的操作,这样就实现了硬件管理手段和软件目录管理手段的统一,这个把分区和目录对应的过程就叫做挂载,也就是-mount.
挂载可以由用户随时中断和改变
. 详见linux挂载。
ext3相较于ext2最大的区别在于日志文件系统。
df : 列出文件系统的整体磁盘使用量。
du:评估文件系统的磁盘使用量。(常用于评估目录所占容量。文件数目)
在linux下面的连接文件有两种,一种是类似于win的快捷方式功能的文件,这种称为软连接;另一种是通过文件系统的inode连接来产生新的文件名,而不是产生新文件,这中称为硬连接。
硬连接:每个文件会占用一个inode,所以要读取文件必须去访问inode,这个过程是
通过目录下记录的文件名来指向正确的inode号码。也就是说,其实文件名只与目录有关,而文件的内容呢,只与inode有关。所以硬连接就是
在某个目录下新建了一个文件名连接到了某个已经存在的inode号码。在用ls时,第二项的数目就是有多少文件名连接到该inode的意思。
硬连接只是在目录下的block下写入一个文件名关联数据,不会增加inode也不会耗用block。而软连接要创建一个新的文件,自然就要耗用inode和block,其实整个文件的大小就和连接文件的文件名有关。
一个空目录里面有什么?存在. 和.. 两个目录,所以当我们创建一个新的目录时,基本上会有/test /test/. /test/.. (/test 和 /test/.是一样的)三个目录存在。所以新的目录连接数为2,上层的目录连接数增加1.