[笔记]Linux的文件权限与目录配置

Posted symind

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[笔记]Linux的文件权限与目录配置相关的知识,希望对你有一定的参考价值。

此文为学习笔记,所阅读的文章为:鳥哥的 Linux 私房菜 - Linux 的檔案權限與目錄配置http://linux.vbird.org/linux_basic/0210filepermission.php

 

1 使用者与群组

1)文件拥有者

        在Linux中,创建一个文件后,该文件的拥有者就是创建该文件的用户。该文件用户可以修改文件的拥有者及用户组,当然root用户也可以修改任何文件的拥有者及用户组。

2)群组概念

        群组最有用的功能之一,就是当你在团队开发资源的时候!

3)其他人的概念

 

2 Linux文件权限概念

2.1 Linux文件属性

        使用『 ls -al 』命令查看文件属性。

技术分享图片

            图1 文件属性的示意图

 技术分享图片

            图2 文件的类型与权限

1)第一个字元代表这个文件的类型:

  • [ d ]是目录文件
  • [ - ]是普通文件
  • [ l ]是链接文件(link file)
  • [ b ]是可随机存储设备文件,例如硬盘
  • [ c ]一次性读取设备文件,例如串口设备

2)接下来的字元中,以三个为一组,且均为『rwx』三个参数的组合。

 

  • [ r ]代表可读(read)
  • [ w ]代表可写(write)
  • [ x ]代表可执行(execute)

 

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

  • chgrp:改变文件所属群组
  • chown:改变文件拥有着
  • chmod:改变文件的权限

 

2.3 目录文件和普通文件的权限意义

类型 內容 类比物件 r w x
普通文件 详细资料data 文件资料夹 读到文件內容 修改文件內容 执行文件內容
目录文件 文件名 可分类抽屉 读到文件 修改文件名 进入该目录的权限(key)

 

3 Linux目录配置

3.1 Linux目录配置的依据——FHS

        Filesystem Hierarchy Standard(FHS)的标准文件指出,他们的主要目的是希望让使用者了解到安装软件通常放在哪个目录下,所以他们希望独立的软件开发商、操作系统制作者、以及想要维护系统的使用者,都能够遵循FHS的标准。

        FHS定义中三个目录的意思:

  • /(root,根目录):与开关系统有关;
  • /usr(unix sofrware resource):与软件安装/执行有关;
  • /var(variable):与系统运作过程有关。

1)根目录(/)的意义

        根目录衍生出所有的目录,同时根目录也与开关机/还原/系统修复等动作有关。因为根目录是那么重要,所以在FHS的要求方面,他希望根目录不要放在非常大的分割槽内,因为越大的分割槽你会放入越多的资料,如此一来根目录所在的分割槽就可能会有较多发生错误的机会。

        因此FHS标准建议:根目录(/)所在分割槽越小越好,且应用程序所安装的软件最好不要与根目录放在同一个分割槽内,保持根目录越小越好。如此不但性能较佳,根目录所在的档案系统也较不容易发生问题。

        根据上述的说明,因此FHS定义出根目录(/)底下应该要有如下这些此目录的存在才好,即使没有实体目录,FHS也希望至少有链接文档存在才好:

目录 应放置文件内容
第一部份: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有权利修改。FHS建议不要放置可执行文件(binary)在这个目录中。比较重要的文件有:/etc/modprobe.d/, /etc/passwd, /etc/fstab, /etc/issue 等等。另外 FHS 还规范几个重要的目录最好要存在/etc目录下:
  • /etc/opt(必要):这个目录放置第三方然间/opt的相关设置文件
  • /etc/X11/(建议):与 X Window 有关的各种设置文件都在这里,尤其是 xorg.conf 这个 X Server 的设置文件。
  • /etc/sgml/(建议):与 SGML 格式有关的各种设置文件
  • /etc/xml/(建议):与 XML 格式有关的各种设置文件
/lib 系統的函式库非常的多,而/lib放置的则是在开机时会用到的函数库, 以及在/bin或/sbin底下的指令会调用的函数库而已。 什么时函数库呢?你可以将他想成是『外挂』,某些指令必须要有这些『外挂』才能够順利完成程序的执行。 另外 FHS 还要求底下的目录必须要存在:
  • /lib/modules/:這個目錄主要放置可抽換式的核心相關模組(驅動程式)喔!
