详解Linux系统中的文件名和文件种类以及文件权限linux文件类型和权限




详解Linux系统中的文件名和文件种类以及文件权限linux文件类型和权限

2022-07-20 20:25:22 网络知识 官方管理员

Linux文件种类与副文件名

一直强调一个概念,那就是:任何装置在Linux底下都是文件,不仅如此,连资料沟通的介面也有专属的文件在负责~所以,你会瞭解到,Linux的文件种类真的很多~除了前面提到的一般文件(-)与目录文件(d)之外,还有哪些种类的文件呢?

*文件种类:

我们在刚刚提到使用‘ls-l’观察到第一栏那十个字元中,第一个字元为文件的类型。除了常见的一般文件(-)与目录文件(d)之外,还有哪些种类的文件类型呢?

*正规文件(regularfile):
就是一般我们在进行存取的类型的文件,在由ls-al所显示出来的属性方面,第一个字元为[-],例如[-rwxrwxrwx]。另外,依照文件的内容,又大略可以分为:

o纯文字文件(ASCII):这是Linux系统中最多的一种文件类型啰,称为纯文字文件是因为内容为我们人类可以直接读到的资料,例如数字、字母等等。几乎只要我们可以用来做为设定的文件都属于这一种文件类型。举例来说,你可以下达‘cat~/.bashrc’就可以看到该文件的内容。(cat是将一个文件内容读出来的指令)

o二进位文件(binary):还记得我们在‘第零章、计算机概论’里面的软体程式的运作中提过,我们的系统其实仅认识且可以执行二进位文件(binaryfile)吧?没错~你的Linux当中的可执行文件(scripts,文字型批次文件不算)就是这种格式的啦~举例来说,刚刚下达的指令cat就是一个binaryfile。

o资料格式文件(data):有些程式在运作的过程当中会读取某些特定格式的文件,那些特定格式的文件可以被称为资料文件(datafile)。举例来说,我们的Linux在使用者登入时,都会将登录的资料记录在/var/log/wtmp那个文件内,该文件是一个datafile,他能够透过last这个指令读出来!但是使用cat时,会读出乱码~因为他是属于一种特殊格式的文件。瞭乎?

*目录(directory):
就是目录啰~第一个属性为[d],例如[drwxrwxrwx]。

*连结文件(link):
就是类似Windows系统底下的捷径啦!第一个属性为[l](英文L的小写),例如[lrwxrwxrwx];

*设备与装置文件(device):
与系统周边及储存等相关的一些文件,通常都集中在/dev这个目录之下!通常又分为两种:

o区块(block)设备文件:就是一些储存资料,以提供系统随机存取的周边设备,举例来说,硬碟与软碟等就是啦!你可以随机的在硬碟的不同区块读写,这种装置就是区块装置啰!你可以自行查一下/dev/sda看看,会发现第一个属性为[b]喔!

o字元(character)设备文件:亦即是一些序列埠的周边设备,例如键盘、滑鼠等等!这些设备的特色就是‘一次性读取’的,不能够截断输出。举例来说,你不可能让滑鼠‘跳到’另一个画面,而是‘滑动’到另一个地方啊!第一个属性为[c]。

*资料接口文件(sockets):
既然被称为资料接口文件,想当然尔,这种类型的文件通常被用在网路上的资料承接了。我们可以启动一个程式来监听用户端的要求,而用户端就可以透过这个socket来进行资料的沟通了。第一个属性为[s],最常在/var/run这个目录中看到这种文件类型了。

*资料输送文件(FIFO,pipe):
FIFO也是一种特殊的文件类型,他主要的目的在解决多个程序同时存取一个文件所造成的错误问题。FIFO是first-in-first-out的缩写。第一个属性为[p]。

除了设备文件是我们系统中很重要的文件,最好不要随意修改之外(通常他也不会让你修改的啦!),另一个比较有趣的文件就是连结文件。如果你常常将应用程式捉到桌面来的话,你就应该知道在Windows底下有所谓的‘捷径’。同样的,你可以将linux下的连结文件简单的视为一个文件或目录的捷径。至于socket与FIFO文件比较难理解,因为这两个咚咚与程序(process)比较有关系,这个等到未来你瞭解process之后,再回来查阅吧!此外,你也可以透过manfifo及mansocket来查阅系统上的说明!

*Linux文件副文件名:

基本上,Linux的文件是没有所谓的‘副文件名’的,我们刚刚就谈过,一个Linux文件能不能被执行,与他的第一栏的十个属性有关,与文件名根本一点关系也没有。这个观念跟Windows的情况不相同喔!在Windows底下,能被执行的文件副文件名通常是.com.exe.bat等等,而在Linux底下,只要你的权限当中具有x的话,例如[-rwx-r-xr-x]即代表这个文件可以被执行喔!

不过,可以被执行跟可以执行成功是不一样的~举例来说,在root家目录下的install.log是一个纯文字文件,如果经由修改权限成为-rwxrwxrwx后,这个文件能够真的执行成功吗?当然不行~因为他的内容根本就没有可以执行的资料。所以说,这个x代表这个文件具有可执行的能力,但是能不能执行成功,当然就得要看该文件的内容啰~

虽然如此,不过我们仍然希望可以藉由副文件名来瞭解该文件是什么东西,所以,通常我们还是会以适当的副文件名来表示该文件是什么种类的。底下有数种常用的副文件名:

**.sh:批次文件(scripts),因为批次文件为使用shell写成的,所以副文件名就编成.sh啰;

