从权限到FTP层的Joomla
本文总结了我对Joomla入门课程的第一个小时。由于这是关于用户通常不具备专业知识的专业系统架构概念,所以内容可能会有些“复杂”。所以请慢慢来,要有耐心,不要灰心。画出文本中的例子,复制图片,最后你会发现很有趣。
注意:本文总结了数月的大学培训。如果没有纸笔和耐心,请阅读另一篇。
我们将看到一些可能难以理解的问题,尽管本文的目的并不是深入探讨这些问题。之后,我们可以阅读文章末尾推荐的其他阅读材料。如果您还有问题,请给我写信,我们将找到解决问题的方法。
目标:理解为什么Joomla中有FTP层。
首先,让我们看看文件的权限是什么,因为它们是多用户操作系统的安全基础。
在传统计算机中组织信息的方式是通过使用文件。每个文件都必须有一个标识它的名字。历史上和传统上,名字通常由两部分组成,由点分隔:名字和扩展名。首先,名字帮助我们识别文件的使用方式,而扩展名指示文件的类型。一些常见的扩展名包括
. txt 纯文本文件
. odt OpenOffice文本文件
. pdf 带有页面和标准设计格式的文件
. exe Windows中的可执行文件
. sh Linux中的可执行批处理文件
. php 包含php语言程序的文件
. html 包含html页面代码的文件
特殊类型的文件是文件夹或目录。在内部,计算机将这些视为普通的文件,并添加了虚拟容器的属性,用于存储数据文件和其他目录(因为它们位于另一个目录中,所以被称为子目录)。但对于本文中我们将要讨论的内容,处理方式与普通文件相同。
还有更多特殊文件类型,例如硬链接和软链接等...这也适用于我们现在将要看到的类型。在我们操作系统中,任何具有名称的东西都表现如下:
当文件被创建时,会赋予一个名字,这个名字由在电脑上输入过姓名和密码的用户完成(或者在安装操作系统时,如果只创建了一个用户,并且默认将其设置为启动的用户)。
因此,除了文件名外,创建该文件的用户也保存下来,这被称为所有者。这一点非常重要,请记住。
在上面的图片中,我们还可以看到,除了文件名外,还有创建日期和时间、是否为目录的指示器以及所有者的名称,它还显示了它所属的组。
"所属的组"是什么意思?至少所有用户都属于他们自己的组。当你创建用户时,同时会创建一个具有相同名称的组。这样,如果一个家长想要查看她两个孩子的行为,但又不希望他们能修改或删除这些内容,那么你首先要做的是将你的用户添加到孩子的组中。
现在,一位好父亲只想看看孩子们做了什么,而不想修改或删除,这就是权限的用武之地。
我们有三种工作组类型会影响文件。三种?但我们只看到了两种!最重要的是所有者组,其次是他的组,第三种类型...是其他不属于所有者且属于该组的用户,换句话说,就是其他用户。
如果你看第一张图片,你会看到每个文件名下方有一系列我们还没有看到的字母。对于名为"progress"的文件,我们看到你行中第一个字母是"d",而在其他两个中这个字母不在第一个位置。稍加想象,我们可以看到第一个字母标识文件是"目录"还是普通文件。
从这里开始,接下来的九个字母是...权限!
每个组有三种权限。对于所有者(用户)有三个,对于组用户(用户想要给予所有者不同的权限并与其他用户区分开来)有三个,对于所有其他用户(其他)有三个。
现在让我们记住我们的二进制!
十进制数(0到9)是我们常用在二进制(0到1)中的数,它们在计算机中使用的数,它们之间的等效性非常简单。
在图片的蓝色部分,我们有"权重",这是二进制数的十进制等效。在左边的第一列是十进制数,第二列是二进制数,在另一列中,相同的数以二进制形式表示,但被拆分以便更方便地相加。所以二进制数"0101"将具有十进制等效"0 +4 +0 +1",即"5",而二进制数"0111"在十进制中等于"0 +4 +2 +1",即"7"。
看到这个后,我们现在回到我们的权限。
每个组都有三个权限,从左到右:读取、写入和执行。
如果您检查执行位(001),这将允许操作系统“运行”该文件,就像它是一个程序一样。在Joomla中,这几乎是不必要的,因为它所使用的语言(PHP)会解释我们标记为可执行代码的代码。
第二个位(010),在十进制中值为2,是写权限。这个权限确保您可以在目录中创建文件,如果设置为1,可以删除或覆盖文件。
第三个位(100),或最高有效位,是读权限。如果该文件没有标记,则无法读取。
可能的组合有
000 文件既不可见也不能修改或执行
001 文件只能执行
010 文件可以修改
011 文件可以修改并且是可执行的
100 文件只能查阅
101 可以查阅的可执行文件
110 文件可以查阅和修改
111 文件具有完全访问权限。
我们恢复之前的图表,并现在运用我们的常识。所有者可以对其文件做任何他想做的事情,即:“7”,其组员只能读取:“4”,与其他系统用户相同:“4”,Joomla中文件权限的正常配置可以是“744”。
如果我们再稍加思考……所有者永远不会执行文件,所以第一个“7”可以是“6”。为什么不减一位,保留安全级别为“644”?
我们永远不会将权限设置为“777”或“666”。因为我们绝不能允许除了所有者之外的人修改或执行这些文件,除非我们确定这是必要的。在Joomla中这绝对不必要。
现在我们知道文件权限是如何工作的,但它与FTP层有什么关系呢?
为了回答这个问题,我们需要了解互联网服务器是如何工作的。
考虑以下图像:
这是运行我们的Joomla的互联网服务器的基本结构。
互联网用户将打开他的浏览器并输入他想要访问的网址,例如,https://magazine.joomla.net.cn/es 首先,您的计算机会要求您在网络上配置的DNS服务器提供该名称(magazine.joomla.org)对应的IP地址。如果您的DNS服务器有响应,它将返回浏览器;如果没有,它将通过DNS网络向我们要查看的域的主DNS服务器请求(在这个例子中是joomla.org)。无论如何,浏览器已经知道他必须在IP地址为72.248.159.59的机器上查找。
然后,用户互联网IP和服务器IP之间开始通信。但这是如何进行的呢?
所有IP地址都有所谓的“端口”,就像我们邻居在门禁系统中的门一样。IP地址就像是门牌号码(Calle Mayor 10),端口则标识每栋房子(第一个门右边的门)。
所有TCP/IP通信(这是浏览器工作的协议)都必须从源IP和源端口到目标IP和端口。
前1024个端口被定义为服务器访问端口(您可以在图像中看到一些最常见的),而1025到65536之间为客户端输出端口。
因此,客户端IP(即80.252.16.48)从其输出端口(43,560)发送一个数据包到magacine.joomla.org服务器(72.249.159.59),以查看网站(端口80)。当服务器响应时,它会在这两个地址和端口之间进行响应。因此,数据包知道它们来自哪里以及它们应该到达哪里。
我们知道了用户和服务器是如何通信的,但他们说的是什么呢?
现在……注意,这会变得更复杂!
Web服务器首先向浏览器询问的是用户和组(而不是密码),您可以使用它们访问服务器上的文件。99%的浏览器都会回答:“哥们,我不知道!请给我默认的Apache配置中的用户权限。”服务器非常友好,于是就去给他提供了权限。
换句话说,想象我们在配置Apache服务器时,将默认的互联网用户配置为使用“apache”用户和“apache”组进行连接,因为这些数据可以独立连接,即使Joomla或其他应用程序要求用户访问其功能。我们谈论的是从网页中查看页面的权限。
因此,我们希望从Web服务器(我们的Joomla!)上可访问的文件应该允许默认配置的用户(来自apache组的apache用户)“读取”,否则文件将不会被发送到PHP解释器进行执行。它可能不知道需要访问哪些数据库数据,也可能不会返回运行我们的Joomla!所需的结果HTML文件,以便将其发送到Web浏览器。
因此,Web服务器也会为连接到互联网的用户分配一个用户和组……惊奇吧?
为什么有FTP层?你直视着我,问我……现在我们更接近理解它了。
想象一下,我想上传一个新文件。你想要上传的目录必须拥有自己的“写入”权限。所有者是谁?在我的例子中是“apache:apache”。上传图片或其他文件到网页上最简单的方式就是将它们将要放置的目录权限至少设置为“600”。
但如果所有互联网用户都连接到相同的用户和组。这意味着任何人都可以上传或修改我上传的文件吗?实际上,“悖论”就在这里
1. Web服务器文件应由所有互联网用户共同拥有。
2. 如果我们想要修改或创建文件,它们必须是可写的。
3. 所有互联网用户都可以修改这些文件
因此,任何访问具有“700”(至少)权限的Web服务器和文件的互联网用户都可以执行以下操作
• 删除其他用户的文件
• 修改其他用户的文件
• 上传可执行程序(病毒、木马等)并执行它
好吧!好吧!我们已经到达了FTP层。
Joomla!实施了一个额外的安全机制,以应对服务器配置不佳的情况,这被称为FTP层。这意味着它没有实现类似其他系统的“FTP层”,从而保护了所有内容。
让我们看看FTP层由什么组成。
当Joomla!需要上传一种不是通过http而是通过FTP服务器连接到磁盘空间的文件类型时,它将使用我们提供的用户名和密码,以将文件包含在我们的磁盘空间中,这是我们的Web服务器数据(通常是)所在的空间。这样,我们的Web文件将属于用户“ftp_user”组“ftp_user”,永远不能被用户“apache”组“apache”的用户修改。
因此,这样就没有办法让“坏蛋”跳过我们的Joomla!直接进入其分配的空间,并在其中放置一个不受欢迎的文件。
嗯……方法……总会有方法。如果我们使用的扩展代码存在漏洞,可能会让那个坏蛋进来……但这又是另一个故事了。
请记住,我们的服务器将由安全系统专家维护,并且可以配置为解决此问题,而无需我们在Joomla!中激活此“对策”……但从此刻起,如果我们激活FTP层,或者不激活它,这将是我们的决定,因为我们理解这意味着什么……
至于我……你想我说什么,我认为这是进入激动人心的Joomla!和其支持系统的世界的绝佳方式。
如果你已经看到这里,而且我也有所贡献...感谢你的耐心!
推荐额外阅读
Hypertext Transfer Protocol -- HTTP/1.1 (English)
HTTP Wikipedia (Spanish)l
FTP Wikipedia (Spanish)
Sistema de archivos. Wikipedia (Spanish)
Permisos de archivos. Wikipedia (Spanish)
Permisos de archivos.ITE (Spanish)
Usuarios y Grupos de usuarios en Linux. ITE (Spanish)
FTP Layer. Joomla.org (English)
FTP Accounts details. Joomla.org (English)
西班牙语原文: https://magazine.joomla.net.cn/es(九月期)
翻译者: https://magazine.joomla.net.cn/component/k2/itemlist/user/926-irenel%C3%B3pez
《Joomla社区杂志》上发表的一些文章代表了作者对特定主题的个人观点或经验,可能并不代表Joomla项目的官方立场
通过接受,你将访问https://magazine.joomla.net.cn/外部第三方提供的服务
评论