Linux----文件权限与目录配置

1、使用者与群组

    1.1 文件拥有者

        在文件上添加权限,使其只有文件拥有者有权限。

    1.2 群组概念

        群组最用的功能就是团队开发资源,每个账号可以有多个群组支持。群组里面的用户可以访问共有的资源。但是不能访问彼此的私有资源。以家庭类比,一个家是一个群组,有三个孩子是群组成员,他们都可以在客厅任意玩,但不能在彼此房间里胡乱看别人私有的东西。

    1.3 其他人概念

        其他用户在不被允许条件下是访问不了别的用户的内容的,root用户是可以访问系统中任何文件。在linux 中系统账号与一般身份使用者,root相关信息都是记录在/etc/passwd这个文件中,个人密码记录在/etc/shadow这个文件下,所有群组名称记录在/etc/group这个文件下。

        三种对应User、Group、Other。

2、linux文件权限概念

    文件权限如何针对所有者和群组设置,权限的设置是很重要的。

    2.1 Linux文件属性

        ls 命令,查看文件,ls就是list的意思,显示文件的文件名和相关属性。可以使用 su命令切换身份为root,ls -al表示列出所有文件详细的权限和属性。如下图

           

        ##第一栏代表这个文件的类型和权限

                     

        第一个字符代表这个文件是“目录、文件、链接文件”等

            *当为【d】则是目录

            *当为【-】则是文件

            *当为【l】则是链接文件

            *当为【b】则表示为设备文件里面可供存储的周边设备(可随机存取设备)

           *当为【c】则表示为设备文件里的序列设备,如磁盘、鼠标等

        ##接下来的字符中,以三个为一组,且均为"rwx"的三个参数的组合,其中【r】代表可读(read),【w】代表可写(write),【x】代表可执行(execute),他们的位置不会改变,如果没有该权限则用【-】代替。

          *第一组为“文件的拥有者可具备的权限”

          *第二组为"加入此群组的账号的权限"

          *第三组为“非本人且没有加入本群组的其他账号的权限” 

        ##第二栏表示有多少文件名链接到此节点(i-node)

        每个文件都会将他的权限和属性记录到系统的i-node中,每个文件名会链接到一个i-node。

        ##第三栏表示这个文件的拥有者账号

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

        linux系统下,你的账号会加入一个或多个群组。

        ##第五栏为这个文件的容量大小,默认单位为Bytes。

       ##第六栏为这个文件的创建日期或最近的修改日期

        ##第七栏为这个文件的文件名

        如果文件名前面多一个“.”,则表示这个文件为隐藏文件。

        可以使用 ls --help或者man ls 或info ls 看基础用法。

    2.2 如何改变文件属性和权限

        **改变所属群组,chgrp

        假设你已经是root身份,文件夹里有一个a.out文件,改变它的群组为root(群组必须在/etc/group里面)如下图

         

        使用chgrp命令修改文件群组。

        

        再用 ls -al显示文件,

        

        需要注意的是修改的群组必须是在系统群组文件中。使用方法:

         

       **改变文件拥有者,chown

        和chgrp一样的是,改变的拥有者必须是存在在系统中的账号,也就是在/etc/passwd/这个文件中。chown 还可以顺便修改群组的名称,如果要连目录下的所有次目录和文件同时更改文件拥有者的话,直接加上 -R即可。语法范例:

        

         什么时候用chown或chgrp,在复制文件给你之外的其他人时,需要改变文件拥有者。复制文件的时候会赋值执行者的属性和权限,所以,要将文件的属性和权限修改一下,不然对方无法使用。

         *改变权限,chmod

         文件权限的改变使用,chmod这个命令,但是设置的方法有两种,分别可以使用数字或者符号来进行权限的变更。

         **数字类型改变文件权限

        linux文件的基本权限就只有9个,分别owner/group/other三种身份各自的rwx权限。用数字代表各个权限。

        r:4,w:2,x:1

        每种身份(owner/group/other)各自的三个权限(r/w/x)分数是要累加的,比如【-rwxrwx--】的分数是

        owner=rwx=4+2+1=7

        group=rwx=4+2+1=7

        other=---=0+0+0=0

        所以更改权限时,这个文件的权限数字就是770,所以变更权限的语法是这样的

        

        **符号类型改变文件权限

         也就是九个权限分别是user、group、other三种身份,借助u、g、o代表三种身份的权限。a代表all也就是全部身份。读写的权限写成r、w、x。可以用以下的方式来更改。

        

        如果要设置一个文件权限为“-rwxr-xr-x”,也就是user具有可读可写可执行的权限,group和other具有可读可执行的权限,那么可以这样设置:chmod u=rwx,go=rx a.out。

    2.3 目录与文件权限的意义

        权限对文件的重要性:文件是实际含有数据的地方,包括一般文本文件、数据库内容档、二进制可执行文件等,因此,权限对文件来说意义是这样的,r(read)可读取此文件的实际内容,w(write)可以编辑、新增或修改该文件内容(不包括删除),x(execute)该文件具有可以被系统执行的权限。

        权限对目录的重要性:文件是存放实际数据的所在,目录主要内容在记录文件名清单,文件名与目录有强烈的关联。权限对目录而言,r(read)表示具有读取目录结构清单的权限,当具有读取一个目录的权限的时候,表示你可以查询该目录下文件名数据,所以使用ls知名显示目录。w(write)表示可以异动该目录结构清单的权限,也就是可以创建新的文件鱼目鲈,删除已经存在的文件与目录(不管该文件权限为什么),将已存在的文件或目录进行更名,搬移该目录内的文件、目录位置。x在目录中代表使用者能否进入该目录成为工作目录的用途,也就是可以通过cd命令进入该目录。

        创建目录mkdir,创建空文件tough。

    2.4 Linux文件种类与扩展名

         文件种类:

        在之前用ls -al 观察到的,第一个字符为文件类型,一般文件是(-),目录文件是(d)。

        *正规文件,第一个字符为(-),按照文件内容又可以分为:纯文本本文件、二进制档、数据格式文件。

        *目录文件,第一个字符为(d)。

        *链接文件,类似于windows的快捷方式,第一个字符为(l)。

        *设备与设备文件,与系统周边及存储等相关的一些文件,通常集中在/dev这个目录下。通常分为区块设备文件(一些存储数据,提供系统随机存取的周边设备,一个字符为(b)),字符设备文件(序列埠的周边设备,比如键盘,鼠标,特色是一次读取,第一个字符为(c))。

       *数据接口文件,第一个字符为 (s),通常是通过socket进行数据的沟通。

        *数据传送档,FIFO一种特殊的文件类型,主要目的是解决多个程序同时存取一个文件造成的错误问题。第一个字符是(p)。

        linux文件扩展名

        一个linux文件能不能被执行,和他的属性有关,与文件名无关,但是扩展名有利于了解文件是什么东西。

        *.sh:脚本或批处理文件

        *Z,*.tar,*.tar.gz,*.zip,*.tgz:经打包的压缩文件,因为压缩软件不同,造成文件名不同。

       *.html,*.php:网页相关文件,分别代表HTML语法和PHP语法的网页文件。

        linux文件名长度限制

        单一文件或目录最大容许文件名为255Bytes,以一个ASCII英文占一个比特而言最大可以255个字符长度,一个中文占两个比特来说,最大128个中文。

        linux文件名称的限制

        由于linux在命令行下一些指令的关系,设置文件名的时候最好避免一些特殊字符。比如:*?><;&!【】|\' "" `() {}等,以小数点开头代表隐藏文件,也最好避免以+-开头,因为有的指令会+-选项。

