鸟哥的Linux私房菜第五章——Linux的文件权限与目录配置

文章目录

  • 第五章——Linux的文件权限与目录配置
    • 一、拥有者、群组、其他人
    • 二、文件权限
      • 1. 文件属性
      • 2. 改变文件属性
      • 3. 文件和目录的权限的意义
      • 4. 文件种类和扩展名
    • 三、Linux目录配置
      • 1. 目录配置的依据——FHS
      • 2. 目录树
      • 3. 绝对路径和相对路径
    • 四、重点回顾

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

Linux最优秀的地方之一就在于他的多用户多任务环境

Linux一般将文件可存取的身份分为三个类
别,分别是 owner/group/others,且三种身份各有 read/write/execute 等权限

一、拥有者、群组、其他人

  • 使用者

由于Linux是个多用户多任务的系统,因此可能常常会有多人同时使用这部主机来进行工作的情况发生, 为了考虑每个人的隐私权以及每个人喜好的工作环境,因此,这个“文件拥有者”的角色就显的相当的重要了!

  • 群组

可以经由简易的文件权限设置,就能限制非自己团队(亦即是群组啰) 的其他人不能够阅览内容啰!而且亦可以让自己的团队成员可以修改我所创建的文件! 同时,如果我自己还有私人隐密的文件,仍然可以设置成让自己的团队成员也看不到我的文件数据。

  • others

因此,我们就可以知道啦,在Linux里面,任何一个文件都具有“User, Group及Others”三种身份的个别权限, 我们可以将上面的说明以下面的图示来解释:

  • Linux 使用者身份与群组记录的文件

在我们Linux系统当中,默认的情况下,所有的系统上的帐号与一般身份使用者,还有那个root的相关信息, 都是记录在/etc/passwd这个文件内的。至于个人的密码则是记录在/etc/shadow这个文件下。 此外,Linux所有的群组名称都纪录在/etc/group内!这三个文件可以说是Linux系统里面帐号、密码、群组信息的集中地啰! 不要随便删除这三个文件啊!

二、文件权限

这个文件的权限要如何针对这些所谓的“使用者”与“群组”来设置呢?

1. 文件属性

“ ls ”这一个察看文件的指令啰!在你以dmtsai登陆系统,然后使用 su - 切换身份成为root后, 下达“ ls -al ”看看

要注意的是, 我们还是不建议你直接使用 root 登陆系统,建议使用 su - 这个指令来切换身份喔!离开 su - 则使用 exit 回到 dmtsai 的身份即可!

ls是“list”的意思,重点在显示文件的文件名与相关属性。而选项“-al”则表示列出所有的文件详细的权限与属性(-a表示显示隐藏文件,-l表示详细信息),-l之后共有7个字段

  • 第一栏:权限
    共有10个字符:

    • 第1个:类型

      • d:目录
      • -:文件
      • l:链接文件
    • 第2、3、4个:对拥有者权限
      • r:可读
      • w:可写
      • x:可执行(execute)
      • -:没有该权限,用-代替
    • 第5、6、7个:对群组权限
    • 第8、9、10个:对其他人权限

不论是那一组权限,基本上,都是“针对某些帐号来设计的权限”喔!以群组来说,他规范的是“加入这个群组的帐号具有什么样的权限”之意

[-][rwx][r-x][r–] > 1 234 567 890
1 为:代表这个文件名为目录或文件,本例中为文件(-); 234为:拥有者的权限,本例中为可读、可写、可执行(rwx); 567为:同群组使用者权限,本例中为可读可执行(rx);890为:其他使用者权限,本例中为可读(r),就是只读之意
同时注意到,rwx所在的位置是不会改变的,有该权限就会显示字符,没有该权限就变成减号(-)就是了。另外,目录与文件的权限意义并不相同,这是因为目录与文件所记录的数据内容不相同所致。 由于目录与文件的权限意义非常的重要,

  • 第二栏:链接文件数
    每个文件都会将他的权限与属性记录到文件系统的i-node中,不过,我们使用的目录树却是使用文件名来记录, 因此每个文件名就会链接到一个i-node啰!这个属性记录的,就是有多少不同的文件名链接到相同的一个i-node号码去就是了。
  • 第三栏:拥有者
  • 第四栏:群组
  • 第五栏:文件大小
  • 第六栏:修改日期
  • 第七栏:名称

