1、Linux文件属性
用root用户登录Linux后,执行 ls -al 命令查看文件。显示如下:
文件属性示意图如下:
第一列代表这个文件的类型和权限
第一个字符代表这个文件是:目录、文件或链接文件等。
- 若是【d】则是目录;
- 若是【-】则是文件;
- 若是【l】则表示为连接文件;
- 若是【b】则表示设备文件里的可供存储的接口设备;
- 若是【c】则表示设备文件里的串行端口设备,如鼠标、键盘等。
后面的9个字符以3个位一组,均为rwx的组合。其中r代表可读,w代表可写,x代表可执行。注意3个权限的位置不会改变,如果没有权限,就会出现减号(-)。
- 第一组 为 “文件所有者的权限”
- 第二组 为 “用户组的权限”
- 第三组 为 “其他非本用户组的权限”
第二列表示有多少文件名连接到此节点
每个文件都会将它的权限和属性记录到文件系统的i-node中,不过我们使用的目录树却是使用文件名来记录,因此每个文件名就会连接到一个i-node。这个属性记录了有多少不同的文件名连接到相同的一个i-node号码。
第三列表示这个文件的“所有者账号”
第四列表示这个文件的所属的用户组
第五列为这个文件的大小,默认单位是B
第六列为这个文件的创建文件日期或者是最近的修改日期。
第7列为该文件的文件名
如果文件名之前多了一个 “.” ,则说明这个文件为“隐藏文件”,隐藏文件的list列表时,加-a参数可以显示。ls -al。
2、如何改变文件的权限和属性
- chgrp : 改变文件所属用户组
- chown : 改变文件所有者
- chmod: 改变文件的权限
2.1、改变文件所属用户组
chgrp 【-R】 dirname/filename ...
-R : 进行递归的持续更改,也连同子目录下的所有文件、目录都更新成为这个用户组之意。常常用在更改某一目录内所有文件的情况。
范例:
chgrp hy install.log : 将install.log文件的用户组改为hy用户组。注意hy用户组必须要在/etc/group 文件内存在才可以。
2.2、改变文件的所有者
chown [-R] 账号名称 文件或目录
chown [-R] 账号名称:组名 文件或目录
-R:也是递归子目录。
范例:
chown bin install.log
chown root:root install.log
改变文件所有者和用户组的这两个命令的应用场景:复制文件,由于复制行为会复制执行者的属性和权限,因此复制后需要改变文件所属用户、用户组等。
2.3、改变文件的权限
文件权限有两种设置方法:数字类型改变权限和符号改变权限。
首先说明各个权限对应的数字:
- r: 4
- w: 2
- x:1
- 每种身份各自的三个权限分数是需要累加的。
- 例如:权限为(-rwxrwx---)分数分表是:
- owner = rwx = 4+ 2 + 1 = 7
- group = rwx = 4+ 2+ 1 = 7
- others = --- = 0+0 +0 = 0
- 所以在设置权限时,该文件的权限数字就是770.
1)、数字类型改变文件权限方式
命令: chmod [-R] xyz 文件或目录
xyz : 代表权限数字。如770.
-R : 进行递归的持续更改。
范例:
chmod 777 .bashrc : 将文件.bashrc这个文件的所有权限设置都启用。
2)、符号类型改变文件权限方式
使用u、g、o三个字母代表user、group、others 3中身份。此外a代表all,即所有身份。
范例:
chmod u=rwx,go=rx .bashrc
也可以增加或去除某种权限。
chmod a+w .bashrc
chmod a-x .bashrc
3、目录和文件权限的意义
3.1、权限对于文件的重要性
- r(read):可读取此文件的实际内容
- w(write):可以编辑、新增或修改文件的内容(但是不含删除该文件)
- x(execute):该文件具有可以被系统执行的权限。
3.2、文件对目录的重要性
目录的主要内容是记录文件名列表,文件名与目录有强烈的关联。
r(read):表示具有读取目录结构列表的权限,当具有读取一个目录的权限时,表示你可以查询该目录下的文件名数据,可以用ls命令将目录内容显示出来。
w(write):对目录来说是很强大的。表示你具有更改该目录结构的权限。
- 新建新的文件和目录
- 删除已存在的文件与目录
- 将已存在的文件或目录重新命名
- 转移该目录内的文件、目录位置
- 总之,目录的w权限与该目录下面的文件名变动有关就对了。
x(execute):目录的x权限代表用户是否能进入该目录成为工作目录的用途。
因此,要开放目录给任何人浏览时,应该至少也要给与r及x权限,但是w权限不可以随便给。
4、Linux文件的种类及扩展名
4.1、文件的种类
- 普通文件:纯文本文件、二进制文件、数据格式文件
- 目录
- 连接文件
- 设备与设备文件
- 套接字:数据接口文件,通常被用在网络上的数据连接。第一个属性为s,通常在/var/run 这个目录中可以看到这种文件类型。
- 管道(FIFO,pipe):它的主要目的在解决多个程序同时访问一个文件所造成的错误问题。第一个属性为p
4.2、Linux文件扩展名
基本上linux的文件是没有所谓的“扩展名”的。一个linux文件能不能被执行,与它的第一列的10个属性有关,与文件名根本没有一点关系。只要你的权限中有x的话,即代表可以被执行。但是可以被执行和可以执行成功是不一样的。能不能执行成功,需要看文件的内容。
虽然如此,我们还是希望可以通过扩展名来了解该文件是什么东西,还是会以适当的扩展名来表示该文件是什么种类的。
以下是几种常用的扩展名:
- *.sh:脚本或批处理文件。
- *Z、*.tar、*.tar.gz、*.zip、*.tgz:经过打包的压缩文件。
- *.html、*.php:网页相关文件。
- 注意:从网络上传送到linux系统中,文件的属性和权限确实会被改变。
linux系统下文件长度限制
使用默认的Ext2/Ext3文件系统时,针对文件的文件名长度的限制为:
单一文件或目录的最大容许文件名为255个字符;
包含完整路径名称及目录(/)的完整文件名为4096个字符
5、Linux目录配置标准:FHS
因为利用linux来开发产品的团队或公司、个人实在太多了。如果每个人都用自己的想法来配置文件放置的目录,那么将可能造成很多管理上的困扰。后来就有了所谓的Filesystem Hierarchy Standard (FHS) 标准了。
该标准指出,其目的主要是希望让用户可以了解到已安装的软件通常放置于哪个目录下。FHS的重点在于规范每个特定的目录下应该要放置什么样子的数据而已。
FHS依据文件系统使用的频繁与否和是否允许用户随意改动,而将目录定义为四种交互作用的形态。
FHS针对目录树架构仅定义出三层目录下面应该放置什么样的数据而已,分别是下面这三个目录:
- / (root,根目录):与开机系统有关
- /usr(UNIX software resource):与软件安装和执行有关
- /var(variable):与系统运作过程有关。