来自:《鸟哥的Linix私房菜-基础篇》
复制代码
Linux的目录配置依据的是FHS,那什么是FHS呢?因为利用Linux来开发的产品或DISTRIBUTION的社群或公司还有个人实在是太多了,如果每个人都用自己的想法来配置文件放置的目录,那真是太糟糕了,因此Filesystem Hierarchy Standard(FHS) 标准出炉了!
他们的目的是想让使用者可以了解到已安装软件通常放置于哪个目录下,所以他们希望独立的软件开发商、操作系统制作者、想要维护系统的用户都能遵循FHS标准,也就是规范每个目录下应该存放什么样的文件数据,统一目录架构。
FHS根据文件系统使用的频繁与否与是否允许使用者随意变动,将目录定成了四种交互形态:可分享、不可分享、可变动、不可变动。
可分享的(shareable) | 不可分享的(unshareable) | |
---|---|---|
不变的(static) | /usr(软件放置处) | /etc(配置文件) |
不变的(static) | /opt(第三方协力软件) | /boot(开机与核心档) |
可变的(variable) | /var/mail(使用者邮箱) | /var/run(程序相关) |
可变的(variable) | /var/spool/news(新闻组) | /var/lock(程序相关) |
可分享的:可分享给其他系统挂载使用的目录; 不可分享的:自己机器上面运作的装置文件或与程序相关的文件等。 不变的:数据不会经常变动,跟随着distribution而不变动;如函数库、系统配置文件等。 可变的:经常改变的数据,例如登录文件、新闻组等。
·/(root,根目录):与开机系统有关。 ·/usr(unix software resource):与软件安装/执行有关。 ·/var(variable):与系统运作过程有关。
一./
根目录是整个系统中最重要的一个目录,所有的目录都是用根目录衍生的,根目录不要放在非常大的分区槽内,因为分区槽越大,那放入的数据就越多,这样以来根目录所在的分区槽就可能发生较多的错误了。
建议:根目录不用太大,且应用程序所安装的软件也不要与根目录放在同一个分区槽内,保持根目录的简洁,这样性能不但会更好,也不太容易发生问题。
FHS要求必须要存在的目录:/bin(能被root和一半用户使用,主要有:cat,chmod,chgrp,chown,date,mv,mkdir,cp,bash等等常用命令;现在的很多Linux都将/bin变成了/usr/bin的链接档了,也就是说/bin和/usr/bin是一样的),/boot(主要存放开机会使用到的文件),/dev,/etc(系统的配置文件存放目录,例如用户的账户密码文件等,普通用户可查阅,但只有root用户可修改),/lib(函数库),/media,/mnt,/opt,/run,/sbin,/srv,/tmp,/usr,/var.
FHS建议存在的目录:/home(用户默认的家目录),/lib(用来存在与/lib不同格式的二进制函数库,例如支持64位的/lib64函数库等),/root(系统管理员root的家目录)
二./usr
根据FHS的定义,这里面放的数据属于可分享和不可变的,/usr是可分享给局域网内的其他主机来使用的喔!
不要误认为/usr就是user哦,/usr是Unix Software Resource的缩写哦,也就是Unix操作系统软件资源 的意思。建议所有开发人员,将他们的数据合理的分别放在这个目录的次目录下,而不要自行建立该软件自己独立的目录哦。
所有系统默认的软件都会放在/usr目录下,因此这个目录有点类似windows的C:\Windows(当中的一部分) + C:\Program files\这2个目录的综合体,也就是说软件应该安装在usr目录下。
三. /var
/var的目录会越来越大,因为/var存放的主要是一些动态性文件,比如cache、log file以及某些软件运行所产生的文件,比如mysql数据库的文件等。
CentOS7对目录的变动
CentOS7将一些原本在根目录下的数据全部都搬迁到了/usr下:
- /bin --> /usr/bin
- /sbin --> /usr/sbin
- /lib --> /usr/lib
- /lib64 --> /usr/lib64
- /var/lock --> /run/lock
- /var/run --> /run
目录树
在Linux下所有目录和文件都是由根目录开始的,那是所有目录和文件的源头~,然后再一个个的分支下去,我们叫这种目录配置方式为:目录树。
- 目录树的起始点为根节点(/,root);
- 每一个目录不止能使用本地端的文件系统,也可以使用网络上的filesystem。
- 每一个文件在此目录中的文件名都是独一无二的。(包括完整路径)
根据FHS的定义,最好将/var独立出来,这样对于系统的数据还有一些安全性的保护呢!至少/var发生错误了不会影响到根目录,还可以进入救援模式!
绝对路径和相对路径
根据写法不同,可以将路径分为绝对路径和相对路径:
- 绝对路径:由根目录开始写起到目录/文件为止,例如:/home/[User_File_Name]/.bashrc;
- 相对路径:相对于当前路径的写法,例如:./home/[User_File_Name]或者../../;反正开头不是根目录开始的就属于相对路径的写法了。
相对路径是以你当前所在路径而言的;举例来说,你在/home目录,想要进入到/usr/bin目录,相对路径则可以这样写啊:cd ../usr/bin。绝对路径则可以这样写:cd /usr/bin。
这里需要解释一下, 一个.(.)代表的是当前目录,两个.(..)代表的是上一层目录;还有一点需要特别注意:在root目录,也就是根目录(/)下,.和..都代表的是当前目录哦。
这里对Linux的权限和目录配置做一个总结
- Linux的每个文件中,可分别给予使用者、群组、其他人三种身份分别授予所需的rwx权限;
- 群组是最有用的功能之一,可以给每个账户分配不同的群组,且每个账户可以拥有多个群组,以获得所需的资源。
- 利用ls -l来显示文件的权限属性,分别由:文件的额权限、文件类型、拥有者及所属群组、时间、文件/目录名。
- 如果文件/目录之前有一个.,则代表这个文件/目录是一个隐藏文件/目录.
- 切换到root账户的命令:su -,如果是进入普通用户的命令:su - userName;退出当前账户的命令:exit。
- 更改文件的群组命令:chgrp,更改文件的拥有者命令:chown,更改文件的权限命令:chmod。
- chmod修改权限的方法有2种,一种是数字发,一种是符号法,数字法中r,w,x分别对应4,2,1;例如:chmod 751 test,就是对test文件/目录修改权限为 rwxr-x--x,7就是rwx权限:4+2+1=7;5就是r-x权限:4+0+1=5;1就是--x权限:0+0+1=1;符号法更改例子:chmod u=rwx;g=rx;o=x test,u代表拥有者,g代表群组,o代表其他人身份。
- rwx对于文件的意义:r-可读取文件内容;w-可对文件的内容进行编辑、修改、新增(删除文件需要上一级目录的支持-是否具有w权限);x-该文件具有可执行权限。rwx对于目录的意义:r-可读取目录内的文件名列表;w-修改目录(可以对目录下的文件进行删除,可以新增文件等权限);x-代表可进入。
- 开开放目录给别人,至少需要r和x权限,w不能随意给。
- 要想读到文件的内容,文件所在的目录至少要有x权限,文件至少需要r权限。
- Linux文档名的限制:单一文件/目录的最大容许255个英文字符或128个汉字。
- 根据FHS官方文件指出:他们的主要目的就是希望让使用者可以了解到以安装的软件通常在哪个目录下。
- FHS订出来的四种目录特色:shareable、unshareable、static、variable四大类。
- FHS定义的三层主目录为:/、/var、/usr。
- 绝对路径都是以/开头写起,否则就是相对路径了。