2. 改变文件属性

几个常用于群组、拥有者、各种身份的权限之修改的指令(root身份使用)

  • chgrp:改变文件所属群组

前提:要被改变的群组名称必须要做/etc/group中存在才可以,否则会显示错误

假设你已经是root的身份了,那么在你的主文件夹内有一个名为 initial-setup-ks.cfg 的文件,如何将该文件的群组改变一下呢?假设你已经知道在/etc/group里面已经存在一个名为users的群组, 但是testing这个群组名字就不存在/etc/group当中了,此时改变群组成为users与testing分别会有什么现象发生呢?


发现了吗?文件的群组被改成users了,但是要改成testing的时候, 就会发生错误~注意喔!

  • chown:改变文件的拥有者

使用者必须是已经存在系统中的帐号,也就是在/etc/passwd 这个文件中有纪录的使用者名称才能改变。

还可以顺便直接修改群组的名称呢

确实有时候需要变更文件的拥有者的,最常见的例子就是在复制文件给你之外的其他人时, 我们使用最简单的cp指令来说明好了,假设你今天要将.bashrc这个文件拷贝成为.bashrc_test文件名,且是要给bin这个人,你可以这样做:


由于复制行为(cp)会复制执行者的属性与权限,所以!怎么办?.bashrc_test还是属于root所拥有, 如此一来,即使你将文件拿给bin这个使用者了,那他仍然无法修改的(看属性/权限就知道了吧), 所以你就必须要将这个文件的拥有者与群组修改一下啰!

  • chmod:改变文件权限

    • 使用数字

        文件的权限字符为:“-rwxrwxrwx”, 这九个权限是三个三个一组的!其中,我们可以使用数字来代表各个权限,各权限的分数对照表如下:> r:4 > w:2 > x:1
      

      每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权
      限为: [-rwxrwx—] 分数则是:

      owner = rwx = 4+2+1 = 7 > group = rwx = 4+2+1 = 7 > others= — = 0+0+0 = 0

      所以等一下我们设置权限的变更时,该文件的权限数字就是770啦!变更权限的指令
      chmod的语法是这样的:

      举例来说,如果要将.bashrc这个文件所有的权限都设置启用,那么就下达:

      如果有些文件你不希望被其他人看到,那么应该将文件的权限设置为例如:“-rwxr-
      ----”,那就下达“ chmod 740 filename ”吧!

    • 使用符号

      九个权限分别是(1)user (2)group (3)others三种身份啦!那么我们就可以借由u, g, o来代表三种身份的权限!此外, a 则代表 all 亦即全部的身份!那么读写的权限就可以写成r, w, x 啰!也就是可以使用下面的方式来看:

      | chmod | u g o a | +(加入) -(除去) =(设置) | r w x | 文件或目录 |

      假如我们要“设置”一个文件的权限成为“-rwxr-xr-x”时,基本上就是:

      那么假如是“ -rwxr-xr-- ”这样的权限呢?可以使用“ chmod u=rwx,g=rx,o=r filename ”来设
      置。

      此外,如果我不知道原先的文件属性,而我只想要增加.bashrc这个文件的每个人均
      可写入的权限, 那么我就可以使用:

      而如果是要将权限去掉而不更动其他已存在的权限呢?例如要拿掉全部人的可执行权

3. 文件和目录的权限的意义

这些文件权限对于一般文件与目录文件有何不同呢? 有大大的不同啊!

  • 文件权限
    文件是实际含有数据的地方,包括一般文本文件、数据库内容档、二进制可可执行文件(binary program)等等。 因此,权限对于文件来说,他的意义是这样的:

可执行(x)?这里你就必须要小心啦!因为在Windows下面一个文件是否具有执行的能力是借由“ 扩展名 ”来判断的, 例如:.exe,.bat, .com 等等,但是在Linux下面,我们的文件是否能被执行,则是借由是否具有“x”这个权限来决定的!跟文件名是没有绝对的关系的!

