切换到Linux。 磁盘,文件和文件系统

这是我们系列文章中有关迁移到Linux的第二篇文章。 如果您错过了第一个,则可以在这里找到它。 如前所述,您可能要切换到Linux的原因有很多。 也许您在工作中使用或开发Linux代码,或者您可以尝试一些新的东西。

无论哪种方式,在主桌面上安装Linux都会帮助您快速熟悉所需的技术和工具。 在本文中,我们将介绍Linux:文件,文件系统和磁盘。

我的C:在哪里?

如果您使用的是Mac,那么Linux应该会让您感到足够熟悉,因为Mac使用的文件,文件系统和磁盘非常接近Linux。 另一方面,如果您的经验主要是Windows,那么Linux磁盘访问可能会有些混乱。 通常,Windows为每个系统驱动器分配一个驱动器号(例如C:)。 Linux不会这样做。 相反,Linux是系统上所有内容的单一文件和目录层次结构。

让我们看一个例子。 假设您使用的计算机具有主硬盘驱动器,带有Books&Videos文件夹的CD-ROM和具有AndreyEx目录的USB闪存驱动器。 在Windows上,您将看到以下内容:

C:  [Hard drive]

├ System

├ System32

├ Program Files

├ Program Files (x86)

└ <дополнительные папки>


D: [CD-ROM]

├ Книги

└ Видео


E: [флэш-накопитель]

└ AndreyEx

取而代之的是典型的Linux系统:

/ (самый верхний каталог, называемый корневым каталогом) [Hard drive]

├ bin

├ etc

├ lib

├ sbin

├ usr

├ <дополнительные каталоги>

└ media

   └ <ваш логин>

       ├ cdrom  [CD-ROM]

       │  ├ Книги

       │  └ Видео

       └ Kingme_USB [флэш-накопитель]

           └ AndreyEx

如果使用的是图形环境,通常Linux文件管理器会提供CD和USB驱动器,并带有看起来像设备的图标,因此您可能不需要知道特定的媒体目录。

文件系统

Linux强调所谓的文件系统。 文件系统是媒体(例如硬盘驱动器)上的结构的集合,这些结构跟踪媒体上的所有文件和目录。 没有文件系统,我们可以将信息存储在硬盘上,但是所有数据都会一团糟。 我们不知道哪些数据块属于该文件。 您可能听说过Ext4,XFS和Btrfs之类的名称。 这些是Linux文件系统的类型。

包含文件和目录的所有类型的媒体都具有文件系统。 不同类型的介质可以使用针对该介质优化的特定类型的文件系统。 因此,CD-ROM使用ISO9660或UDF文件系统类型。 USB驱动器通常使用FAT32,因此可以轻松地与其他计算机系统交换。

Windows还使用文件系统。 他只是没有对他们说太多。 例如,当您插入CD-ROM时,Windows将读取ISO9660文件系统的结构,为其分配驱动器号,并在该号下显示文件和目录(例如D:)。 因此,如果您关注细节,从技术上讲,Windows会将驱动器号分配给文件系统,而不是整个驱动器。

使用相同的示例,Linux还将读取ISO9660文件系统结构,但是它将取代文件驱动器号,而将文件系统安装到目录中(称为安装的过程)。 然后,Linux将在CD上所提供的目录中显示文件和目录(例如:/ media / <您的登录名> / cdrom)。

因此要回答“我的C:?在哪里”这个问题? Linux没有C:。 它的工作方式有所不同。

档案文件

Windows在其文件系统上存储文件和目录(也称为文件夹)。 但是,Linux允许将其他内容插入文件系统。 这些其他类型的事物是文件系统中的本机对象,实际上与常规文件不同。 除了常规文件和目录外,Linux还允许您创建和使用硬链接,符号链接,命名管道,设备节点和套接字。 我们不会在这里介绍所有类型的文件系统对象,但是有一些有用的信息可以帮助您做到这一点。

