0

目前使用安装了 LAMP 堆栈,tasksel但我遇到了问题。网站文件夹所在的位置不易写。做任何事都让keister感到痛苦。

/var/www

由于我是 Linux 上 LAMP 的新手,所以我可能做错了。这仅适用于我的开发机器 - 不适用于生产。

如果我想开发一个 PHP 应用程序并在 Apache 上本地运行它,工作流程是什么?由于 Linux 的权限,我什至无法编辑默认路径上的文件。

有什么建议么?也许我可以在我的主目录上创建一个文件夹并告诉 Apache 使用它来代替?

常客是做什么的?

4

3 回答 3

1

对我来说,“最好”的方法是将 Apache 中 DocumentRoot 的值更改为您可写的目录,或者创建一个别名:

打开 conf 文件(或默认站点),在 debian/ubuntu 中,位于 /etc/apache2/sites-enabled/000-default 并编辑 DocumentRoot 和对该目录的其他引用(/var/www):

DocumentRoot /home/user/Projects
<Directory /home/user/Projects>

之后重新启动 apache(sudo services apache2 restart),然后你将让它在你可写的地方工作。这样做只有一个不便之处:您必须将 apache 添加到您的用户组,以便为​​ apache 提供上传/创建文件的写入权限。

希望这可以帮助!贡萨洛·G。

于 2012-05-31T22:41:49.537 回答
1

Unix 文件系统权限可提供安全可靠的计算体验。最好使用权限来为您的工作流程建模,并且只是偶尔提升权限,因为提升的权限是很容易发生问题的时候。遵循最小特权原则将防止许多安全漏洞产生严重后果。

您有一个目录,用于存储静态 Web 内容、可执行 Web 内容(可能还有 Web 日志?)/var/www/。它不应归 Apache 用户所有,也不应归您的用户帐户所有。root(或更具体的东西,例如www-content)是有道理的。

您不希望正在运行的 Web 服务器具有修改其自身内容的能力——许多 PHP 蠕虫以这种方式传播。如果您的 Web 服务器只能写入日志文件,则几乎不可能利用任何特权。如果它还可以写入数据库管道,它就可以做任何数据库权限允许它做的事情——随意读取或写入数据,或者只是以特定方式读取某些数据。如果它可以写入目录来存储图像以供以后使用,它可能会被滥用来托管您不想要的内容,但它至少不会影响更大的站点。如果它可以写入任何内容,攻击者可以使用它来持续修改自己的内容并可能攻击您的用户。

您可能也不希望该/var/www目录或其任何子目录归您的用户帐户所有——您不希望 Firefox、Evolution、Pidgin 或 Spotify 缺陷对您的 Web 服务器内容具有写入权限。

因此,更好的方法是在您的主目录中的某个地方,在您拥有的文件上完成所有开发工作,并由另一个 Web 服务器提供服务,该服务器在您自己的用户帐户下运行在一个非特权端口上,该端口绑定只接受localhost连接。将软件开发到您喜欢的状态后,您可以将软件分发到生产Web 服务器。

分发通常是通过一个工具来完成的git——你git push将你的开发工作放到一个存储库中,然后当你希望部署一个新版本时,你登录到拥有该/var/www目录的帐户并使用它git pull来下载一个新版本。这有点复杂,但拥有一个真正的源代码控制系统非常值得付出额外的努力。

如果您想要更简单的东西,您可以简单地使用sudo(1)提升www-content权限并将内容复制过来;它可能看起来像这样:

cd ~/projects/website
sudo -u www-content tar cf - . | (cd /var/www/ && tar xvf -)

这样,实时制作文件归Web 服务器所有,www-content不能由 Web 服务器写入。您的用户帐户也无权修改它们,除非您sudo明确运行该命令。(正确设置sudo(8)可能是一些工作;如果您是单人开发商店,那么执行这些步骤可能root会很好。)

If you have a few users who want to work on the web content live, and you trust them and the software they run completely, then you can use group ownership to skip some of the steps. (This might be fine for hobbyist use, but I wouldn't want to use this to run a business.) Add each person's user account to a specific group, say www-editors, and make /var/www and children group-owned by www-editors, use the BSD groups behavior (man 8 mount, look for bsdgroups, for full details; it requires changing mount options in /etc/fstab and setting the setgid bit on the directories). This gives you, and all users in the group, the ability to edit the files without any intermediate steps. This is both convenient and dangerous. Use it wisely.

于 2012-05-31T23:01:41.320 回答
0

您可以通过终端更改 linux 中的权限,例如 chmod 777=wrx write read execute for all users chmod 775 wrx for current user 。如果你有服务器上的权限,你可以使用它,如果没有,你不能更改权限。

这是一个例子

向用户和组添加读、写、执行

假设我们希望 taps.sh 对那些幸运地加入我们组或成为我们的人拥有所有权限。为此:

`

enter code here`$ chmod +rwx taps.sh
$ ls -l taps.sh
-rwxrwxr-x 1 erik erik 1014 2010-10-28 13:30 taps.sh 

祝你好运

于 2012-05-31T22:23:45.317 回答