Linux学习笔记Part2 Linux文件、目录与磁盘格式(1)

一、文件权限与目录配置

1、用户类型

(1)文件拥有者

(2)用户组

(3)其他人

(4)root 最高权限用户

​ 切换至root用户:su指令

用户信息记录在/etc/passwd 个人密码记录在/etc/shadow 组名记录在/etc/group

2、文件权限

(1)文件属性

范例:通过ls -al 指令获得的信息

​ -rw-r–r--. 1 root root 1864 May 4 18:01 initial-setup-ks.cfg

​ 文件类型权限 链接数 文件拥有者 文件所属用户组 文件大小 文件最后修改时间 文件名

第一栏代表文件权限类型:

​ -rwxrwx—

​ 文件权限类型由十个字符组成

首字符代表这个文件是目录、文件或链接文件:

  • ​ d为目录、-为文件、l为链接文件、b为设备文件里面的可供存储的周边设备、c为串行端口设备

接下来的字符中,三个为一组,且均为[rwx]的三个参数组合。

  • ​ r代表可读、w代表可写、x代表可执行
  • ​ 权限的位置不会改变,如果没有权限,则会出现符号-
  • ​ 第一组为文件拥有者可具备的权限
  • ​ 第二组为加入此用户组账号的权限
  • ​ 第三组为非本人且没有加入本用户组的其他账号的权限(其他人)
第二栏代表有多少个文件名链接到该节点
第三栏代表这个文件(或目录)的拥有者账号
第四栏表示这个文件的所属用户组
第五栏为这个文件的容量大小,默认单位为Bytes
第六栏为这个文件的创建日期或是最近修改日期
第七栏为这个文件名
  • ​ 如果文件名之前多了一个. 代表这个文件为隐藏文件
文件权限的重要性:
  • 系统保护的功能
  • 团队开发软件或数据共享的功能
  • 安全性

(2)修改文件权限与属性

chgrp:修改文件所属用户组
chgrp [-R] dirname/filename ...
参数:
	-R : 进行递归( recursive )的持续变更,亦即连同次目录下的所有档案、目录都更新成为这个群组之意。常常用在变更某一目录的情况。 