硬链接用于为文件创建一个或多个别名。 对于磁盘上的相同内容,每个别名都是不同的名称。 如果在一个文件名下编辑文件,则更改也会显示在不同的文件名下。 例如,您可以让AndreyEx_Resume_2018.doc拥有指向Resume.doc的硬链接。 (请注意,您可以从命令行使用ln命令创建硬链接。)这样,您可以查找和编辑AndreyEx_Resume_2018.doc,然后将AndreyEx_Resume_2018.doc发送给您的潜在客户以帮助他们跟踪那里发生的事情-这将包含所有更新。

符号链接有点像Windows快捷方式。 文件系统条目包含另一个文件或目录的路径。 在许多方面,它们可以像硬链接一样工作,因为它们可以为另一个文件创建别名。 但是,符号链接可以包含别名目录和文件,并且符号链接可以链接到不同媒体上不同文件系统中的项目,而硬链接则不能。 (请注意,您还可以使用ln命令,但使用-s选项来创建符号链接。)

访问权

Windows和Linux之间的另一个大区别与文件系统对象(文件,目录等)的权限有关。 Windows实现了一套相当复杂的文件和目录权限。 例如,用户和组可以具有读取,写入,执行,修改等权限,可以授予用户和组访问异常目录中所有内容的权限,或者不允许用户和组具有异常目录中的任何内容。

但是,大多数使用Windows的人并不使用特殊权限。 因此,当他们发现在Linux中使用并应用了默认权限集时,感到非常惊讶。 Linux可以使用SELinux或AppArmor强制执行更复杂的权限。 但是,大多数Linux安装使用内置的默认权限。

在默认权限中,文件系统中的每个项目都具有文件所有者,文件组以及其他所有人的一组权限。 这些权限使您可以:读取,写入和执行。 权限具有层次结构。 首先,它检查用户(用户名)是否是所有者并具有权限。 如果不是,那么它将检查您的用户(用户名)是否在该文件的组中,并且该组具有权限。 如果不是,那么它将检查其他所有人是否都具有许可权。 还有其他权限设置,但最常用的是三套,每套三套。

如果使用命令行并键入ls -l,则可以看到如下所示的权限:

rwxrw-r-- 1 andreyex destroyer 27 Aug 33rd 19:35 rolldice.sh

开头的字母rwxrw-r–表示权限。 在这种情况下,所有者(andreyex)可以读取,写入和执行文件(前三个字母,rwx); 驱逐舰组的成员可以读写文件,但不能执行(后三个字母,rw-); 其他所有人只能读取该文件(后三个字母,r–)。

(请注意,在Windows上,要使脚本可执行,请对文件扩展名进行特定的设置,例如.bat。在Linux上,文件扩展名对操作系统没有任何意义。相反,必须设置其许可权,以便文件是可执行文件。)

如果您的权限被拒绝,则您很有可能尝试运行需要管理员权限的程序或命令,或者尝试访问不具有用户帐户权限的文件以进行访问。 如果尝试执行需要管理员权限的操作,则需要通过以root用户身份登录或在命令行上使用sudo helper切换到root用户帐户,这将允许您临时以root用户身份运行。 sudo工具当然会要求输入密码以确保您具有权限。

硬盘驱动器上的文件系统

Windows主要将NTFS文件系统类型用于硬盘驱动器。 在Linux上,您可以选择要用于硬盘驱动器的文件系统类型。 不同类型的文件系统具有不同的特征和不同的特征。 今天使用的主要Linux文件系统是Ext4。 但是,您可以在安装过程中从多种文件系统类型中进行选择,例如:Ext3(Ext4的前身),XFS,Btrfs,UBIFS(对于嵌入式系统)等。如果您不知道要使用哪种文件系统,则可以使用Ext4会很好的工作。

请禁用您的广告拦截器或将此网站列入白名单!

Sidebar