w这个权限呢?当你对一个文件具有w权限时,你可以具有写入/编辑/新增/修改文件的内容的权限, 但并不具备有删除该文件本身的权限!对于文件的rwx来说, 主要都是针对“文件的内容”而言,与文件文件名的存在与否没有关系喔

  • 目录权限
    文件是存放实际数据的所在,那么目录主要是储存啥玩意啊?目录主要的内容在记录文件名清单,文件名与目录有强烈的关连啦!

总结:

例题:有个目录的权限如下所示:

drwxr--r-- 3 root root 4096 Jun 25 08:35 .ssh

系统有个帐号名称为vbird,这个帐号并没有支持root群组,请问vbird对这个目录有何权限?是否可切换到此目录中?答:vbird对此目录仅具有r的权限,因此vbird可以查询此目录下的文件名列表。因为vbird不具有x的权限,亦即 vbird 没有这个抽屉的钥匙啦! 因此vbird并不能切换到此目录内!(相当重要的概念!)

上面这个例题中因为vbird具有r的权限,因为是r乍看之下好像就具有可以进入此目录的权限,其实那是错的。 能不能进入某一个目录,只与该目录的x权限有关啦!此外, 工作目录对于指令的执行是非常重要的,如果你在某目录下不具有x的权限, 那么你就无法切换到该目录下,也就无法执行该目录下的任何指令,即使你具有该目录的r或w的权限。

要注意:要开放目录给任何人浏览时,应该至少也要给予r及x的权限,但w权限不可随便给!

例题:假设有个帐号名称为dmtsai,他的主文件夹在/home/dmtsai/,dmtsai对此目录具有
[rwx]的权限。 若在此目录下有个名为the_root.data的文件,该文件的权限如下:

-rwx------ 1 root root 4365 Sep 19 23:20 the_root.data

请问dmtsai对此文件的权限为何?可否删除此文件?答:如上所示,由于dmtsai对此文件来说是“others”的身份,因此这个文件他无法读、无法编辑也无法执行, 也就是说,他无法变动这个文件的内容就是了。
但是由于这个文件在他的主文件夹下, 他在此目录下具有rwx的完整权限,因此对于the_root.data这个“文件名”来说,他是能够“删除”的! 结论就是,dmtsai这个用户能够删除the_root.data这个文件!

4. 文件种类和扩展名

任何设备在Linux下面都是文件, 不仅如此,连数 据沟通的接口也有专属的文件在负责~

使用“ls -l”观察到第一栏那十个字符中,第一个字符为文件的类型。 除了常见 的一般文件(-)与目录文件(d)之外,还有哪些种类的文件类型呢?

文件类型

  • 正规文件:符号为 -

    • 纯文本文件
    • 二进制文件
    • 数据格式文件
  • 目录:符号为 d
  • 链接文件:一个文件或目录的快捷方式,符号为l
  • 设备、设备文件:一般集中在/dev目录下
    • 区块(block)设备文件:硬盘,符号为b
    • 字符(character)设备文件:键盘、鼠标,符号为 c
  • 数据接口文件(sockets):被用作在网络上的数据承接,符号为 s
  • 数据输送档(FIFO、pipe):解决多个程序同时存取一个文件造成的错误,符号为p

扩展名

  1. 其实,Linux中是没有扩展名的,比如,一个文件能不能被执行,在windows中根据扩展名是否为.exe、.bat这些表示可执行文件的扩展名,而在Linux中,一个文件能不能被执行,取决于这个文件是否具有x权限,有就可以执行,没有就不能执行,与扩展名无关

  2. 还有一点,可执行权限 和 可执行的程序码 不是一回事。比如:一个纯文本文件,你可以给他x权限,那么就有了执行权限;但是纯文本文件怎么执行啊?!,所以它没有可执行的程序码。,所以它也就不能被执行成功。而一个指令对应的文件,它的x权限是可以执行的,因为它是可执行程序码

  3. 但是我们希望能通过扩展名来了解这个文件是什么东西,所以有一些常见的扩展名:

    • *.sh:脚本或批处理文件
    • Z,.tar,.tar.gz,.zip,.tgz:压缩文件,因为压缩软件不同导致扩展名不同
    • html、php:网页文件

