使用者和群组

  • 使用者。就是文件的拥有者,通过对文件权限的授予来划分使用者的类别,一些使用者对文件只有读或写的权限,而对于管理员则对文件既有只读和只写还有读写的权限,通过权限划分使用者,能让系统运行更为安全高效,对于某些用户起到隐私隔离的效果
  • 群组。即在同一个Group中的所有用户共享其文件,而每个组之间又相互独立,即各组的权限共享范围不一,所以当设置该用户在群组内的文件权限时,同一群组下的其他用户即可对该文件进行操作
  • 其他人。即others,是Linux系统中除了文件的拥有者、群组以外的用户称为others

文件权限

Linux 文件属性

  • 通过在root用户下,终端执行su -al,显示以下文件信息:

    docfile

    • 第一列为文件类型权限
    • 第二列的数字为该文件的连接数,目录树就是通过该数字把文件链接起来的
    • 第三列为文件的拥有者
    • 第四列为文件所在群组
    • 第五列为文件最后更改时间
    • 第六列为文件名
  • 文件类型与属性图

    quanxian

    • 关于第一个字符含义:

      ​ 当为[ d ]则是目录,例如上表文件名为.config的那一行;

      ​ 当为[ - ]则是文件,例如上表文件名为initial-setup-ks.cfg那一行;

      ​ 若是[ l ]则表示为链接文件(link file);

      ​ 若是[ b ]则表示为设备文件里面的可供储存的周边设备(可随机存取设备);

      ​ 若是[ c ]则表示为设备文件里面的序列埠设备,例如键盘、鼠标(一次性读取设 备)

    • 关于第2、3、4个字符含义(三个一组来解释):

      ​ 以三个为一组,且均为rwx的三个参数的组合。其中,[ r ]代表可读 、[ w ]代表可写、[ x ]代表可执行。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[ - ]而已。

    • 后面5-7和8-10的含义与2、3、4一致,只是一个表示文件所在群的权限,一个是others的权限

改变文件属性权限

  • chgrp :改变文件所属群组
  • chown :改变文件拥有者
  • chmod :改变文件的权限, SUID, SGID, SBIT等等的特性
  • 改变所属群组, chgrp

改变所属群组 chgrp

  • 例如: chgrp users initial-setup-ks.cfg 第二位为群组名 第三位为文件名

chgrpa

chgrpb

改变文件拥有者 chown

  • 例如: chown bin initial-setup-ks.cfg 第二位为文件拥有者名 第三位为文件名
    chowna

改变文件权限 chmod

  • 例如: chown 777 .bashrc 第二位的三个数字分别代表(owner/group/others)的只读、只写、读写权限 第三位为文件名
  • 关于权限位数:
    • rwx,其中r=4(read),w=2(write),x=1(execute)
    • owner = rwx = 4+2+1 = 7 > group = rwx = 4+2+1 = 7 > others= —- = 0+0+0 = 0

chmoda

  • 也可以用字符改变各种使用者
    • u 代表user
    • g 代表group
    • o 代表others
  • 例如: [root@study ~]# chmod u=rwx,go=rx .bashrc

目录文件权限意义

对文件而言

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

对目录而言

  • r (read contents in directory)

    • 表示具有读取目录结构清单的权限,所以当你具有读取(r)一个目录的权限时,表示你可以查询该目录下的文件名数据。
  • w (modify contents of directory)

    • 表示可以创建新的文件与目录;删除已经存在的文件与目录(不论该文件的权限为何!)将已存在的文件或目录进行更名;搬移该目录内的文件、目录位置。
  • x (access directory)

    • 目录不可以被执行,目录的x代表的是使用者能否进入该目录成为工作目录的用途!所谓的工作目录(work directory)就是你目前所在的目录啦!举例来说,当你登陆Linux时,你所在的主文件夹就是你当下的工作目录。

Linux文件种类

正规文件

即是一般我们在进行存取的类型的文件,在由 ls -al 所显示出来的属性方面,第一个字符为[ - ],例如 [-rwxrwxrwx ]

  • 纯文本文件ASCII
  • 二进制文件binary
  • 数据格式文件data

目录directory

设备与设备文件device

  • 区块block
  • 字符character

    数据接口文件socket

    数据输送档

Linux扩展名

  • *.sh : 脚本或批处理文件 (scripts),因为批处理文件为使用shell写成的,所以扩展名就编成 .sh
  • Z, .tar, .tar.gz, .zip, *.tgz: 经过打包的压缩文件。这是因为压缩软件分别为 gunzip, tar等等的,由于不同的压缩软件,而取其相关的扩展名!
  • .html, .php:网页相关文件,分别代表 HTML 语法与 PHP 语法的网页文件! .html 的文件可使用网页浏览器来直接打开,至于 .php 的文件, 则可以通过 client 端的浏览器来server 端浏览,以得到运算后的网页结果!

Linux 目录配置

  • 基本的三层目录
    • / (root, 根目录):与开机系统有关;
    • /usr (unix software resource):与软件安装/执行有关;
    • /var(variable):与系统运行过程有关。

所有的Linux目录配置都是基于FHS的,即文件系统继承标准Filesystem Hierarchy Standard