/media media是『软体』的英文,顾名思义,这个/media底下放置的就是可移除的设备啦! 包括软盘、光盘、DVD等等裝置都暂时挂载于此。常见的文件名有:/media/floppy, /media/cdrom等等。
/mnt 如果你想暂时挂载某些额外的装置,一般建议你放置在这个目录中。在很早的时候,这个目录与/media相同啦!只是有了/media之后,这个目录就用来暂时挂载用了。
/opt 这个是给第三方协助软件放置的目录。什麼是第三方協力軟體啊? 举例来说,KDE这个桌面管理系统是一个独立的技术,不过他可以安装到Linux系统中,因此KDE的软件就建议放置到此目录下了。 另外,如果妳想要自行安裝額外的軟體(非原本的distribution提供的),那麼也能夠將你的軟體安裝到這裡來。 不過,以前的Linux系統中,我們還是習慣放置在/usr/local目錄下呢!
/run 早期的 FHS 規定系統開機後所產生的各項資訊應該要放置到 /var/run 目錄下,新版的 FHS 則規範到 /run 底下。 由於 /run 可以使用記憶體來模擬,因此效能上會好很多!
/sbin Linux有非常多指令是用來設定系統環境的,這些指令只有root才能夠利用來『設定』系統,其他使用者最多只能用來『查詢』而已。 放在/sbin底下的為開機過程中所需要的,裡面包括了開機、修復、還原系統所需要的指令。 至於某些伺服器軟體程式,一般則放置到/usr/sbin/當中。至於本機自行安裝的軟體所產生的系統執行檔(system binary), 則放置到/usr/local/sbin/當中了。常見的指令包括:fdisk, fsck, ifconfig, mkfs等等。
/srv srv可以視為『service』的縮寫,是一些網路服務啟動之後,這些服務所需要取用的資料目錄。 常見的服務例如WWW, FTP等等。舉例來說,WWW伺服器需要的網頁資料就可以放置在/srv/www/裡面。 不過,系統的服務資料如果尚未要提供給網際網路任何人瀏覽的話,預設還是建議放置到 /var/lib 底下即可。
/tmp 這是讓一般使用者或者是正在執行的程序暫時放置檔案的地方。 這個目錄是任何人都能夠存取的,所以你需要定期的清理一下。當然,重要資料不可放置在此目錄啊! 因為FHS甚至建議在開機時,應該要將/tmp下的資料都刪除唷!
/usr 第二層 FHS 設定,後續介紹
/var 第二曾 FHS 設定,主要為放置變動性的資料,後續介紹
第二部份:FHS 建議可以存在的目錄
/home 這是系統預設的使用者家目錄(home directory)。在你新增一個一般使用者帳號時, 預設的使用者家目錄都會規範到這裡來。比較重要的是,家目錄有兩種代號喔:
  • ~:代表目前這個使用者的家目錄
  • ~dmtsai :則代表 dmtsai 的家目錄!
/lib<qual> 用來存放與 /lib 不同的格式的二進位函式庫,例如支援 64 位元的 /lib64 函式庫等
/root 系統管理員(root)的家目錄。之所以放在這裡,是因為如果進入單人維護模式而僅掛載根目錄時, 該目錄就能夠擁有root的家目錄,所以我們會希望root的家目錄與根目錄放置在同一個分割槽中。

事實上FHS針對根目錄所定義的標準就僅有上面的咚咚,不過我們的Linux底下還有許多目錄你也需要瞭解一下的。 底下是幾個在Linux當中也是非常重要的目錄喔:

