文件属性

image.png
使用ls -al查看当前目录下所有文件的权限。
● 第一个字符代表这个档案是目录,文件或者链接文件。
○ 当为[ d ]则是目录,对于目录文件打开目录属于执行文件,故当用户有rw-权限时他是不可以打开这个目录的。
○ 当为[ - ]则是文件。
○ 若是[ l ]则表示为链接文件。
○ 若是[ b ]则表示为设备文件里面的可供存储的周边设备。
○ 若是[ c ]则表示为设备文件里面的串行端口设备,例如键盘,鼠标。
● 接下来的字符里,以三个为一组,且均为‘rwx’ 的三个参数的组合。其中,[ r ]代表可读(read)、[ w ]代表可写(write)、[ x ]代表可执行(execute)。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[ - ]而已。
○ 第一组为‘文件拥有者可具备的权限’;
○ 第二组为‘加入此用户组之帐号的权限’;
○ 第三组为‘非本人且没有加入本用户组的其他帐号的权限’。

如何修改文件属性与权限

  • 使用chgrp修改文件所属用户组。
    • 只有用户名在/etc/group文件中才行,否则就会出现报错。
    • chgrp -R group file进行递归(recursive)修改,可以将这个文件下的所有文件更新为新的用户组。
  • 使用chown修改文件的拥有者。
    • 只有用户名在/etc/passwd文件中才行,否则就会出现报错。
    • 只有管理员拥有修改用户和用户组的权限。
    • 加上-R选项实现递归修改。
    • chown root:root test.txt可以同时将用户和用户组都进行修改。
    • 上例中也可以不使用而使用.将用户名和用户组隔开。
    • 也可以使用chown .root test.txt实现只修改用户组的功能。
    • 在实际使用中将文件复制给别人,将同时复制文件的权限。
  • 使用chmod修改文件权限。

    • chmod只能是文件的拥有着,或者时拥有管理员权限的人才能修改。
    • 使用数字类型修改文件权限
      • r=4,w=2,x=1
      • 当文件所有者拥有rwx权限时,就是7,当所属群组拥有rw权限时就是6。
      • 例如将test.txt文件所有权限都打开可以使用chmod 777 test.txt
      • 使用-R进行递归修改。
    • 使用符号类型修改文件权限
      • u=user,g=group,o=other,a=all。
      • +(加入权限),-(移除权限),=(设置权限)
      • 例如chmod u=rwx,go=rw就是给用户给rwx权限,给用户组和其他用户给了rw权限。
      • 例如chmod a-x test.txt就是给所有人移除x权限。当你需要给人给一个权限时候,但是不知道当前有什么权限就要使用这种方式。

        目录与权限的文件意义

        权限对文件的重要性

  • r(read):可以读取文件的实际内容,复制一个文件时需要该权限。

  • w(write):可以编辑、新增或者是修改该文件的内容。但是不能删除该文件。
  • x(execute):该文件具有可以被系统执行的权限。

注意在Linux下我们的文件能否执行与他的后缀名无关,主要看他有没有这个x权限。

权限对目录的重要性

  • r(read contents in directory):表示具有读取目录结构列表的权限,所以当你具有读取(r)一个目录的权限时,表示你可以查询该目录下的文件名数据,所以就可以使用ls命令将该目录的内容列表显示出来。
  • w(modify contents of directory):表示具有改动该目录结构的权限。
    • 建立新的文件和目录。
    • 删除已经存在的文件或者目录(不管该文件的权限是什么)
    • 将已存在的文件或者目录进行更名。
    • 移动该目录内的文件,目录位置。
  • x(access directory):代表了用户是否能进入该目录成为工作目录的用途。使用cd切换工作目录。

假设有一个文件在mgh用户的test文件夹下,同时mgh拥有对test文件夹的rwx的权限。在test文件夹下有一个file1文件,并且mgh没有rwx权限对file1。这个时候虽然mgh不能查看,修改,编辑file1,但是可以删除他因为他对test文件夹有w权限。
所以通常要开放的目录至少要给rx权限。
只给r不给x,只能看到该目录下有哪些文件,但是不可以进入该目录。
只给x不给r,在知道文件名的情况下,可以从目录中取出文件,但是不能通过ls查看文件,也不能通过tab自动补齐。

Linux文件种类与扩展名

文件种类

  1. 普通文件类型 [-]

