第五章Linux的文件与目录配置

五–Linux的文件与目录配置

Linux将文件操作者身份分为owner,group,others,且三种身份各有read/write/execute等权限。

5.1 使用者与群组

文件拥有者,创建文件的具体用户。

群组概念,群组内的成员共有群组文件。

其他人概念,

Linux系统中,所有系统账号与一般身份使用者,root的相关信息都在/etc/passwd 文件内。个人的密码记录在/etc/shadow文件下。Linux所有的组名都记录在/etc/group内。

5.2 Linux文件权限概念

文件权限机制是入门Linux很重要的概念,否则一不小心就Permission deny了。

5.2.1 Linux文件属性

ls指令,查看文件详情。例如:

ls -al //列出所有文件详细的权限与属性
-rw-r--r--. 1 root root 1864 May 4 18:01 initial-setup-ks.cfg
//文件类型权限 连接数 文件拥有者 文件所属群组 文件大小 文件最后修改时间 文件名

** 第一栏代表文件的类型与权限**
此处有10个字符表示:
第一个字符代表文件是[ 目录,文件或链接文件 ]:
@TODO

接下来的字符中,三个为一组,且均为[ rwx- ] 四个参数的组合。r代表可读(read),w代表(write),x代表(execute),-代表(无权限)。第一组为[ 文件拥有者可具备的权限 ];第二组为[ 加入此群组之账号的权限 ];第三组为[ 非本人且没有加入本群组之其他账号的权限 ]

** 第二栏代表有多少档名连接到此节点**
每个文件都会讲他的权限与属性记录到文件系统的i-node中,目录树却是使用文件名来记录,每个档名就会连接到一个i-node。这个属性记录的就是有多少不同的档名连接到相同的i-node号码。

第三栏表示文件(或目录)的拥有者账号

第四栏表示这个文件的所属群组

第五栏表示文件的容量大小,默认单位是bytes

** 第六栏表示文件的建档日期或者最近的修改日期 **
修改时间距离现在较远的显示:月,日,年;较近的显示:月,日,分钟。如果需要显示完整时间,用:[ ls -l --full-time ]

第七栏表示文件名。如果文件名多一个[.],代表这个文件为隐藏文件。

5.2.2 如何改变文件属性与权限

** 改变所属群组chgrp**
改变一个文件的群组用:chgrp,即change group。要被改变的组名必须在/etc/group文件内存在。

chgrp [-R] [群组名] [dirname/filename]

** 改变文件拥有者chown**
改变一个文件的拥有者用:chown,即change owner。要被变更的用户必须是已经存在系统中的账号,在/etc/passwd文件中有记录的用户。chown还可以顺便直接修改群组的名称。

chown [-R] [账号名称] [文件或目录] 
chown [-R] [账号名称:组名] [文件或目录] //修改文件拥有者,顺便修改所属群组
chown [.组名] [文件或目录]  //修改文件所属群组

修改文件拥有者,最常见的场景是:复制一个文件给某人:

cp [来源文件] [目标文件] //复制文件
chown  [账号名称] [目标文件] //修改文件拥有者

** 改变权限chmod**
文件权限的改变使用chmod,权限的设定方法有两种:数字或符合。

数字类型改变文件权限。可以使用数字代表rwx。对应关系如下,r: 4; w:2;x:1。各种身份各自的权限分数是累加的,每种身份用一个数字表示。例如:[-rwxrwx—]可以用[770]表示。

chmod [-R] [xyz] [文件]

常用权限数字对应关系:

  • 754 [rwxr-xr–]
  • 664 [rw-rw-r–] vim 编辑一个 shell 的文字批处理文件的权限
  • 755 [rwxr-xr-x] vim 编辑一个 shell,并且不让其他人修改
  • 740 [rwxr-----] 不希望他人看到的文件

符号类型改变文件权限。其实修改权限总共就9个权限3种身份。我们可以用u,g,o代表三种身份,a则代表all全部。

chmod [u/g/o/a] [+/-/=] [rwx] [文件]  //命令规则
chmod u=rwx,go=rx test.txt // go中间没有空格
chmod a+w test.txt // 文件相关每个人都有写入权限
chmod a-x test.txt // 取消所有人的执行权限

5.2.3 目录与文件之权限意义

** 权限对文件的重要性**

  • r:可读取此一文件的实际内容,如读取文本文件的文字内容;
  • w:可以编辑,新增或者修改文件的内容;
  • x:该文件具有可以被系统执行的权限。