目錄 應放置檔案內容
/lost+found 這個目錄是使用標準的ext2/ext3/ext4檔案系統格式才會產生的一個目錄,目的在於當檔案系統發生錯誤時, 將一些遺失的片段放置到這個目錄下。不過如果使用的是 xfs 檔案系統的話,就不會存在這個目錄了!
/proc 這個目錄本身是一個『虛擬檔案系統(virtual filesystem)』喔!他放置的資料都是在記憶體當中, 例如系統核心、行程資訊(process)、周邊裝置的狀態及網路狀態等等。因為這個目錄下的資料都是在記憶體當中, 所以本身不佔任何硬碟空間啊!比較重要的檔案例如:/proc/cpuinfo, /proc/dma, /proc/interrupts, /proc/ioports, /proc/net/* 等等。
/sys 這個目錄其實跟/proc非常類似,也是一個虛擬的檔案系統,主要也是記錄核心與系統硬體資訊較相關的資訊。 包括目前已載入的核心模組與核心偵測到的硬體裝置資訊等等。這個目錄同樣不佔硬碟容量喔!

2)usr的意义与内容

        依据FHS的基本定义,/usr里面放置的资料属于可分享的与不可变动的(shareable,static)。

        很多读者都会误解/usr为user的缩写,其实usr时Unix Software Resource的缩写,也就是[Unix操作系统软件资源]所放置的目录,而不是使用者的资料啦!这个要注意。FHS建议所有软件开发者,应该将他们的资料合理的分别放置到这个目录下的次目录,而不要自己建立该软件自己独立的目录。

        因为所有系统的软件(distribution发布者提供的软件)都会放置到/usr底下,因此这个目录有点类似Windows系统的[C:\\Windows\\(当中的一部分)+C:\\Program files\\]这两个目录的综合体,系统刚安装完毕时,这个目录会占用最多的硬盘容量。一般来说,/usr的子目录建议有底下这些:

目录 应放置文件内容
第一部份:FHS 要求必須要存在的目錄
/usr/bin/ 所有一般用戶能夠使用的指令都放在這裡!目前新的 CentOS 7 已經將全部的使用者指令放置於此,而使用連結檔的方式將 /bin 連結至此! 也就是說, /usr/bin 與 /bin 是一模一樣了!另外,FHS 要求在此目錄下不應該有子目錄!
/usr/lib/ 基本上,與 /lib 功能相同,所以 /lib 就是連結到此目錄中的!
/usr/local/ 系統管理員在本機自行安裝自己下載的軟體(非distribution預設提供者),建議安裝到此目錄, 這樣會比較便於管理。舉例來說,你的distribution提供的軟體較舊,你想安裝較新的軟體但又不想移除舊版, 此時你可以將新版軟體安裝於/usr/local/目錄下,可與原先的舊版軟體有分別啦! 你可以自行到/usr/local去看看,該目錄下也是具有bin, etc, include, lib...的次目錄喔!
/usr/sbin/ 非系統正常運作所需要的系統指令。最常見的就是某些網路伺服器軟體的服務指令(daemon)囉!不過基本功能與 /sbin 也差不多, 因此目前 /sbin 就是連結到此目錄中的。
/usr/share/ 主要放置唯讀架構的資料檔案,當然也包括共享文件。在這個目錄下放置的資料幾乎是不分硬體架構均可讀取的資料, 因為幾乎都是文字檔案嘛!在此目錄下常見的還有這些次目錄:
  • /usr/share/man:線上說明文件
  • /usr/share/doc:軟體雜項的文件說明
  • /usr/share/zoneinfo:與時區有關的時區檔案
第二部份:FHS 建议可以存在的目录
/usr/games/ 與遊戲比較相關的資料放置處
/usr/include/ c/c++等程式語言的檔頭(header)與包含檔(include)放置處,當我們以tarball方式 (*.tar.gz 的方式安裝軟體)安裝某些資料時,會使用到裡頭的許多包含檔喔!
/usr/libexec/ 某些不被一般使用者慣用的執行檔或腳本(script)等等,都會放置在此目錄中。例如大部分的 X 視窗底下的操作指令, 很多都是放在此目錄下的。
/usr/lib<qual>/ 與 /lib<qual>/功能相同,因此目前 /lib<qual> 就是連結到此目錄中
/usr/src/ 一般原始碼建議放置到這裡,src有source的意思。至於核心原始碼則建議放置到/usr/src/linux/目錄下。

3.2 目录树(directory tree)

        目录树的特性有:

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

技术分享图片

 


以上是关于[笔记]Linux的文件权限与目录配置的主要内容,如果未能解决你的问题,请参考以下文章

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

Linux的文件权限与目录配置

Linux的文件权限与目录配置

Linux文件权限与目录配置

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

Linux的文件权限与目录配置