鸟哥的Linux私房菜 基础学习篇读书笔记(6):Linux的文件权限与目录配置

Linux操作系统作为一个多任务,多用户的操作系统,文件的权限管理是十分重要的。

在Linux操作系统中,每个文件都有三种身份的个别权限,分别为user,group以及others,即文件所有者,文件所属用户组,以及其它人。不同的身份对文件有不同的权限。另外,之前讲过root账户在Linux中意味着无尽的权限,所以root账户可以去到任何地方。在Linux操作系统中,用户组是个很重要的概念,它使得文件在一群用户之间共享成为可能。Linux中系统账号以及一般身份账号,都记录在/etc/passwd这个文件内,个人密码则记录在/etc/shadow文件内,所有组名则记录在/etc/group。

在Linux操作系统中,如果需要查看文件的属性,只要通过 "ls -al " 命令即可查看当前路径下所有子目录以及文件的属性(ls是list的意思,重点在显示文件名和和相关属性),通过该命令,会得到如下形式的结果。

drwxr-x---  4 root  root  4096 Sep 8 14:06 .

-rwxr-xr-x  4 root  root  4096 Sep 8 14:21 test_file

......(省略)

结果的第一列代表文件的类型和权限。例如"drwxr-x---"中的第一个字符代表了这个文件的类型,[d]代表为目录,[-]代表为文件......,所以“drwxr-x---”意味着 “.”是个目录,当然我们已经知道了“.”代表当前目录的意思。后面的九个字符“rwxr-x---”代表了该文件的权限。这九个字符每三个为一组,前三个字符代表了文件所有者对该文件的权限,中间三个字符代表了文件所属用户组对该文件的权限,后三个字符代表了其它人对该文件的权限。而每三个字符中“r”意味着读权限,“w”意味着写权限,“x”意味着可执行权限,这三个权限的位置不会变,当无某个权限时,该位置就会出现“-”符号。因此“rwxr-x---”意味着:文件所有者对该文件具有读,写,可执行权限,用户组成员对该文件具有读,可执行权限,没有写权限,而其他人对该文件没有任何权限。

结果的第二列代表有多少文件名连接到此节点(i-node),这方面的知识会在之后的学习中进一步掌握,第三列代表文件所有者的账号,第四列代表文件所属用户组,第五列为文件的容量大小,默认大小单位为B,第六列为这个文件的创建日期或最近修改的日期。 第七列即为文件名,如果文件名之前有个“.”,代表这个文件为隐藏文件。这七个字段的意义是非常重要的,务必了解每个字段的意义,这也是Linux文件权限的重点之一。

我们可以通过chgrp 命令来修改文件的所属用户组,chgrp命令的使用形式为 chgrp  group dirname/filename;可以通过chown命令来修改文件的所有者,chown命令的使用形式为 chown user dirname/filename;这其中还有个小技巧,可以直接通过 chown user:group file的形式来同时修改文件的所有者和所属用户组,如果只需修改用户组的话,冒号前面可以省略,例如 chown  :group file, 当然冒号也可以替换成“.”,但是并不推荐,因为在设置账号时有朋友会在账号中加入 “.”,所以容易造成系统误判,因此推荐使用冒号隔开。

修改文件权限可以通过 chmod 命令来进行,chmod 修改文件权限的形式主要有两种:第一种是通过权限数字来修改权限,r 权限的数值为4,w权限的数值为2,x权限的数值为1 ,每种身份的各自三个权限是需要累加的,因此“rwx”权限的数值为7, “r-x”权限的数值为5。所以通过命令“chmod 774 test_file”命令修改后test_file的文件权限即为“rwxrwxr--”。第二种是通过直接设置三个身份的权限来修改权限,u 代表文件所有者,g 代表所属用户组,o代表其它人,此外a代表all,即全部身份。因此通过命令“chmod u=rwx,go=r test_file”命令修改后test_file的文件权限即变为“rwxr--r--”。采用这种方式修改权限时,除了用“=”来修改权限,还可以通过“+”,“-”来增加或删除某种权限。

