刚开始了解linux的时候,在linux下面有很多的目录与文件,这个目录和文件到底代表什么意义呢?本文将对这个问题做出解释。
用户与用户组
在linux中,任何一个文件都具有用户(USER)、所属群组(GROUP)、其他人(OTHERS)三种身份的个别权限。
- 账号信息都记录在
/etc/passwd
- 密码记录在
/etc/shadow
- 组名都记录在
/etc/group
Linux的文件权限概念
linux文件属性
在linux中,以root用户的身份输入命令行ls -al
你就可以看到当前目录下列出的详细文件信息,包括隐藏文件(文件名第一个字符为【.】的文件)。现取出一条文件信息做详细解读:
- 文件类型权限:
- 链接数:表示有多少个文件名链接到此节点;
- 文件拥有者:表示文件(或目录)的拥有者账号;
- 文件的所属用户组:linux中,账号会加入一个或多个用户组中;
- 文件大小:文件的容量大小,默认为Bytes
- 文件日期:创建日期或或是文件最近被修改的日期
- 文件名:如果文件名之前多了一个【.】,则代表这个文件为隐藏文件。
如何修改文件属性与权限
-
chgrp:改变文件所属群组
注意:要被改变的组名必须要在
/etc/group
文件内存在才行,否则会报错chgrp [-R] dirname/filename ...
-
chown:改变文件拥有者
注意:用户必须时已经存在系统中的账号,
/etc/passwd
中chown [-R] 账号名称 文件或目录 chown [-R] 账号名称:组名 文件或目录
-
chmod:改变文件的权限,SUID、SGID、SBIT等特性
-
数字类型:
- read : r : 4
- write : w : 2
- execute : x : 1
-
符号类型:
命令 被修改身份 动作 权限 执行文件 chmod u (user)
g (group)
o (others)
a (all)+ (加入)
- (移除)
= (设置)r
w
x文件或目录
-
目录与文件的权限意义
权限对于文件的意义
对于文件的rwx来说,主要都是针对文件内容而言的,与文件名的存在与否没有关系。
- r:可读取文件的实际内容;
- w:可以编辑、新增或是修改该文件的内容(但不含删除该文件);
- x:该文件具有可以被系统执行的权限;
权限对于目录的意义
对于目录的rwx来说,主要都是针对文件名列表而言的,文件名与目录有强烈的关联。
- r:具有读取目录结构列表的权限;
- w:既有改动该目录结构列表的权限,如:
- 建立新的文件与目录;
- 删除已经存在的文件与目录(无论该文件权限如何);
- 移动该目录内的文件、目录位置
- x:表示用户能否进入该目录成为工作目录
linux文件种类与扩展名
文件种类
-
常规文件:【-】,一般进行读写的类型的文件,依据内容可分为:
- 纯文本文件:内容为人类可以直接读到的数据的文件;
- 二进制文件:linux中一些可执行文件(script,脚本文件不算)就是这种格式;
- 数据文件:程序在运行的过程中会读取某些特点格式的文件;
-
目录(directory):【d】;
-
链接文件(link):【l】,类似windows系统下面的快捷方式;
-
设备与设备文件(device):与系统周边及存储的一些文件,通常集中在
/dev
目录下;- 区块(block)设备文件:【b】,一些存储数据,以提供系统随机存取的接口设备;
- 字符(character)设备文件:【c】,一些穿行端口的接口设备,这些设备特点是一次性读取,不能够阶段输出。
-
数据接口文件(sockets):【s】,通常被用在网络上的数据交换;
-
数据输送文件(FIFO,pipe):【p】,特殊的文件类型,目的是解决多个程序同时读写一个文件所造成的错误问题。
文件扩展名
linux的文件没有所谓的扩展名,一个linux文件能不能被执行,与它第一栏的是个属性有关,与文件名没有一点关系;当权限当中具有x
的话,就表示这个文件具有可以被执行的能力;但是能不能执行成功还要看文件的内容;尽管如此,linux仍然希望借助文件扩展名来表示文件是什么类型,常用的扩展名有如下几个:
扩展名 | 描述 |
---|---|
*.sh | 脚本或批处理文件 |
*Z、*.tar、*.tar.gz、*.zip、*.tgz | 打包的压缩文件 |
*.html、*.php等 | 网页相关文件 |
文件名长度限制
单一文件或目录的最大容许文件名长度为255字节,以一个ascll英文占用一个字节来说,则大约可达255个字符长度。若是以每个汉字占用2字节来说,最大文件名就是大约在128个汉字之间。
文件名的限制
避免使用一些特殊的字符,如:
* ? > < ; & ! [] | \ ' " ` () {}
- 文件名以小数点【.】开头,表示隐藏文件;
- 文件名开头避免使用 【-】【+】来命令
Linux目录配置
linux目录配置的依据——FHS
FHS:Filesystem Hierarchy Standard缩写,其主要目的是希望让用户可以了解到以安装软件通常防止于哪个目录下。FHS依据文件系统使用的频繁与否是否允许随意修改,将目录定义成四种交互作用的形态:
可分享(shareable) | 不可分享(unshareable) | |
---|---|---|
不变(static) | /user(软件存放处) /opt(第三方辅助软件) |
/etc(配置文件) /boot(启动与内核文件) |
可变动(variable) | /var/mail(用户邮箱) /var/spool/news(新闻组) |
/var/run(程序相关) /var/lock(程序相关) |
- 可分享:可以分享给其它设备挂载使用的目录,如执行文件与用户的邮件等;
- 不可分享:自己机器运行的设备文件或是与程序相关的socket文件等;
- 不变:数据不经常变动,如函数库、文件说明、系统管理员管理的主机服务配置文件等;
- 可变动:经常修改的数据,如日志文件,一般用户可自行接受的新闻组等
事实上,FHS针对目录数架构仅定义了三层目录下面应该放什么数据:
/(root,根目录)
:与启动系统有关;/usr(unix software resource)
:与软件安装/执行有关;/var(variable)
:与系统运行过程有关
根目录(/)的意义与内容
FHS标准建议:根目录(/)所在分区应该越小越好,且应用程序所安装的软件最好不要与根目录放在同一个分区内,保持根目录越小越好。如此不但性能较佳,根目录所在的文件系统也较不容易发生问题。
根目录下,FHS要求必须存在的目录
目录 | 应放置文件内容 |
---|---|
/bin | 系统执行文件的目录 |
/boot | 主要放置启动会使用的文件 |
/dev | 任何设备与接口设备都以文件的形式存放在此目录中 |
/etc | 系统主要的配置文件 |
/lib | 系统启动时会用到的函数库,以及在/bin或/sbin下面的命令会调用的函数库 |
/media | 可删除的设备,包括:软盘、光盘、DVD等 |
/mnt | 防止暂时挂载的某些额外设备 |
/opt | 第三方辅助软件防止的目录 |
/run | 系统启动后所产生的各项信息应该防止/var/run 下,新版HFS则放在/run 下面 |
/sbin | 启动过程中所需要的,包括了启动、修复、还原系统所需要的命令 |
/srv | 网络服务启动后,服务所需要使用的数据目录 |
/tmp | 一般用户或正在执行的程序暂时放置文件的地方 |
/usr | 第二层HFS设置 |
/var | 第二层HFS设置 |
根目录下,HFS建议存在的目录
目录 | 应放置文件内容 |
---|---|
/home | 系统默认的用户家目录 |
/lib | 存放与/lib不同的格式的二进制函数库 |
/root | 系统管理员root的家目录 |
根目录下,其它重要目录
目录 | 应放置文件内容 |
---|---|
/lost+found | 当文件系统发生错误时,将一些遗失的片段放置到这个目录下,不过使用xfs文件系统,则不存在此目录 |
/proc | 虚拟文件系统,放置的数据都在内存中,不占任何硬盘空间 |
/sys | 虚拟文件系统,记录内核与硬盘信息相关的内容。包括目前已加载的内核模块与内核检测到的硬件设备信息等,不占硬盘容量 |
/usr
的意义与内容
usr:是UNIX SOFTWARE RESOURCE的缩写,就是unix操作系统软件所放置的目录。
一般来说,/usr的子目录建议有如下内容:
目录 | 应放置文件内容 |
---|---|
/usr/bin/ | 一般用户能够使用的命令,CentOS7将全部用户命令放在这里 |
/usr/lib/ | 与/lib功能相同,/lib就是链接到此目录中 |
/usr/local/ | 放置安装自己的下载软件 |
/usr/sbin/ | 非系统正常运行所需要的系统命令 |
/usr/share/ | 放置只读的数据文件,包括共享文件 |
/var
的意义与内容
/var目录主要针对经常性变动的文件,包括缓存、日志文件以及某些软件运行所产生的文件,包括程序文件(lock file、run file)或mysql数据库的文件等。常见的子目录有:
目录 | 应放置文件内容 |
---|---|
/var/cache/ | 应用程序运行过程中产生的缓存 |
/var/lib/ | 程序执行过程中,需要使用的数据文件 |
/var/lock/ | 某些设备或是文件资源一次只能被一个应用程序所使用,如果同时有两个程序使用该设备,就可能产生错误,因此给设备上锁确保设备只会给单一软件使用 |
/var/log/ | 很重要。日志文件放置目录,较重要文件:/var/log/messages、/var/log/wtmp(记录登录信息)等 |
/var/mail/ | 个人电子邮箱的目录 |
/var/run/ | 程序或是服务启动后,会将它们的PID放置在此目录 |
/var/spool/ | 通常放置一些队列数据,所谓的队列就是排队等待其他程序使用的数据,这些数据使用后会被删除。 |
目录树
centOS在根目录下有哪些数据
lrwxrwxrwx. 1 root root 7 Apr 21 2017 bin -> usr/bin
dr-xr-xr-x. 4 root root 4096 Apr 21 2017 boot
drwxr-xr-x 19 root root 3180 Oct 22 13:00 dev
drwxr-xr-x. 169 root root 12288 Dec 24 08:51 etc
drwxr-xr-x. 32 root root 4096 Nov 21 09:27 home
lrwxrwxrwx. 1 root root 7 Apr 21 2017 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 Apr 21 2017 lib64 -> usr/lib64
drwxr-xr-x. 2 root root 6 Jun 10 2014 media
drwxr-xr-x. 3 root root 18 Apr 24 2017 mnt
drwxr-xr-x. 9 root root 4096 Dec 3 15:06 opt
dr-xr-xr-x 509 root root 0 Oct 22 13:10 proc
dr-xr-x---. 21 root root 4096 Dec 30 13:33 root
drwxr-xr-x 50 root root 1380 Dec 24 09:57 run
lrwxrwxrwx. 1 root root 8 Apr 21 2017 sbin -> usr/sbin
drwxr-xr-x. 2 root root 6 Jun 10 2014 srv
dr-xr-xr-x 13 root root 0 Oct 22 13:10 sys
drwxrwxrwt. 76 root root 12288 Dec 30 15:31 tmp
drwxr-xr-x. 14 root root 4096 Apr 27 2017 usr
drwxr-xr-x. 25 root root 4096 Oct 22 13:10 var
绝对路径与相对路径
- 绝对路径:由根目录开始写起的文件名或目录名称。
- 相对路径:相对于目前路径的文件名写法。
两个特殊的目录
- 【.】:代表当前的目录,也可以使用【./】来表示
- 【…】:代表上一层目录,也可以【…/】来代表