Linux中最多的一种文件类型, 包括 纯文本文件(ASCII);二进制文件(binary);数据格式的文件(data);各种压缩文件。第一个属性为 [-] 。

  1. 目录文件类型 [d]

在linux中,它的思想是一切皆是文件,目录文件也就是Windows中的目录,也就是能用 cd 命令进入的。第一个属性为 [d],例如 [drwxr-xr-x]。

  1. 字符设备文件[c]

即串行端口的接口设备,例如键盘、鼠标等等。第一个属性为 [c]。

  1. 块设备文件[b]

即存储数据以供系统存取的接口设备,简单而言就是硬盘。例如一号硬盘的代码是 /dev/hda1等文件。第一个属性为 [b]。

  1. 套接字文件[s]

这类文件通常用在网络数据连接。可以启动一个程序来监听客户端的要求,客户端就可以通过套接字来进行数据通信。第一个属性为 [s],最常在 /var/run目录中看到这种文件类型。

  1. 管道文件 [p]

FIFO也是一种特殊的文件类型,它主要的目的是,解决多个程序同时存取一个文件所造成的错误。FIFO是first-in-first-out(先进先出)的缩写。第一个属性为 [p]。

  1. 链接文件[l]

类似Windows下面的快捷方式。第一个属性为 [l],例如 [lrwxrwxrwx]。

扩展名

  • 可以被执行和能执行成功是两个概念。可不可以被执行要看有没有x权限,可不可以执行成功要看这个文件有没有可执行的能力。
  • 常见扩展名
    • .sh就是批处理(scripts)文件,因为他是使用shell写成的,所以是.sh。
    • .z .tar .tar.gz .zip .tgz都是压缩文件,由于不同的压缩软件,取不同的后缀名。
    • .html .php网页相关文件。
  • Centos7使用xfs文件系统,规定单一文件的或目录的最大容许文件名为255字节,一个ascii英文占1个,一个汉字占两个字符。

    Linux目录配置

    Linux目录配置的依据

    FHS(Filesystem Hierarchy Standard)标准。P165,比较复杂,回头再看。
    系统启动必须:

  • /boot:存放的启动Linux 时使用的内核文件,包括连接文件以及镜像文件。

  • /etc:存放所有的系统需要的配置文件子目录列表,更改目录下的文件可能会导致系统不能启动。
  • /lib:存放基本代码库(比如c++库),其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。
  • /sys: 这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。该文件系统是内核设备树的一个直观反映。当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中

指令集合:

  • /bin:存放着最常用的程序和指令
  • /sbin:只有系统管理员能使用的程序和指令。

外部文件管理:

  • /dev :Device(设备)的缩写, 存放的是Linux的外部设备。注意:在Linux中访问设备和访问文件的方式是相同的。
  • /media:类windows的其他设备,例如U盘、光驱等等,识别后linux会把设备放到这个目录下。
  • /mnt:临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。

临时文件:

  • /run:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。
  • /lost+found:一般情况下为空的,系统非法关机后,这里就存放一些文件。
  • /tmp:这个目录是用来存放一些临时文件的。

账户:

  • /root:系统管理员的用户主目录。
  • /home:用户的主目录,以用户的账号命名的。
  • /usr:用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。
  • /usr/bin:系统用户使用的应用程序与指令。
  • /usr/sbin:超级用户使用的比较高级的管理程序和系统守护程序。
  • /usr/src:内核源代码默认的放置目录。

运行过程中要用:

  • /var:存放经常修改的数据,比如程序运行的日志文件(/var/log 目录下)。
  • /proc:管理内存空间!虚拟的目录,是系统内存的映射,我们可以直接访问这个目录来,获取系统信息。这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件来做修改。

扩展用的:

  • /opt:默认是空的,我们安装额外软件可以放在这个里面。
  • /srv:存放服务启动后需要提取的数据(不用服务器就是空)

    目录树

    image.png

  • 目录树的起始点是根目录。

  • 每一个目录不仅能使用本地分区的文件系统,也可使用网络上的文件系统。例如使用NFS服务器挂载特定目录等。
  • 每一个文件在此目录树中的文件名(包括完整路径)都是独一无二的。

    绝对路径和相对路径

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

  • 相对路径:相对于目前路径的文件名写法。
  • 开头不是/就是相对路径。
  • .:代表当前目录,也可以使用./表示。
  • ..:代表上一层目录,也可以用../表示。
  • -代表了前一个工作目录。
  • ~代表了目前使用者身份所在的家目录。
  • ~account代表了account这个使用者的家目录。