在Linux中,文件和目录权限的意义是不同的,对于文件而言,读权限意味着可以读取文件的实际内容,写权限意味着可以编辑文件的内容,而可执行权限意味着可以被系统执行的权限,这点和Windows操作系统有很大不同,在Windows中,可执行文件是通过文件的后缀名来体现的,只有“.exe”,“.bat”等后缀名的文件才能被执行,而Linux系统中,文件能否被执行是由是否具有“可执行权限”来决定的,而与文件名没有关系,当然在Linux中还是可以通过文件的后缀名来了解该文件的内容,例如“.tar”,“.tar.gz”代表这是压缩文件。

目录主要是记录文件名的列表。因此对于目录而言,读权限表示具有读取目录结构的权限,即可以查询该目录下文件名数据,写权限表示具有修改目录结构的权限,这意味着:可以新建文件或子目录,删除该目录下已存在的文件或子目录,对该目录下的文件名或子目录进行重命名,转移该目录内的文件或目录的位置。目录的可执行权限意味着用户能否进入该目录而使该目录成为工作目录,工作目录即当前所在的目录。

我们知道,目前有很多Linux distributions,但每个Linux发行版本的目录配置都大同小异,原因就是Linux操作系统目录配置有一套配置标准:FHS(Filesystem Hierachy Standard),FHS标准的主要目的是希望用户可以了解到已安装软件通常于放置于哪个目录下,也就是说FHS标准重点在于规范每个特定的目录下应该放置什么样子的数据。FHS针对目录树架构仅定义出三层目录下面应该放置什么样的数据,它们分别是:/ (根目录),与开机系统有关;/usr (UNIX software resource),与软件安装执行相关;/var (variable),与系统运作过程有关。

根目录是整个系统中最重要的目录,不仅所有的目录都是由根目录衍生而出,同时根目录还与开机,还原,系统修复相关。正是因为根目录如此重要,FHS标准建议:根目录所在的分区应该越小越好,且应用程序所安装的软件最好不要和根目录放置在同一个分区内。同时FHS定义出根目录下应该有下面这些子目录存在才好:/bin,/boot,/dev,/etc,/home,/lib,/media ,/mnt,/opt/root, /sbin,/src,/tmp;这是FHS针对根目录所定义的标准,同时/lost+found,/proc,/sys 也是Linux操作系统中几个非常重要的目录。还有一点需要说明,在开机过程中,只有根目录才会被挂载,其它分区是开机完成之后才能进行持续挂载,因此,与开机过程相关的目录与根目录就不能放到不同的分区,与开机过程相关的五个目录为:/etc,/bin ,/dev, /lib,/sbin ,这五个目录不可与根目录放在不同的分区。

在Linux中,所有文件与目录都是从根目录开始的,根目录是所有目录与文件的源头,这种目录配置方式称为“目录树”,目录树的起始点为根目录,且每一个目录不仅可以使用本地端的文件系统,还可以使用网络上的文件系统,每一个文件在目录树中的文件名(包含完整路径)都是独一无二的。另外单一文件名或目录名最大容许255个字符,包含完整路径名称的文件名不能超过4096个字符。

文件名的写法可以使用绝对路径,也可以使用相对路径,绝对路径是指从根目录(“/”)开始写起的文件名或目录名称,而相对路径是相对于目前路径的文件名写法,要区分一个路径是相对路径还是绝对路径是很简单的,只要路径名是从“/”开始写起的,那就是绝对路径,反之则是相对路径。特别注意两个特殊的目录:“.”代表当前目录,“..”代表上一层目录。

最后如果你想知道当前distribution 使用的哪个Linux标准,可以使用 lsb_release 命令可以查询LSB(Linux Standard Distribution)的版本信息,可以使用uname 命令查询Linux 的内核信息。

本章Linux 命令总结:

ls,chown,chgrp,chmod,lsb_release,uname。

本章Linux实践体会:

1,一般用户身份在使用chown,chgrp等命令时,一般不能随意更改文件的所有者或所属用户组。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值