范例:
[root@linux ~]# chgrp users install.log
[root@linux ~]# ls -l
-rw-r--r-- 1 root users 68495 Jun 25 08:53 install.log
[root@linux ~]# chgrp testing install.log
chgrp: invalid group name `testing' <== 发生错误讯息啰~找不到这个群组名~ 
chown:修改文件拥有者
chown [-R] 账号名称 文件或目录
chown [-R] 账号名称:用户组名称 文件或目录
参数:
	-R : 进行递归( recursive )的持续变更,亦即连同次目录下的所有档案、目录都更新成为这个群组之意。常常用在变更某一目录的情况。
范例:
[root@linux ~]# chown bin install.log
[root@linux ~]# ls -l
-rw-r--r-- 1 bin users 68495 Jun 25 08:53 install.log
[root@linux ~]# chown root:root install.log
[root@linux ~]# ls -l
-rw-r--r-- 1 root root 68495 Jun 25 08:53 install.log
chmod:修改文件权限

Linux文件的基本权限就有9个,分别是拥有者、所属用户组、其他人,三种身份各自有自己的读,写,执行。

每个权限的数字对于如下:

  • r: 4
  • w: 2
  • x: 1

每种身份各自的三个权限数字是累加的:

例子:当属性为 [-rwxrwx—]

拥有者 = rwx = 4+2+1 = 7
所属用户组 = rwx = 4+2+1 = 7
其他人= — = 0+0+0 = 0

所以我们设置权限时,该文件的权限数字就是770

chmod命令的语法为:

chmod [-R] xyz 档案或目录
参数:
xyz : 就是刚刚提到的数字类型的权限属性,为 rwx 属性数值的相加。
-R : 进行递归( recursive )的持续变更,亦即连同次目录下的所有档案、目录
 都更新成为这个群组之意。常常用在变更某一目录的情况。 

例子:如果要将 .bashrc 这个档案所有的属性都打开,那么就下达:
[root@linux ~]# ls -al .bashrc
-rw-r--r-- 1 root root 395 Jul 4 11:45 .bashrc
[root@linux ~]# chmod 777 .bashrc
[root@linux ~]# ls -al .bashrc
-rwxrwxrwx 1 root root 395 Jul 4 11:45 .bashrc 

那如果要将属性变成『 -rwxr-xr-- 』呢?那么就成为 [4+2+1 ] [4+0+1] [4+0+0]=754,所以你需要下达chmod 754 filename。

另一种修改方式:

  • 三种身份(拥有者user,用户组group,其他人other)分别对应字母u, g, o以及所有身份(all)对于字母a
  • 权限可以写成r,w,x
  • 添加某个权限使用符号+
  • 移除某个权限使用符号-
  • 设置某个权限使用符号=

例子:要设置某个文件权限成为[-rwxr-x-r-x]时:

user:具有可读可写可执行的权限

group与other:具有可读与执行的权限

[root@linux ~]# chmod u=rwx,go=rx .bashrc
# 注意喔!那个 u=rwx,go=rx 是连在一起的,中间并没有任何空格符!
[root@linux ~]# ls -al .bashrc
-rwxr-xr-x 1 root root 395 Jul 4 11:45 .bashrc 

那么如果是『 -rwxr-xr-- 』? 可以使用『 chmod u=rwx,g=rx,o=r filename 』来设定。

如果不知道文件原先的属性,只想添加每个人均可写入的权限:

root@linux ~]# ls -al .bashrc
-rwxr-xr-x 1 root root 395 Jul 4 11:45 .bashrc
[root@linux ~]# chmod a+w .bashrc
[root@linux ~]# ls -al .bashrc
-rwxrwxrwx 1 root root 395 Jul 4 11:45 .bashrc 

如果是要将权限去掉而不修改其他已存在的权限,例如要拿掉全部人的可执行权限:

[root@linux ~]# chmod a-x .bashrc
[root@linux ~]# ls -al .bashrc
-rw-rw-rw- 1 root root 395 Jul 4 11:45 .bashrc

(3)目录与文件权限意义

文件的权限意义:
  • r:可读取此文件的实际内容
  • w:可以编辑、新增或是修改该文件的内容(但不包含删除该文件)
  • x:该文件具有可以被系统执行的权限
目录的权限意义:
  • r:表示具有读取目录结构列表的权限,可以查询该目录下的文件名数据,可以通过ls命令将该目录的内容列表显示出来
  • w:表示具有改动该目录结构列表的权限:建立新的文件与目录、删除已经存在的文件与目录、将已存在的文件或目录更名、移动该目录内的文件、目录位置
  • x:代表用户能否进入该目录成为工作目录

(4)Linux文件种类与拓展名

文件种类
  • 常规文件:第一个符号为- 。包括:纯文本文件(ASCLL)、二进制文件(binary)、数据文件(data)
  • 目录:第一个符号为d。
  • 链接文件:第一个属性为l,类似windows系统的快捷方式
  • 设备与设备文件:通常集中在/dev目录下。区块设备文件:第一个属性为b, 提供系统随机存取的接口设备。字符设备文件:第一个属性为c,串行端口的接口设备
  • 接口数据文件:第一个属性为s,通常用于网上的数据交换,常见于/tmp或/run
  • 数据输送文件:第一个属性为p, 主要用于解决多个程序同时读写一个文件所造成的错误问题
Linux文件扩展名
  • LInux文件没有所谓的扩展名,一个Linux程序能否被执行,与它的第一栏的十个属性相关,与文件名无关。只要你的权限中具有x,代表这个文件具有可以被执行的能力。
Linux文件名长度限制
  • 单一文件或目录的最大容许文件名为255字节,以一个ASCII英文占用一个字节来说,则可达255个字符长度。若是以每个汉字占用两个字节来说,最大文件名就是大约在128个汉字之间。
Linux文件名限制
  • 避免特殊字符
* ? > < ; & ! [ ] | \ ' " ` ( ) { }
  • 同时最好避免以-或+开头

3、Linux目录配置

(1)Linux目录配置的依据——FHS

目的:希望让用户可以了解到已安装软件通常放置于哪个目录下
事实上仅是规范出在根目录 ( / ) 底下各个主要的目录应该是要放置什么样的目录。FHS 定义出两层规范出来:
  • ​ 第一层是 / (根目录:与系启动系统相关)底下的各个目录应该要放置什么样内容的档案数据。
  • ​ 第二层则是针对 /usr(unix software resource:与软件安装、执行相关) 及 /var(variable:与系统运行过程有关) 这两个目录的次目录来定义的。
FHS定义的四种目录作用交互形态:
  • 可分享的:可以分享给其它系统挂载使用的目录
  • 不可分享的:自己机器上面运作的设备文件或者与程序有关的socket文件等,由于仅与自身机器有关,所以当然就不适合分享给其它主机了
  • 可变动的:经常改变的数据,例如登录文件、一般用户可自行收受的新闻组等
  • 不可变动的:有些数据是不会经常变动的,跟随着 distribution 而不变动。 例如函数库、文件说明文件、系统管理员所管理的主机服务配置文件等等
根目录(/)的意义和内容

​ 与系启动系统相关