3、linux 目录配置

    3.1 linux目录配置的依据-FHS

        FHS(文件系统层次结构标准),根据这个标准,希望让使用者可以了解到已安装软件通常放置于那个目录下。FHS将目录定义为四种交互作用的形态,如下图:

       

         可以分享的:可以分享给其他系统挂载使用的目录,包括可执行文件与使用者的邮箱等数据,是能够分享给网络上其他主机挂载的目录。

        不可分享的:自己机器上运行的设备文件或者是与程序有关的socket文件,由于仅与自身及其有关,所以不适合分享给其他主机。

        不变的:有些数据是不会经常变动的,例如函数库、文件说明文档、系统管理员所管理的主机服务配置文件等等。

        可变动的:经常改变的数据,例如登陆文件、一般用户可自行收受的新闻群组。

        事实上,FHS针对目录树架构仅定义出三层目录下面应该放置什么数据,分别是:/(root根目录,与开机系统有关),/user(与软件安装与执行有关),/var(与系统运行过程有关)。

        根目录(/)的意义与内容:

        根目录是整个系统最重要的目录,所有的目录都是由根目录衍生出来的,同时根目录也与开机/还原/系统修复等动作有关。FHS建议:根目录(/)所在分区应越小越好,应用程序所安装的软件最好不要与根目录放在同一个分区内,保持根目录越小越好,这样不但性能较佳,根目录所在的文件系统也比较不容易发生问题。根据FHS定义根目录应该有下面这些次目录的存在才好,即使没有实体目录,希望至少有链接文件存在。

目录                                                         应该放置文件内容
                                           第一部分:FHS要求必须存在的目录
/bin /bin放置的是单人维护模式下还能被操作的指令,在/bin下面的指令可以被root和一般账号是用主要有:cat、chmod、chown、date、mv、mkdir、cp、bash 等指令。
/boot

主要放置开机会使用到的文件,linux kernel常用的文件名为 vmlinuz。

/dev linux系统上,任何设备与周边设备都以文件的形态存在与这个目录中,存取这个目录下的某个文件就等于存取某个设备,比较重要的文件有/dev/null,/dev/zero,/dev/tty等等
/etc 系统主要配置文件,比如人员账号密码档、各种服务启动档。一般来说这个目录下文件属性是可以让一般使用者查阅的,但是只有root有权利修改,FHS建议不要防止可执行文件在这个目录中。
/lib