第一部分FHS(必须要存在的!!)

目录 放置内容
/bin 系统有很多 ==放置可执行文件的目录== ,但/bin比较特殊。因为/bin放置的是在单人维护模式下还能够被操作的指令。 在/bin下面的指令可以被root与一般帐号所使用,主要有:cat, chmod, chown, date, mv, mkdir, cp, bash等等常用的指令。
/boot 这个目录主要在 ==放置开机会使用到的文件== ,包括Linux核心文件以及开机菜单与开机所需配置文件等等。 Linux kernel常用的文件名为:vmlinuz,如果使用的是grub2这个开机管理程序, 则还会存在/boot/grub2/这个目录喔!
/dev 在Linux系统上,任何设备与周边设备都是以文件的型态存在于这个目录当中的。 比如重要的文件有/dev/null, /dev/zero, /dev/tty, /dev/loop, /dev/sd等等
/etc ==系统主要的配置文件== 几乎都放置在这个目录内,例如人员的帐号密码档、各种服务的启始档等等。一般来说,这个目录下的各文件属性是可以让一般使用者查阅的, 但是只有root有权力修改。
/lib 系统的函数库非常的多,而/lib放置的则是在 ==开机时会用到的函数库== , 以及在/bin或/sbin下面的指令会调用的函数库而已。 什么是函数库呢?你可以将他想成是“外挂”,某些指令必须要有这些“外挂”才能够顺利完成程序的执行之意。
/mnt 如果你想要 ==暂时挂载某些额外的设备== ,一般建议你可以放置到这个目录中。在古早时候,这个目录的用途与/media相同啦!只是有了/media之后,这个目录就用来暂时挂载用了
/opt 这个是 ==给第三方协力软件放置的目录== 。什么是第三方协力软件啊? 举例来说,KDE这个桌面管理系统是一个独立的计划,不过他可以安装到Linux系统中,因此KDE的软件就建议放置到此目录下了。 不过,以前的Linux系统中,我们还是习惯放置在/usr/local目录下呢!
/srv srv可以视为“service”的缩写,是一些网络服务启动之后,这些服务所需要取用的数据目录。 常见的服务例如WWW, FTP等等。举例来说,WWW服务器需要的网页数据就可以放置在/srv/www/里面。 不过,系统的服务数据如果尚未要提供给网际网络任何人浏览的话,默认还是建议放置到 /var/lib下面即可。
/tmp 这是让一般使用者或者是 ==正在执行的程序暂时放置文件== 的地方。 这个目录是任何人都能够存取的,所以你需要定期的清理一下。当然,重要数据不可放置在此目录啊! 因为FHS甚至建议在开机时,应该要将/tmp下的数据都删除唷!
/home 这是 ==系统默认的使用者主文件夹== (home directory)。在你新增一个一般使用者帐号时, 默认的使用者主文件夹都会规范到这里来。比较重要的是,主文件夹有两种代号喔:~:代表目前这个使用者的主文件夹 ~dmtsai :则代表 dmtsai 的主文件夹!
/root ==系统管理员(root)的主文件夹== 。之所以放在这里,是因为如果进入单人维护模式而仅挂载根目录时, 该目录就能够拥有root的主文件夹,所以我们会希望root的主文件夹与根目录放置在同一个分区中。

/usr 的意义与内容:

  • /usr里面放置的数据属于可分享的与不可变动的(shareable,static), 如果你知道如何通过网络进行分区的挂载,那么/usr确实可以分享给区域网络内的其他主机来使用喔!其实usr是Unix Software Resource的缩写, 也就是“Unix操作系统软件资源”所放置的目录,而不是使用者的数据啦!这点要注意。 FHS建议所有软件开发者,应该将他们的数据合理的分别放置到这个目录下的次目录,而不要自行创建该软件自己独立的目录。因为是所有系统默认的软件(distribution发布者提供的软件)都会放置到/usr下面,因此这个目录有点类似Windows 系统的C:\Windows\ (当中的一部份) + C:\Programfiles\这两个目录的综合体,系统刚安装完毕时,这个目录会占用最多的硬盘容量

/var 的意义与内容:

  • 如果/usr是安装时会占用较大硬盘容量的目录,那么/var就是在系统运行后才会渐渐占用硬盘容量的目录。 因为/var目录主要针对常态性变动的文件,包括高速缓存(cache)、登录文件(log file)以及某些软件运行所产生的文件, 包括程序文件(lock file, run file),或者例如MySQL数据库的文件等等

目录树

  • 目录树的启始点为根目录 (/, root);
  • 每一个目录不止能使用本地端的 partition 的文件系统,也可以使用网络上的 filesystem。举例来说, 可以利用 Network File System (NFS) 服务器挂载某特定目录等。
  • 每一个文件在此目录树中的文件名(包含完整路径)都是独一无二的。

directorytree

绝对路径、相对路径

  • 绝对路径:由根目录(/)开始写起的文件名或目录名称, 例如 /home/dmtsai/.bashrc
  • 相对路径:相对于目前路径的文件名写法。 例如 ./home/dmtsai../../home/dmtsai/等等。反正开头不是 / 就属于相对路径的写法