目前使用tasksel
安装了LAMP堆栈,但我遇到了问题。网站文件夹所在的位置不容易写入。做任何事都是痛苦的。
/var/www
由于我是Linux上的LAMP新手,也许我做错了。这仅适用于我的开发机器 - 不是生产。
如果我想开发一个PHP应用程序并在Apache上本地运行它,那么工作流程是什么?由于Linux的权限,我甚至无法编辑默认路径上的文件。
有什么建议吗?也许我可以在我的主目录上创建一个文件夹并告诉Apache使用它?
常规做什么?
答案 0 :(得分:1)
对我而言,“最好”的方法是将Apache内的DocumentRoot值更改为您可以写入的目录,或创建别名:
打开conf文件(或默认站点),在debian / ubuntu中找到它,在/ etc / apache2 / sites-enabled / 000-default中编辑DocumentRoot和其他对该目录的引用(/ var / www): / p>
DocumentRoot /home/user/Projects
<Directory /home/user/Projects>
之后重启apache(sudo服务apache2重启),然后你就可以在一个可写的地方工作了。这只有一个不便之处:您必须向用户组添加apache,以便为上传/创建文件提供apache写权限。
希望这有帮助! Gonzalo G.
答案 1 :(得分:1)
Unix文件系统权限用于提供安全和安全计算体验。最好使用权限来模拟工作流程,并且只是偶尔提升权限,因为提升权限是问题可能发生得太容易发生的时候。 principle of least privilege之后将阻止许多安全漏洞产生严重后果。
您有一个目录可以在/var/www/
中存储您的静态Web内容,可执行Web内容(可能还有Web日志?)。它不应归Apache用户所有,也不应归您的用户帐户所有。 root
(或更具体的内容,例如www-content
)是有道理的。
您不希望正在运行的Web服务器能够修改自己的内容 - 许多PHP蠕虫都以这种方式传播。如果您的Web服务器只能写入日志文件,则几乎不可能利用任何特权。如果它也可以写入数据库管道,它将能够执行数据库权限允许它做的任何事情 - 随意读取或写入数据,或者可能只是以特定方式读取某些数据。如果它可以写入目录以存储图像以供以后服务,则可能会滥用它来托管您不想要的内容,但它至少不能影响较大的站点。如果它可以写入其任何内容,攻击者可以使用它来持久修改自己的内容并可能攻击您的用户。
您可能也不希望/var/www
目录或其任何子项归您的用户帐户所有 - 您不希望Firefox,Evolution,Pidgin或Spotify存在缺陷写访问您的Web服务器内容。
因此,更好的方法是在您的主目录中,在您拥有的文件上执行所有开发工作,并由在非特权端口上以您自己的用户帐户运行的另一个Web服务器提供服务,该端口仅限{{1连接。将软件开发到您喜欢的状态后,即可将软件分发到生产 Web服务器。
分发通常通过localhost
之类的工具完成 - 您git
您的开发工作到存储库,然后当您希望部署新版本时,您登录到拥有的帐户git push
目录并使用/var/www
下载新版本。这有点复杂,但拥有一个真正的源控制系统是非常值得的额外努力。
如果您想要更简单的事情,只需使用git pull
提升到sudo(1)
权限并复制内容即可;它可能看起来像这样:
www-content
这样,live production 文件归cd ~/projects/website
sudo -u www-content tar cf - . | (cd /var/www/ && tar xvf -)
所有,并且无法由Web服务器写入。您的用户帐户也无权修改它们,除非您明确运行www-content
命令。 (正确设置sudo
可能是一些工作;如果您是一个单独的开发商店,可能会以sudo(8)
执行这些步骤,而不会正常工作。)
如果您有一些用户想要处理网络内容直播,并且您信任他们以及他们完全运行的软件,那么您可以使用群组所有权跳过一些步骤。 (这可能适合业余爱好者使用,但我不想用它来经营一家公司。)将每个人的用户帐户添加到特定的群组,比如root
,然后制作www-editors
和孩子由/var/www
组拥有,使用BSD组行为(www-editors
,查找man 8 mount
,以获取完整详细信息;它需要更改bsdgroups
中的挂载选项并设置{{ 1}}目录上的位)。这为您和组中的所有用户提供了编辑文件的能力,而无需任何中间步骤。这既方便又危险。明智地使用它。
答案 2 :(得分:0)
您可以通过终端更改linux中的权限,例如chmod 777 = w r x write read execute for all users chmod 775 w r x 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
祝你好运