**Z,*.tar,*.tar.gz,*.zip,*.tgz:经过打包的压缩文件。这是因为压缩软体分别为gunzip,tar等等的,由于不同的压缩软体,而取其相关的副文件名啰!

**.html,*.php:网页相关文件,分别代表HTML语法与PHP语法的网页文件啰!.html的文件可使用网页浏览器来直接开启,至于.php的文件,则可以透过client端的浏览器来server端浏览,以得到运算后的网页结果呢!

基本上,Linux系统上的文件名真的只是让你瞭解该文件可能的用途而已,真正的执行与否仍然需要权限的规范才行!例如虽然有一个文件为可执行文件,如常见的/bin/ls这个显示文件属性的指令,不过,如果这个文件的权限被修改成无法执行时,那么ls就变成不能执行啰!

上述的这种问题最常发生在文件传送的过程中。例如你在网路上下载一个可执行文件,但是偏偏在你的Linux系统中就是无法执行!呵呵!那么就是可能文件的属性被改变了!不要怀疑,从网路上传送到你的Linux系统中,文件的属性与权限确实是会被改变的喔!

*Linux文件长度限制:

在Linux底下,使用预设的Ext2/Ext3文件系统时,针对文件的文件名长度限制为:

*单一文件或目录的最大容许文件名为255个字元;
*包含完整路径名称及目录(/)之完整文件名为4096个字元。

是相当长的文件名喔!我们希望Linux的文件名称可以一看就知道该文件在干嘛的,所以文件名通常是很长很长!而用惯了Windows的人可能会受不了,因为文件名称通常真的都很长,对于用惯Windows而导致打字速度不快的朋友来说,嗯!真的是很困扰.....不过,只得劝你好好的加强打字的训练啰!

*Linux文件名称的限制:

由于Linux在文字介面下的一些指令操作关系,一般来说,你在设定Linux底下的文件名称时,最好可以避免一些特殊字元比较好!例如底下这些:

*?><;&![]|\'"`(){}

因为这些符号在文字介面下,是有特殊意义的!另外,文件名称的开头为小数点‘.’时,代表这个文件为‘隐藏文件’喔!同时,由于指令下达当中,常常会使用到-option之类的选项,所以你最好也避免将文件文件名的开头以-或+来命名啊!

目录与文件权限
现在我们知道了Linux系统内文件的三种身份(拥有者、群组与其他人),知道每种身份都有三种权限(rwx),已知道能够使用chown,chgrp,chmod去修改这些权限与属性,当然,利用ls-l去观察文件也没问题。前两小节也谈到了这些文件权限对于资料安全的重要性。那么,这些文件权限对于一般文件与目录文件有何不同呢?有大大的不同啊!底下就让鸟哥来说清楚,讲明白!

*权限对文件的重要性

文件是实际含有资料的地方,包括一般文字文件、资料库内容文件、二进位可执行文件(binaryprogram)等等。因此,权限对于文件来说,他的意义是这样的:

*r(read):可读取此一文件的实际内容,如读取文字文件的文字内容等;
*w(write):可以编辑、新增或者是修改该文件的内容(但不含删除该文件);
*x(eXecute):该文件具有可以被系统执行的权限。

那个可读(r)代表读取文件内容是还好瞭解,那么可执行(x)呢?这里你就必须要小心啦!因为在Windows底下一个文件是否具有执行的能力是藉由‘副文件名’来判断的,例如:.exe,.bat,.com等等,但是在Linux底下,我们的文件是否能被执行,则是藉由是否具有‘x’这个权限来决定的!跟文件名是没有绝对的关系的!

至于最后一个w这个权限呢?当你对一个文件具有w权限时,你可以具有写入/编辑/新增/修改文件的内容的权限,但并不具备有删除该文件本身的权限!对于文件的rwx来说,主要都是针对‘文件的内容’而言,与文件文件名的存在与否没有关系喔!因为文件记录的是实际的资料嘛!

*权限对目录的重要性

文件是存放实际资料的所在,那么目录主要是储存啥玩意啊?目录主要的内容在记录文件名清单,文件名与目录有强烈的关连啦!所以如果是针对目录时,那个r,w,x对目录是什么意义呢?

*r(readcontentsindirectory):

表示具有读取目录结构清单的权限,所以当你具有读取(r)一个目录的权限时,表示你可以查询该目录下的文件名资料。所以你就可以利用ls这个指令将该目录的内容列表显示出来!

*w(modifycontentsofdirectory):

这个可写入的权限对目录来说,是很了不起的!因为他表示你具有移动该目录结构清单的权限,也就是底下这些权限:

o建立新的文件与目录;
o删除已经存在的文件与目录(不论该文件的权限为何!)
o将已存在的文件或目录进行更名;
o搬移该目录内的文件、目录位置。

总之,目录的w权限就与该目录底下的文件名移动有关就对了啦!

*x(accessdirectory):

咦!目录的执行权限有啥用途啊?目录只是记录文件名而已,总不能拿来执行吧?没错!目录不可以被执行,目录的x代表的是使用者能否进入该目录成为工作目录的用途!所谓的工作目录(workdirectory)就是你目前所在的目录啦!举例来说,当你登入Linux时,你所在的家目录就是你当下的工作目录。而变换目录的指令是‘cd’(changedirectory)啰!

目录的x权限决定用户是否可以进入该目录。

大致的目录权限概念是这样,底下我们来看几个范例,让你瞭解一下啥是目录的权限啰!

例题:
有个目录的权限如下所示:

复制代码

发表评论:

最近发表
网站分类
标签列表