​ 意义:根目录是整个系统最重要的一个目录,因为不但所有的目录都是由根目录衍生出来的, 同时根目录也与开机/还原/系统修复等动作有关。

​ FHS建议:根目录所在分区越小越好,且应用程序所安装的软件最好不要与根目录放在统一个分区内,如此不但性能较好,根目录所在文件系统也较不容易发生问题。

FHS要求必须存在的目录:

  • /bin:放置的是在单用户维护模式下还能够被操作的指令

  • /boot:放置的是开机会使用到的文件

  • /dev:放置的设备文件,访问这个目录下的某个文件就等于访问某个设备

  • /etc:放置的是系统主要的配置文件

  • /home:这是系统默认的用户主文件夹,主文件夹有两种代号:~ 代表当前这个用户的主文件夹,~boatman 代表boatman这个用户的主文件夹

  • /lib:系统的函数非常多,而/lib放置的则是在系统开机时会用到的函数库,以及在/bin或/sbin下面的命令会调用的函数库尤其关注/lib/modules这个目录,其下面会放置内核相关的模块(驱动程序)

  • /media:放置的是可删除设备对应的文件;包括:光盘、DVD等设备都暂时挂载于此

  • /mnt:如果你想要暂时挂载某些额外的装置,一般建议你可以放置到这个目录中;在比较早的时候,这个目录的用途与/media相同啦!只是有了/media之后,这个目录就用来暂时挂载用了

  • /opt:第三方软件安装目录(不过,以前的 Linux 系统中,我们还是习惯放置在/usr/local 目录下呢)

  • /root:系统超级管理员(root)的主文件夹(之所以放在这里,是因为如果进入单用户维护模式而仅挂载根目录时,根目录就能够拥有 root 的主文件夹,所以我们会希望root的主文件夹与根目录放置在同一个分区中)

  • /sbin:放置的是开机过程中所需要的命令,里面包括了开机、修复、还原系统所需要的命令
    至于某些服务器软件程序,一般则放置到/usr/sbin/当中
    至于本机自行安装的软件所产生的系统执行文件(system binary), 则放置到/usr/local/sbin/当中

  • /srv:srv 可以视为“service”的缩写,是一些网络朋务启动之后,这些朋务所需要取用的数据目录(例如WWW服务需要的网页数据就可以放置在/srv/www/里面)

  • /tmp:系统临时程序、数据目录

  • /usr:与软件安装、执行相关

  • /var:与系统运行过程有关

不在FHS中定义也非常重要的目录:

  • /lost+found:这个目录是使用标准的 ext2/ext3/ext4 文件系统格式才会产生的一个目彔,目的在于当文件系统发生错误时, 将一些遗失的片段放置到这个目录下,不过如果使用的是xfs文件系统的话,就不会存在这个目录
  • /proc:这个目录本身是一个虚拟文件系统,他放置的数据都是在内存当中, 例如系统内核、进程信息、外接设备的状态及网络状态等。因为这个目彔下的数据都是在内存当中, 所以本身不占任何硬盘空间。
  • /sys:这个目录其实跟/proc 非常类似,也是一个虚拟的文件系统,主要也是记录与内核相关的信息。 包括目前已加载的内核模块与内核侦测到的硬件设置信息等等。这个目录同样不占硬盘容量
/usr的意义与内容

​ 与软件安装、执行相关

​ /usr 里面放置的数据属于可分享的不可变动的(shareable, static), 如果你知道如何通过网络进行分区的挂载(NFS 朋务器),那么/usr 确实可以分享给局域网络内的其它主机来使用

​ FHS 建议:软件开发者,应该将他们的数据合理的分别放置到这个目录下的子目录,而不要自行新建该软件自己的独立的目录

​ FHS要求必须存在的目录:

  • /usr/bin/所有一般用户能够使用的命令都放在这里、目前新的CentOS 7 已将全部的用户命令放置于此,而使用链接文件的范式将/bin链接至此。也就是说,/usr/bin与/bin是一模一样的。此外,FHS要求在此目录下不应该有子目录。
  • /usr/lib/:基本上与/lib功能相同,所以/lib就是链接到此目录的
  • /usr/local:系统管理员在本机自行安装自己下载的软件(非发行版默认提供),建议安装到此目录, 这样会比较便于管理。
  • /usr/sbin/:非系统正常运作所需要的系统指令,最常见的就是某些网络服务器软件的服务指令(daemon)。不过基本功能与/sbin差不多,因此目前/sbin就是链接到此目录中的
  • /usr/share/:主要放置只读的数据文件,包括共享文件,在这个目录下放置的数据几乎是不分硬件架构均可读取的数据。此目录下常见子目录:/usr/share/doc:软件的说明文件;/usr/share/man:在线帮助文档;/usr/share/zoneinfo:与时区有关的时区文件