系统函数库非常多,/lib放置的是在开机时会用到的函数库,以及在/bin或/sbin下面的指令会调用的函数。/lib/include/这个目录下方的是可抽换式的核心相关模块(驱动程序)。

/media 放置的是可移除的设备,包括软盘、光盘、DVD等设备。
/mnt 暂时挂载某些额外设备
/opt 第三方协力软件放置的目录。
/run 系统开机后产生的各项信息目录。
/sbin 开机过程中所需要的包括开机、修复、还原系统所需要的指令。常见指令包括fdisk、fsck、ifconfig、mkfs
/srv 可以看作service的缩写,是一些网络服务启动后,所需要取用的数据目录。比如WWW、FTP服务等
/tmp 一般使用者或正在执行的程序暂时放置文件的地方,重要数据不可放置在此文件下,FHS建议在开机时删除/tmp目录下数据。
/usr 第二层FHS设置
/var 第二层FHS设置
  第二部分:FHS建议可以存在的目录
/home 系统默认的使用者主文件夹。。~:代表目前这个使用者的主文件夹。~zl:代表zl的主文件夹
/lib<qual> 用来存放与/lib不同格式的二进制函数库
/root 系统管理员的主文件夹。如果进入单人维护模式仅挂载根目录时,该目录拥有root的主文件夹。

        还有几个重要的目录。

目录                                                          应放置文件内容
/lost+found 使用标准ext2/ext3/ext4文件系统格式才产生一个目录。
/proc 本身是一个虚拟文件系统。放置的数据都在内存中。比较重要的文件例如:/proc/cpuinfo, /proc/dma, /proc/interrupts, /proc/ioports, /proc/net/* 等等
/sys 这个目录其实跟/proc非常类似,也是一个虚拟的文件系统,主要也是记录核心与系统硬件信息较相关的信息。 包括目前已载入的核心模块与核心侦测到的硬件设备信息等等。这个目录同样不占硬盘容量

        根目录结束,来看/usr和/var。

        /usr的意义与内容

        usr并不是user的缩写,而是unix software resource的缩写,也就是unix操作系统软件资源,/usr的次目录建议有下面这些。

目录                                                                应放置的内容
                                                  第一部分:FHS要求必须存在的目录
/usr/bin/ 所有一般用户能使用的指令。该目录下不应该有子目录
/usr/lib/ 基本上与/lib功能相同,/lib是链接到此目录的。
/usr/local/ 系统管理员在本机自行安装自己下载的软件,便于管理
/usr/sbin/ 非系统正常运行所需要的指令,最常见网络服务器软件的服务指令。/sbin就是链接到该目录的
/usr/share/ 放置只读架构的数据文件,包括共享文件。
                                               第二部分:FHS建议可以存在的目录
/usr/games/ 与游戏相关的数据存放处
/usr/include/

c/c++等程序语言开始(header)与包含档(include)放置处

/usr/libexec/ 某些不被一般使用者惯用的可执行文件或脚本
/usr/lib<qual> 与/lib/<qual>功能相同,/lib<qual>是链接到该目录的
/usr/src/ 一般源代码放置此处,核心源代码放置/usr/src/linux目录下。

       /var 的意义与内容

        /usr是在安装时就会占用较大的硬盘容量的目录,/var是在系统运行之后才会逐渐占用硬盘容量的目录,/var目录主要针对常态性变动的文件,包括高速缓存(cache),登陆文件(log file)以及某些软件运行产生的文件包括程序文件或者数据库文件。常见的次目录:

        

    3.2 目录树

    linux下,所有文件与目录都是从根目录开始,然后一个个分支向下,这种目录配置方式为:目录树。特性:(1)目录树的起始点为根目录。(2)每一个目录不只能使用本地端的partition的文件系统也可以使用网络上的filesystem。可以利用NFS(Network File System)服务器挂在某些特定目录。(3)每一个文件在此目录树中的文件名(包含完整路径)都是独一无二的。下图为自己虚拟机的目录:

        

    3.3 绝对路径与相对路径

        根据文件名的写法不同,也就是所谓的路径定义为绝对路径与相对路径。

        *绝对路径:由根目录开始写起的文件名或目录名称。

        *相对路径:相对于目前路径的文件名写法。

    这一章的内容之前其实看过,有很多东西是基本熟悉的。比较重要的点是:区分使用者、群组、其他人的概念,区分文件权限(rwx),会使用指令修改(chmod(修改权限,两种方法,数字和符号法)、chown(修改文件拥有者)、chgrp(修改文件的群组)),文件目录,绝对路径和相对路径。

         

         

      

    

    

        

        

posted @ 2018-12-05 17:01  吾之求索  阅读(359)  评论(0)    收藏  举报