扩展名只是帮助了解它是个什么用途的文件而已

文件名的长度

CentOS 7对文件名长度限制为:255B(字节)

  • 一个ASCII英文占用1B,可以达到255个英文字母
  • 一个汉字占用2B,可以达到128个汉字

文件名避免使用特殊字符,因为大部分都有特殊意义,比如 - 不能用在文件名开头,因为指令的选项就以 - 开头,会引起混乱

三、Linux目录配置

1. 目录配置的依据——FHS

Filesystem Hierarchy Standard (FHS)

  1. 主要目的:让使用者可以了解到已安装的软件通常放置在哪个目录下;规范每个特定的目录下应该要放置什么样的数据

  2. FHS只定义了三个目录下的数据

    • /(根目录):与开机有关
    • /usr(unix software resource):和软件的安装、执行有关
    • /var(variable):和系统的运行过程有关
  3. 根目录(/)的意义和内容
    所有的目录都是由根目录衍生出来的,同时 根目录也与开机/还原/系统修复等动作有关。 由于系统开机时需要特定的开机软件、核心文 件、开机所需程序、函数库等等文件数据,若系统出现错误时,根目录也必须要包含有能够 修复文件系统的程序才行。

| 第一部分:FHS要求必须存在的 |

目录 应放置的文件内容
/bin 存放可以被root和普通用户使用的指令文件
/boot 存放开机使用到的文件
/dev 存放设备的文件(设备以文件形式存在)
/etc 存放系统的配置文件,例如用户的账号密码
/lib 存放开机用的函数库,还有/bin和/sbin中的指令用的函数库
/media(媒体) 存放可移除的设备(软盘、光盘等)
/mnt 与media类似,用来暂时的挂载某些设备
/opt 第三方软件安装到这里(以前习惯放在/usr/local下)
/run 存放开机后产生的各项信息
/sbin 设置系统环境,存放开机、修复、还原系统使用的指令(root才能使用)
/srv(service服务) 存放一些网络服务所需要使用的数据目录(WWW服务需要的网页数据)
/tmp 暂时放置文件的地方(任何人都可用),开机前一般都清除掉
/usr
/var
第二部分:FHS建议存在的
/home 使用者主文件夹,里面包含了所有的普通用户的主文件夹(~ 和 ~lzh两种)
/lib64 存放与/lib不同格式的函数库,支持64位的lib64函数库
/root 管理员(root)的主文件夹

事实上FHS针对根目录所定义的标准就仅有上面的咚咚,不过我们的Linux下面还有许多目录 你也需要了解一下的。 下面是几个在Linux当中也是非常重要的目录喔:

/lost+found
ext2/ext3/ext4这个文件系统格式才会有的,将文件系统发生错误时,遗失掉的片断放置这里,xfs文件系统没有这个目录(CentOS没有)

/proc
虚拟文件系统,存放的数据都在内存中 ,例如系统核心、行程信息(process)、周边设备的 状态及网络状态等等。因为这个目录下的数据都是在内存当中, 所以本身不占任何硬盘空间

/sys
跟/proc类似,包括目前已载入的核心模块与核心侦测到的硬件设备信息等等。这个目录同样不占硬盘容量

早期 Linux 在设计的时候,若发生问题时,救援模式通常仅挂载根目录而已,因此有五个重 要的目录被要求一定要与根目录放置在一起, 那就是 /etc, /bin, /dev, /lib, /sbin 这五个重要目 录。现在许多的 Linux distributions 由于已经将许多非必要的文件移出 /usr 之外了, 所以 /usr 也是越来越精简,同时因为 /usr 被建议为“即使挂载成为只读,系统还是可以正常运行”的 模样,所以救援模式也能同时挂载 /usr 喔! 例如我们的这个 CentOS 7.x 版本在救援模式的 情况下就是这样。因此那个五大目录的限制已经被打破了呦!例如 CentOS 7.x 就已经将 /sbin, /bin, /lib 通通移动到 /usr 下面了哩!

  1. /usr的意义和内容
  • 依据FHS,/usr放置的数据属于可分享的与不可变动的, 如果你知道如何通过网络进行分区的挂载,那么/usr确实可以分享给区域网络内的其他主机来使用喔!

  • usr是Unix Software Resource的缩写,是“Unix操作系统软件资源”所放置的目录,而不是使用者的数据

  • 系统默认的软件(distribution发布者提供的软件)都会放置到/usr下面,因此类似Windows 系统的“C:\Windows\ (当中的一部份) + C:\Program files\”这两个目录的综合体,系统刚安装完毕时,这个目录会占用最多的硬盘容量。

