我是 Linux 管理新手,正在配置 Cherokee Web 服务器。
我使用的是 Archlinux,所以我有一个拥有 /srv/http 的 http 用户。另一方面,我有一个名为“jesus”的用户,它位于 http 组中。
Cherokee is working with user and group http (http:http)
因此,我对 /srv/http 做了一些更改。我向组添加了写入权限,并更改了所有者和组,如下所示:
drwxrwxr-x 3 jesus http 4096 Oct 25 14:00 http
它就像:
所以现在 python 可以在其中写入他的 .pyc 文件(我认为 cherokee 告诉 python 创建该文件并且因为 cherokee 能够在那里写入)。
我的问题是:这些权限信息正确吗?有人告诉我,该组不应该具有写入权限,如果我有 http 文件夹(以及里面的网站),情况会更好,例如:
drwxr-xr-x 3 http http 4096 Oct 25 14:00 http
因此 cherokee 将能够在里面写入,因为 http 拥有该文件夹。
嗯,我很困惑。
那么,我的 http 文件夹及其内部的所有内容应具有什么权限,以及哪个用户和组应该拥有它?
我只需要我的个人网站能够正常运行而不会出现重大安全问题:P
谢谢!
PS:也许这有关系。当 python 创建 .pyc 文件时,它们是 -rw-r--r--。这也是正确的吗?
答案1
另一方面,我有一个名为“jesus”的用户,它属于 http 组。
我用来访问系统 (ssh) 的用户,并且还运行了 ts3。我认为既然网站是我的,那么用户就是那个。
具有 shell 访问权限的系统用户不应添加到该http
组中。要在文档根目录中写入一些测试文件,您可以http
使用以下命令切换到用户:
$ sudo su - http -s /bin/bash
对于 FTP 目的,你最好创建一个没有 shell 访问权限的新用户:
$ sudo useradd -d /home/ftp/ftpu1 -s /sbin/nologin ftpu1
$ sudo usermod -a -G nobody ftpu1
$ sudo mount --bind /srv/http/web1 /home/ftp/ftpu1
或使用虚拟用户。
文档根目录的正确权限和所有权应该是:
drwxrwsr-x 8 http nobody 4096 Oct 17 15:36 /srv/http/
注意s在组执行位位置。这意味着此文件夹设置了SGID,新创建的文件/文件夹也具有相同的组所有权。
不要忘记将umask
Apache 和 FTP 服务器设置为 002,以使创建的文件/文件夹http
可以被覆盖nobody
,反之亦然。