与Windows通过扩展名判断文件是否能执行不同,Linux是通过x权限来决定文件是否能被执行。具有w权限时,你可以有写入/编辑/新增/修改文件的内容的权限,但并不具备有删除该文件本身的权限。

** 权限对目录的重要性**
目录主要的内容在记录文件名列表,文件名与目录有强烈的关连。针对目录时,rwx是什么意思呢?

r(read contents in directory):具有读取目录结构列表的权限。当具有读目录的权限时,表示你可以查询该目录下的文件名数据。

w(modify contents of directory):此权限代表你具有异动该目录结构列表的权限。具体如下:

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

x(access directory):目录的x代表用户能否进入该目录成为工作目录的用途。工作目录(work directory)就是你目前所在的目录。

通过上两节的描述。文件权限主要针对文件的内容;目录的主要针对目录内的文件名列表。工作目录对于指令的执行非常重要,如果你不具有目录的x权限,你就无法切换到该目录下。即使你有r或w权限,也无法执行该目录下的任何指令。

** 用户操作功能与权限 **

5.2.4Linux文件种类与扩展名

** 文件种类 **

正规文件(regular file):一般我们进行存取的类型的文件。用ls -al指令显示详细属性时,第一个字符为[-]。依据文件的内容又可以分为:

  • 纯文本档(ASCII):我们能直接读到的数据,可以使用 cat~/.bashrc 就能看到该文件的内容。(cat 是将一个文件内容读出来的指令)
  • 二进制文件(binary):Linux 中的可执行文件(scripts,文字型批处理文件不算)就是这种啦。上面的 cat 指令就是一个 binary file。
  • 数据格式文件(date):例如,登录时,将登录的数据记录在 / var/log/wtmp 文件内,此文件就是一个 data file,可以通过 last 指令读出来。

目录(directory):文件类型种类为d。

连结档(link):类似Windows下的快捷方式。文件类型种类为l。

设备与装置文件(device):与系统周边及存储相关的文件,通常都集中在/dev目录下。具体又分两种。

  • 区块(block)设备档:一些存储数据,以提供系统随机存取的接口设备。例如,硬盘,软盘就是此类。具体可以查看 / dev/sda,文件类型种类为 b。
  • 字符(character)设备文件:一些串行端口的接口设备。这些设备的特点就是一次性读取,不能截断输出。文件类型种类为 c。

资料接口文件(sockets):又称数据接口文件,常用在网络上数据承接。文件类型种类为s,常在/run或/tmp有此类文件。

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

** Linux文件扩展名 **
虽然Linux是通过文件权限来控制文件是否可执行的,但还是要以适当的扩展名命名文件的。

  • *.sh:脚本或批处理文件(scripts),因为批处理文件使用 shell 写成,所以为. sh
  • Z,.tar, .tar.gz,.zip,*.tgz:经过打包的压缩文件。不同的压缩软件,取不同的扩展名;
  • .html,.php:网页相关文件。

常见的,从网上下载一个文件后,无法执行。很有可能是权限问题。

** Linux文件长度限制 **
Linux,传统的Ext2/Ext3/Ext4文件系统,对文件名长限制为:单一文件或目录的最大文件名为255bytes,1个中文占2bytes,大概在128个文字内。

** Linux文件名的限制 **
Linux文件名应避免包含:* ? > < ; & ! [ ] | \ ’ " ` () {}。由于[.]代表隐藏文件,所以也要慎用;另外,指令中常常用-option类指令,所以文件名应尽量避免-或+命名。

5.3Linux目录配置

每种Linux distribution配置文件,执行文件大同小异,是因为他们遵循了一套标准。

5.3.1Linux目录配置的依据–FHS

未来避免不同Linux distribution间差异,就有了Filesystem Hierarchy Standard(FHS)标准的提出。

@TODO。FHS提出的目的是:

FHS是根据经验一直持续的改版的,依据使用频繁与否及是否允许使用者改动,将目录定义为四种交互作用的形态,用表格说如下:

可分享的(shareable) 不可分享的(unshareable)
不可变的(static) /usr(软件放置处)
不可变的(static) /opt(第三方协力软件)
可变动的(variable) /var/mail(邮件信箱)
可变动的(variable) /var/spool/news(新闻组)
发布了593 篇原创文章 · 获赞 57 · 访问量 33万+

猜你喜欢

转载自blog.csdn.net/ThePromonkeyOf_HeLuo/article/details/92591719