目录 应放置的文件内容
第一部分:FHS要求必须存在的
/usr/bin 一般用户都能够使用的指令,CentOS 7将/bin链接到这里
/usr/lib /lib就是链接的这里
/usr/local 系统管理员自行安装的软件放到这里
/usr/sbin 网络服务器软件程序的服务指令
/usr/share 存放不分硬件架构均可读取是数据文件:/usr/share/man、doc、zoneinfo等
第二部分:FHS建议存在的
/usr/games 和游戏相关的数据放置处
/usr/include c/c++等的头文件和包含档放置处
/usr/libexec 可执行文件或脚本,例如大部分的 X 窗口下面的操作指令
/usr/lib64 /lib64链接的这里
/usr/src 源代码放置处
  1. /var 的意义和内容

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

目录 应放置的文件内容
第一部分:FHS要求必须存在的
/var/cache 应用程序本身运行过程中会产生的一些暂存盘
/var/lib 应用程序执行过程中,需要使用到的数据文件,举例来说,MySQL的数据库放置到/var/lib/mysql/
/var/lock 设备或文件一次只能被一个应用程序所使用,俩程序同时使用时,该设备要上锁(lock),已挪到 /run/lock 中!
/var/log 这是登录文件放置的目录!里面比较重要的文件如/var/log/messages, /var/log/wtmp(记录登陆者的信息)等
/var/mail 放置个人电子邮箱,和/var/spool/mail互为链接文件
/var/run 某些程序或者是服务启动后,会将他们的PID放置在这个目录下喔,链接/run
/var/spool 放置排队等待其他程序使用的数据,这些数据被使用后通常都会被删除
  1. CentOS 7 目录的更改
    比较大的差异在于将许多原本应该要在根目录 (/) 里面的目录,将他内部数据全部挪到 /usr 里面去,然后进行链接设置!包括下面这些:

     /bin --> /usr/bin/sbin --> /usr/sbin/lib --> /usr/lib/lib64 --> /usr/lib64/var/lock --> /run/lock/var/run --> /run
    

2. 目录树

3. 绝对路径和相对路径

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

相对路径是以“你当前所在路径的相对位置”来表示的。举例来说,你目前在/home 这个目录下, 如果想要进入 /var/log 这个目录时,可以怎么写呢?

  1. cd /var/log (absolute)
  2. cd …/var/log (relative)
    因为你在 /home 下面,所以要回到上一层 (…/) 之后,才能继续往 /var 来移动的! 特别注意这两个特殊的目录:
  • . :代表当前的目录,也可以使用 ./ 来表示;
  • . .:代表上一层目录,也可以 …/ 来代表。
    你常常会看到 cd … 或 ./command 之类的指令下达方式,就是代表上一层与目前所在目录的工作状态喔

四、重点回顾

