Linux - 配置与管理文件系统

2023-11-30T14:00:00

认识文件系统

一.Linux系统支持数十种的文件系统,常见:
1.Ext4:Ext3的改进版本,作为RHEL 6系统中的默认文件管理系统,它支持的存储容量高达1EB(1EB=1 073 741 824GB),且能够有无限多的子目录。
2.XFS:是一种高性能的日志文件系统,而且是RHEL 7中默认的文件管理系统。
RHEL 8系统中一个比较大的变化就是使用了XFS作为文件系统,XFS文件系统可支持高达18EB的存储容量。

二.Linux系统中的文件存储目录结构:

/:Linux的根目录
bin:可执行文件目录,存放用户的可运行程序,如:ls,cp等,也包含其他shell,如bash和cs等
boot:引导目录,开机所需文件,内核,开机菜单以及所需配置文件等
dev:以文件形式存放任何设备与接口
etc:配置文件
home:用户家目录
/lib 开机时用到的函数库,以及/bin与/sbin下面的命令要调用的函数
/sbin 开机过程中需要的命令
/media 用于挂载设备文件的目录
/opt 放置第三方的软件
/root 系统管理员的家目录
/srv 一些网络服务的数据文件目录
/tmp 任何人均可使用的“共享”临时目录

三.理解绝对路径与相对路径
绝对路径:由根目录(/)开始写起的文件名或目录名称,如/home/dmtsai/basher。
相对路径:相对于目前路径的文件名写法,如./home/dmtsai或../../home/dmtsai/等。
如果想要进入/var/log这个目录时,可以怎么写呢?有两种方法。
cd /var/log:绝对路径。
cd ../var/log:相对路径。

四.理解文件和文件权限
1.文件是操作系统用来存储信息的基本结构,是一组信息的集合。
2.与其他操作系统相比,Linux最大的不同就是没有“扩展名”的概念,也就是说文件的名称和该文件的种类并没有直接的关联。例如,sample.txt可能是一个运行文件,而sample.exe也有可能是文本文件,甚至可以不使用扩展名。
3.另一个特性是Linux文件名区分大小写。例如,sample.txt、Sample.txt、SAMPLE.txt、samplE.txt在Linux系统中都代表不同的文件。
在Linux中的每一个文件或目录都包含有访问权限,这些访问权限决定了谁能访问和如何访问这些文件和目录。
4.根据赋予权限的不同,3种不同的用户(所有者、用户组或其他用户)能够访问不同的目录或者文件。
5.每一个用户针对系统中的所有文件都有它自身的读、写和执行权限。

上面列出了各种文件的详细信息,共分7组。各组信息的含义如图所示。

(1)第1组为文件类型权限
每一行的第一个字符一般用来区分文件的类型,一般取值为d、-、l、b、c、s、p。
d:
-:
l:链接文件
b:区块文件
c:
s P:管道文件
每一行的第2~10个字符表示文件的访问权限:
字符2、3、4表示该文件所有者的权限
字符5、6、7表示该文件所有者所属组的组成员的权限
字符8、9、10表示该文件所有者所属组群以外的权限
(2)第2组表示有多少文件名连结到此节点(i-node)
每个文件都会将其权限与属性记录到文件系统的i-node中,这个属性记录的就是有多少不同的文件名连接到相同的一个i-node。
(3)第3组表示这个文件(或目录)的拥有者账号
(4)第4组表示这个文件的所属组
在Linux系统下,你的账号会附属于一个或多个的组中。举例来说明:class1、class2、class3均属于projecta这个组,假设某个文件所属的组为projecta,且该文件的权限为(-rwxrwx---),则class1、class2、class3 3人对于该文件都具有可读、可写、可执行的权限(看组权限)。但如果是不属于projecta的其他账号,对于此文件就不具有任何权限了。
(5)第5组为这个文件的容量大小,默认单位为bytes。
(6)第6组为这个文件的创建日期或者是最近的修改日期。
(7)第7组为这个文件的文件名
如果文件名之前多一个“.”,则代表这个文件为隐藏文件。

任务4-1 管理Linux文件权限

使用数字表示法修改权限
1.chmod命令:
chmod 选项 文件
所谓数字表示法是指将读取(r)、写入(w)和执行(x)分别以数字4、2、1来表示,没有授予的部分就表示为0,然后再把所授予的权限相加而成。
r:4
w:2
x:1
如下:
原 始 权 限 转换为数字 数字表示法

例如,为文件/etc/file设置权限:赋予拥有者和组群成员读取和写入的权限,而其他人只有读取权限。则应该将权限设为“rw-rw-r--”,而该权限的数字表示法为664,因此可以输入下面的命令来设置权限:

使用文字表达法修改权限
(1)文字表示法
使用权限的文字表示法时,系统用4种字母来表示不同的用户。
u:user,表示所有者。
g:group,表示属组。
o:others,表示其他用户。
a:all,表示以上3种用户。

使用下面3种字符的组合表示法设置操作权限。
r:read,可读。
w:write,写入。
x:execute,执行。

操作符号包括以下几种。
+:添加某种权限。
-:减去某种权限。
=:赋予给定权限并取消原来的权限。
以文字表示法修改文件权限时,上例中的权限设置命令应该为
[root@Server01 ~]# chmod u=rw,g=rw,o=r /etc/file
(2)利用chmod命令也可以修改文件的特殊权限
例如,要设置/etc/file文件的SUID权限的方法如下:
[root@Server01 ~]# ll /etc/file
-rw-rw-rw-. 1 root root 0 5月 20 23:15 /etc/file
[root@Server01 ~]# chmod u+s /etc/file
[root@Server01 ~]# ll /etc/file
-rwSrw-rw-. 1 root root 0 5月 20 23:15 /etc/file

(3)使用文字表示法的有趣实例
【例4-1】假如我们要“设定”一个文件的权限为-rwxr-xr-x时,所表述的含义如下。
user (u):具有可读、可写、可执行的权限。
group与others (g/o):具有可读与执行的权限。
[root@Server01 ~]# chmod u=rwx,go=rx .bashrc
注意: u=rwx,go=rx是连在一起的,中间并没有任何空格
[root@Server01 ~]# ls -al .bashrc
-rwxr-xr-x 1 root root 395 Jul 4 11:45.bashrc

任务4-2 修改文件与目录的默认权限与隐藏权限

在Linux的ext2/ext3/ext4文件系统下,除基本r、w、x权限外,还可以设定系统隐藏属性。设置系统隐藏属性使用chattr命令,而使用lsattr命令可以查看隐藏属性。

1.文件预设权限:umask
umask:用户在建立文件或目录时的默认权限值
注意: 默认情况下umask的值是0022,第一个0表示特殊权限(可以用umask命令查看),此时建立的文件默认权限是644(6-0,,6-2,6-2),建立的目录默认权限是755(7-0,7-2,7-2)
touch创建文件,makdir创建目录,默认目录才有执行权限

设定:
[root@Server01 ~]# umask
0022
[root@Server01 ~]# touch test1
[root@Server01 ~]# mkdir test2
[root@Server01 ~]# ll test*
-rw-r—-r—- 1 root root 0 Sep 27 00:25 test1
drwxr-xr-x 2 root root 4096 Sep 27 00:25 test2

2.利用umask
umask指定的就是用户在建立文件或目录时的默认权限值。
命令:umask _

3.设置文件隐藏属性
(1)chattr命令
功能:改变文件属性
a:系统只允许在这个文件之后追加数据,不允许任何进程覆盖或截断这个文件
i:不得任意改动文件或目录
//i示例
[root@localhost ~]# cd /tmp
[root@localhost tmp]# touch test1
[root@localhost tmp]# chattr +i test1
[root@localhost tmp]# rm test1
rm:是否删除普通空文件 'test1'?y
rm: 无法删除'test1': 不允许的操作
[root@localhost tmp]#

(2)lsattr命令
功能:显示文件隐藏属性。
语法:lsattr [-adR] ____(文件或目录)
-a:将隐藏的文件的属性也显示出来
-d:如果是目录,仅列出目录本身的属性而非目录内的文件名
-R:连同子目录的数据一并列出

任务4-3 使用文件访问控制列表

如果希望对某个指定的用户进行单独的权限控制,就需要用到文件的访问控制列表(ACL,Access Control List)

1.setfacl命令
setfacl命令用于管理文件的ACL规则,格式为“setfacl [参数] 文件名称”
使用setfacl命令可以针对单一用户或用户组、单一文件或目录来进行读/写/执行权限的控制。下面来设置用户在/root目录上的权限:

查看文件权限的最后一个点(.)变成了加号(+),这就意味着该文件已经设置了ACL。
[root@Server01 ~]# ls -ld /root
dr-xrwx---+ 14 root root 4096 May 4 2017 /root
删除: setfacl -b [目录]

2.getfacl命令
显示在xx目录上设置的所有ACL信息
示例(显示在root管理员家目录上设置的所有ACL信息):
[root@localhost 桌面]# getfacl /root
getfacl: Removing leading '/' from absolute path names

file: root

owner: root

group: root

user::r-x
user:a123:--x
group::r-x
mask::r-x
other::---

任务4-4 企业实战与应用

1.情景及需求:

2.解决方案:

...

当前页面是本站的「Baidu MIP」版。发表评论请点击:完整版 »