我是荔园微风,作为一名在IT界整整25年的老兵,今天来聊聊 Linux文件系统架构和共享文件方法。
在Linux环境中使用文件和目录是工作中不可回避的环节。当然,在我的博客里成立windows程序员看linux这个专题,主要还是因为微软也发布了自己的linux的发行版,使得我们不得不研究linux技术以适应这个时代。
Linux文件系统的架构
正如大家已经看到的,Linux目录结构的组织形式和Windows有很大的不同。首先Linux没有“盘符”的概念,也就是说Linux系统不存在所谓的C盘、D盘等。已建立文件系统的硬盘分区被挂载到某一个目录下,用户通过操作目录来实现磁盘读写。其次,Linux不存在像Windows\这样的系统目录。
在安装完成后,就有一堆目录出现在根目录下,并且看起来每一个目录中都存放着系统文件。最后一个小小的区别是,Linux使用正斜杠“/”而不是反斜杠“\”来标识目录。
既然Linux将文件系统挂载到目录下,那么究竟是先有文件系统还是先有目录?正确的说法是,Linux需要首先建立一个根“/”文件系统,并在这个文件系统中建立一系列空目录,然后将其他硬盘分区(如果有的话)中的文件系统挂载到这些目录中。
理论上说,可以为根目录下的每一个目录都单独划分一个硬盘分区,这样根分区的容量就可以设置得很小(因为几乎所有的东西都存放在其他分区中,根分区中的目录只是起到了“映射”的作用),不过这对于普通用户而言没有太大必要。
如果某些目录没有特定的硬盘分区与其挂钩的话,该目录中的所有内容将存放在根分区中。
那究竟什么是文件系统?这个问题将在后面的帖子详细讨论。这里大家只要简单地把它理解为“磁盘”或者“分区”的同义词就可以了。
要理解Linux的文件系统架构,看来的确需要耗费一定的脑力。如果经过努力仍然不明白上面这些文字在说些什么,一个好的建议是:不要管那么多,先使用。没有人会为了使用机床而首先去学习PLC原理,但一个接触了几年机床的人总能对PLC是什么这个问题说上几句。所以无论如何,首先去实践。
下面列出了文件系统中主要目录的内容。
/bin 构建最小系统所需要的命令(最常用的命令)
/boot 内核与启动文件
/dev 各种设备文件
/etc 系统软件的启动和配置文件
/home 用户的主目录
/lib C编译器的库
/media 可移动介质的安装点
/opt 可选的应用软件包(很少使用)
/proc 进程的映像
/root 超级用户root的主目录
/sbin 和系统操作有关的命令
/tmp 临时文件存放点
/usr 非系统的程序和命令
/var 系统专用的数据和配置文件
和你的伙伴共享文件
大家是否一直在困惑一个事情,总是听说在很久以前,很多很早用上linux服务器的国外高校通过在学校架设linux服务器来共享一些课程的文件,大家能通过这种共享来协作完成一个大的程序或其他工作。那这是怎么做到的呢?我们来看一下。
共享文件对一个团队而言非常重要。团队的成员常常需要在一台服务器上共同完成一项任务(如开发一套应用软件)。下面介绍如何实现用户间文件的共享。假设这个团队的成员在服务器上的用户名分别是hangzhou、quzhou、ningbo和shaoxing, 它们都属于workgroup这个用户组,可以用以下的命令模拟这个场景。
##新建一个名为workgroup的用户组
$ sudo groupadd workgroup
##新建用户, 并归入workgroup组
$ sudo useradd -G workgroup hangzhou
$ sudo passwd hangzhou ##为用户hangzhou设置登录密码
$ sudo useradd -G workgroup quzhou
$ sudo passwd quzhou ##为用户quzhou设置登录密码
$ sudo useradd -G workgroup ningbo
$ sudo passwd ningbo ##为用户ningbo设置登录密码
$ sudo useradd -G workgroup shaoxing
$ sudo passwd shaoxing ##为用户shaoxing设置登录密码
提示:如果大家对如何协作开发大型程序感兴趣的话,可以使用版本控制系统。
接下来,我们继续说前面的事情,然后在/home目录下建立一个名为work的目录,作为这个小组的工作目录,注意需要root权限。
$ cd /home ##切换到/home目录
$ sudo mkdir work ##建立一个名为work的目录
现在,任何人都可以访问这个新建的目录,而只有root用户才拥有该目录的写权限。现在希望让workgroup组的成员拥有这个目录的读写权限,并禁止其他无关的用户查看这个目录。
$ sudo chgrp workgroup work/ ##将work目录所有权交给workgroup组
$ sudo chmod g+rwx work/ ##增加workroup组对work目录的读、写、执行权限
$ sudo chmod o-rwx work/ ##撤销其他用户对work目录的读、写、执行权限
接下来需要将这个目录交给一个组长quzhou(现在work目录的所有者还是root用户)
$ sudo chown quzhou work/ ##将work目录所有者更改为quzhou用户
现在,所有属于这个组的成员都可以访问并修改这个目录中的内容了,而其他未经授权的用户(除了root)则无法看到其中的内容。
举例来说,quzhou在/home/work目录下新建了一个名为test的空文件,那么同属一个组的用户shaoxing如果认为这个文件没有必要,可以有权限删除它。
$ su quzhou ##切换到用户quzhou
$ cd /home/work/
$ touch test ##/建立一个空文件test
$ su shaoxing ##切换到用户shaoxing
$ cd /home/work/
$ rm test ##删除test文件
作者简介:荔园微风,1981年生,高级工程师,浙大工学硕士,软件工程项目主管,做过程序员、软件设计师、系统架构师,早期的Windows程序员,Visual Studio忠实用户,C/C++使用者,是一位在计算机界学习、拼搏、奋斗了25年的老将,经历了UNIX时代、桌面WIN32时代、Web应用时代、云计算时代、手机安卓时代、大数据时代、ICT时代、AI深度学习时代、智能机器时代,我不知道未来还会有什么时代,只记得这一路走来,充满着艰辛与收获,愿同大家一起走下去,充满希望的走下去。