一文走进Linux——文件权限与目录配置相关推荐

  1. 【笔记】linux文件权限与目录配置

    linux文件权限与目录配置 文章目录 linux文件权限与目录配置 一.文件权限 <1>文件属性 [特别注意] <2>连接数 二.修改文件权限 <1>改变群组 c ...

  2. 还没掌握Linux文件权限与目录配置命令?就这还不点进来看看干货

    1.用户和用户组其他人 2.Linux文件权限概念         常用的ls命令         常用的cd命令         linux文件属性权限> 3.修改文件属性和权限        ...

  3. Linux操作系统使用基础03:Linux文件权限与目录配置

    目录 1. 用户与用户组简介 1.1 作用 1.2 相关配置文件 1.2.1 用户信息文件:/etc/passwd 1.2.2 影子文件:/etc/shadow 1.2.3 组信息文件:/etc/gr ...

  4. 【Linux入门学习之】Linux文件权限与目录配置

    一.Linux的文件权限 Linux最优秀的地方之一在于它的多用户.多任务环境.而为了让各个用户具有较保密的文件数据,文件的权限管理就相当重要了.Linux一般将文件可存取访问的身份分为三个类别:ow ...

  5. linux b权限开头的文件夹,linux文件权限与目录配置

    一.Linux文件属性及权限 1.文件/目录属性查看 (1)文件属性查看 [root@localhost ~]# ls -l file -      rw-r--r--.     1          ...

  6. 鸟哥的Linux私房菜(基础篇)- 第六章、Linux 的文件权限与目录配置

    第六章.Linux的文件权限与目录配置 最近更新日期:2009/08/18 Linux最优秀的地方之一,就在于他的多人多任务环境.而为了让各个使用者具有较保密的文件数据,因此文件的权限管理就变的很重要 ...

  7. Linux 的文件权限与目录配置

    第六章.Linux的文件权限与目录配置 最近更新日期:2009/08/18 3. Linux目录配置 3.1 Linux目录配置的依据--FHS:/,/usr, /var 3.2 目录树(direct ...

  8. linux基础学习——linux的文件权限和目录配置

    linux基础学习--linux的文件权限和目录配置 1.用户和用户组和其他人概念: 三个概念的前提宗旨:linux是一个多人多任务的系统环境.如果不对文件作出一个权限限制的话.任何人都能操作这份文件 ...

  9. 鸟哥的私房菜笔记—文件权限与目录配置

    本文参考鸟哥的私房菜-文件权限与目录配置 1.linux中的角色 user group others 每种角色都有三种权限:r(read) w(write) x(execute) 2.linux文件属 ...

最新文章

  1. python ddos攻击脚本_python版本DDOS攻击脚本
  2. Ubuntu下安装NetBeans步骤和相关问题的解决方法
  3. 关于IOS数据解析的错误分析
  4. 解决导入Beautifulsoup 报错 AttributeError: 'module' object has no attribute '_base'的问题
  5. hg255d php,HG255D刷潘多拉共享惠普1020打印机的问题汇总
  6. 年会互动游戏有哪些?年会微信互动游戏制作流程是什么?
  7. 虚拟机win7装oracle,大神教你win7系统安装Oracle VM VirtualBox虚拟机的处理教程
  8. sql server order by 的一些高级用法
  9. 暴雪插件占用服务器,你还在用这款插件吗?暴雪公布《魔兽世界》怀旧服卡顿原因...
  10. 德育知识元素挖掘系统设计 软件工程 spring boot + Vue.js + python机器学习
  11. VUE中根据文件后缀名显示对应的图标
  12. 全国绿色计算大赛 模拟赛第三阶段
  13. 数学/数论专题-学习笔记:狄利克雷卷积
  14. IPV6 邻居发现协议(NDP)
  15. Arduino 高级教程 01:基础篇
  16. 2021/1/16-每日三题第23弹:skr小机灵鬼儿 ?你知道 JavaScript 中的原型和原型链是什么吗 ???
  17. win10系统开机出现grub,一步进入window系统
  18. windows 平台使用dul 抽取Linux oracle ASM 磁盘数据文件
  19. 生僻字用计算机怎么弹歌曲,抖音生僻字简谱:计算器数字乐谱计算器弹奏音乐总结...
  20. 云原生计算基金会宣布Envoy毕业

热门文章

  1. python如何打印表格_python如何以表格形式打印输出
  2. Druid学习笔记(一) - 监控功能的开启
  3. 在win10自带Ubuntu16下搭建环境使用CLion2018进行C++开发
  4. Labview+STM32无线温湿度采集
  5. 全网最详细笔记:张益唐北大讲解火热出炉!证明「零点猜想」!
  6. html word 分页符,word中分页符有什么作用?word中分页符的作用介绍
  7. Mac mysql数据库基本操作
  8. 函数实现乘法表(超详细解析)
  9. 强大的PDF格式转换器
  10. 乔迁新居主人喜 家中旧物叫人愁