/var的意义与内容

​ 系统运行过程有关

​ /var 是在系统运作后才会渐渐占用硬盘容量的目录,因为/var 目彔主要针对经常性变动的文件,包括缓存(cache)、登彔文件(log file)以及某些软件运作所产生的文件, 包括程序文件(lock file, run file),或者例如 MySQL 数据库的文件等。

​ FHS要求必须存在的目录:

  • /var/cache/:应用程序本身运作过程中会产生的一些缓存
  • /var/lib/:程序本身执行的过程中,需要使用到的数据文件放置的目录。在此目彔下各自的软件应该要有各自的目录。
  • /var/lock/:某些设备或者是文件资源一次只能被一个应用程序所使用,如果同时有两个程序使用该装置时, 就可能产生一些错误的状况,因此就得要将该装置上锁(lock),以确保该装置只会给单一软件所使用。
  • /var/log/:非常重要,这是日志文件放置的目录,里面比较重要的文件有/var.log.messages、/var/log/wtmp(登录记录信息)等。
  • /var/mail/:放置个人电子邮件信箱的目录,不过这个目彔也被放置到/var/spool/mail/目彔中! 通常这两个目录是互为链接文件
  • /var/run/:某些程序或者是服务启动后,会将他们的 PID 放置在这个目录下
  • /var/spool/:这个目录通常放置一些队列数据,所谓的队列就是排队等待其他程序使用的数据, 这些数据被使用后通常都会被删除。
    如果是计划任务数据(crontab),就会被放置到/var/spool/cron/目录中

(2)目录树

在 Linux 下,所有的文件与目录都是由根目录 / 开始,那是所有目录与档案的源头,然后再一个一个的分支下来,有点像是树枝状。因此,我们也称这种目录配置方式为:目录树 (directorytree)。
特性:
  • 目录树的启始点为根目录 (/, root);
  • 每一个目录不止能使用本地分区的文件系统,也可以使用网络上的文件系统。
  • 每一个文件在此目录树中的文件名(包含完整路径)都是独一无二的。

例子:CentOS根目录下的数据

[lqq@localhost ~]$ ls -l /
总用量 32
lrwxrwxrwx.   1 root root    7 2月   4 12:08 bin -> usr/bin
dr-xr-xr-x.   5 root root 4096 2月  19 11:01 boot
drwxr-xr-x.   4 root root   28 2月  17 19:14 data
drwxr-xr-x.  20 root root 3380 2月  20 11:40 dev
drwxr-xr-x. 141 root root 8192 2月  20 11:40 etc
drwxr-xr-x.   5 root root   41 2月  20 11:55 home
lrwxrwxrwx.   1 root root    7 2月   4 12:08 lib -> usr/lib
lrwxrwxrwx.   1 root root    9 2月   4 12:08 lib64 -> usr/lib64
drwxr-xr-x.   2 root root    6 4月  11 2018 media
drwxr-xr-x.   3 root root   18 2月   6 20:31 mnt
drwxr-xr-x.   5 root root   46 2月   4 12:37 opt
dr-xr-xr-x. 244 root root    0 2月  20 11:39 proc
dr-xr-x---.  10 root root 4096 2月  20 11:46 root
drwxr-xr-x.  43 root root 1320 2月  20 11:45 run
lrwxrwxrwx.   1 root root    8 2月   4 12:08 sbin -> usr/sbin
drwxr-xr-x.   4 root root   71 2月  19 11:01 srv
dr-xr-xr-x.  13 root root    0 2月  20 11:39 sys
drwxrwxrwt.  52 root root 8192 2月  20 12:10 tmp
drwxr-xr-x.  13 root root  155 2月   4 12:08 usr
drwxr-xr-x.  20 root root  282 2月   4 12:18 var

(3)相对路径和绝对路径

绝对路径:由根目录 (/) 开始写起的文件名或目录名称, 例如 /home/dmtsai/.bashrc
相对路径:相对于目前路径的文件名写法。 例如 ./home/dmtsai 或 …/…/home/dmtsai/

​ 开头不是 / 就属于相对路径的写法

两个特殊的目录:
  • . :代表当前的目录,也可以使用 ./ 来表示。
  • … :代表上一层目录,也可以 …/ 来代表。
例子:您目前在 /home 这个目录下, 如果想要进入 /var/log 这个目录时,可以怎么写呢?
  • cd /var/log
  • cd …/var/log

二、Linux文件与目录管理

猜你喜欢

转载自blog.csdn.net/Qingyuyuehua/article/details/113883935
今日推荐